Prev: linux-next: build failure after merge of the final tree (rr tree related)
Next: Generic name to handle and open by handle syscalls
From: J. Bruce Fields on 7 Jul 2010 09:00 On Wed, Jul 07, 2010 at 12:57:26PM +1000, Neil Brown wrote: > The trouble with /proc/mounts is that it is somewhat clumsy to parse > (remember to handle \0ctal escapes) and doesn't include major/minor number > which is the primary key for identifying filesystems in Linux > (see /sys/class/bdi/MAJOR:MINOR which is e.g. the best place to configure > read-ahead for a filesystem). > > So /proc/mounts could work (and would probably be better than a new syscall) > but I would really rather see something sane in /sys for > inspecting/configuring filesystems (rather than each filesystem doing their > own independent thing in /sys/fs). If you use sys or proc, is it possible to get the uuid from a file descriptor or pathname without races? --b. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
From: J. Bruce Fields on 7 Jul 2010 09:20 On Wed, Jul 07, 2010 at 03:10:21PM +0200, Miklos Szeredi wrote: > On Wed, 7 Jul 2010, J. Bruce Fields wrote: > > On Wed, Jul 07, 2010 at 12:57:26PM +1000, Neil Brown wrote: > > > The trouble with /proc/mounts is that it is somewhat clumsy to parse > > > (remember to handle \0ctal escapes) and doesn't include major/minor number > > > which is the primary key for identifying filesystems in Linux > > > (see /sys/class/bdi/MAJOR:MINOR which is e.g. the best place to configure > > > read-ahead for a filesystem). > > > > > > So /proc/mounts could work (and would probably be better than a new syscall) > > > but I would really rather see something sane in /sys for > > > inspecting/configuring filesystems (rather than each filesystem doing their > > > own independent thing in /sys/fs). > > > > If you use sys or proc, is it possible to get the uuid from a file > > descriptor or pathname without races? > > You can do stat/fstat to find out the device number (which is unique, > but not persistent) Is it really unique over time? (Can't a given st_dev value map to one filesystem now, and another later?) And it must also have the same problems as libblkid (e.g. btrfs subvolumes share the same st_dev). --b. > then look for the major:minor calculated from > st_dev in /proc/self/mountinfo. > > Thanks, > Miklos -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
From: Miklos Szeredi on 7 Jul 2010 09:20 On Wed, 7 Jul 2010, J. Bruce Fields wrote: > On Wed, Jul 07, 2010 at 12:57:26PM +1000, Neil Brown wrote: > > The trouble with /proc/mounts is that it is somewhat clumsy to parse > > (remember to handle \0ctal escapes) and doesn't include major/minor number > > which is the primary key for identifying filesystems in Linux > > (see /sys/class/bdi/MAJOR:MINOR which is e.g. the best place to configure > > read-ahead for a filesystem). > > > > So /proc/mounts could work (and would probably be better than a new syscall) > > but I would really rather see something sane in /sys for > > inspecting/configuring filesystems (rather than each filesystem doing their > > own independent thing in /sys/fs). > > If you use sys or proc, is it possible to get the uuid from a file > descriptor or pathname without races? You can do stat/fstat to find out the device number (which is unique, but not persistent) then look for the major:minor calculated from st_dev in /proc/self/mountinfo. Thanks, Miklos -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
From: Miklos Szeredi on 7 Jul 2010 09:40 On Wed, 7 Jul 2010, J. Bruce Fields wrote: > > > If you use sys or proc, is it possible to get the uuid from a file > > > descriptor or pathname without races? > > > > You can do stat/fstat to find out the device number (which is unique, > > but not persistent) > > Is it really unique over time? (Can't a given st_dev value map to one > filesystem now, and another later?) It's unique at a single point in time. But if you have a reference (e.g. open file descriptor) on the mount then that's not a problem. fd = open(path, ...); fstat(fd, &st); search st.st_dev in mountinfo close(fd) is effectively the same as an getuuid(path) syscall (lazy unmounted filesystems will not be found in mountinfo, but the reference is still there so st_dev will not be reused for other filesystems). Thanks, Miklos -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
From: J. Bruce Fields on 7 Jul 2010 10:50
On Wed, Jul 07, 2010 at 03:35:50PM +0200, Miklos Szeredi wrote: > On Wed, 7 Jul 2010, J. Bruce Fields wrote: > > > > If you use sys or proc, is it possible to get the uuid from a file > > > > descriptor or pathname without races? > > > > > > You can do stat/fstat to find out the device number (which is unique, > > > but not persistent) > > > > Is it really unique over time? (Can't a given st_dev value map to one > > filesystem now, and another later?) > > It's unique at a single point in time. But if you have a reference > (e.g. open file descriptor) on the mount then that's not a problem. > > fd = open(path, ...); > fstat(fd, &st); > search st.st_dev in mountinfo > close(fd) > > is effectively the same as an getuuid(path) syscall (lazy unmounted > filesystems will not be found in mountinfo, but the reference is still > there so st_dev will not be reused for other filesystems). OK, cool. That still leaves the problem that there isn't always an underlying block device, and/or when there is it doesn't always uniquely specify the filesystem. --b. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/ |