[parted-devel] [PATCH] unneeded stats...
Karel Zak
kzak at redhat.com
Mon Feb 23 16:46:17 UTC 2009
On Mon, Feb 23, 2009 at 04:10:58PM +0000, Bryn M. Reeves wrote:
> Joel Granados wrote:
> > On Mon, Feb 23, 2009 at 03:50:02PM +0000, Bryn M. Reeves wrote:
> >> Joel Granados Moreno wrote:
> >>> Hello List
> >>>
> >>> Here is the reviewed patch for the unneeded stats that we are doing when
> >>> looking for mounted devices. It is modified to not search for "server
> >>> strings" (//servername/path/to/somewhere)
> >>>
> >>> Review appreciated
> >> There's a slight gotcha with this approach in that the kernel will
> >> honour the names that userspace gives it in a mount syscall. E.g. if I
> >> mount /dev/sda then that's what appears in /proc/mounts but if I mount
> >> //dev/sda, then that's the string that will appear.
> >>
> >> E.g.:
> >>
> >> # mount //dev/mapper/cyan /mnt
> >> # grep cyan /proc/mounts
> >> //dev/mapper/cyan /mnt ext3 rw,data=ordered 0 0
> >
> > I tested for this situation in my fedora10 environment With the latest
> > parted. And if I do the mount with "//" /proc/mounts will show it with
>
> Yep, just confirmed that on my f10 box so this has changed somewhere
> between RHEL5's 2.6.18 (where I tested previously) and current upstream.
The current mount(8) always canonicalize all paths, so it never call
mount(2) syscall with '//'. (RHEL5 != current:-) The more important
thing is kernel behaviour. You cannot rely on mount(8) -- there is
more ways how to mount devices.
I think the best way how to resolve this problem is to call stat(2)
and ignore everything from /proc/mounts what is not S_IFBLK. It seems
that paths are unreliable...
Karel
--
Karel Zak <kzak at redhat.com>
More information about the parted-devel
mailing list