On Wed, Dec 01, 2010 at 11:25:16AM -0800, Sage Weil wrote: > Hi Greg, > > I'm sure you're busy and as tired of this thread as we are, but I think > it's close and we have (I hope) just one remaining question. The current > patch (see below) gives us Sorry, I got distracted by a snowstorm knocking out my power for a few days and then a holliday :) > /sys/bus/rbd/{add,remove} > /sys/bus/rbd/devices/<devid>/ <-- struct device > /sys/bus/rbd/devices/<devid>/{some dev attrs} > /sys/bus/rbd/devices/<devid>/snap_<snapid>/ <-- struct device > /sys/bus/rbd/devices/<devid>/snap_<snapid>/{some snap attrs} > > This works, and I is (I hope) using struct device properly. The only > problem, purely from a user interface standpoint, is that the snaps are > mixed in with attributes, so anybody wanting to iterate over snaps needs > to do something crufty like > > $ for snap in `ls /sys/bus/rbd/devices/$id | grep ^snap_ | cut -c 6-`; do ... What's wrong with: for snap in `ls /sys/bus/rbd/devices/$id/snap_*`; do ... instead? And you would be using libudev ideally for a .c file, and iterating over the devices is pretty trivial that way from what I have seen. > Adding an intermediate snaps/ subdir would let them instead do > > $ for snap in `ls /sys/bus/rbd/devices/$id/snaps/`; do ... > > without worrying about the (arbitrarily named) snaps from colliding with > device attributes. Assuming that is a preferable interface, is the > "right" way to do that to make "snaps" a struct device? Or is there a > good reason why that is not preferable? It's not preferable as that "snaps" directory is a "blank" in the device tree, not showing the heiarchy properly. You can't walk the devices back from the devices in snaps/ to the parent properly (i.e. you would get stuck at the snaps/ directory as it's not a struct device, but a random kobject. Hope this helps, greg k-h -- To unsubscribe from this list: send the line "unsubscribe ceph-devel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html