On Fri, 26 Feb 2010, John Johansen wrote: > On 02/26/2010 04:07 AM, Miklos Szeredi wrote: > > On Sat, 20 Feb 2010, john.johansen@xxxxxxxxxxxx wrote: > >> From: John Johansen<john.johansen@xxxxxxxxxxxxx> > >> > >> When __d_path() hits a lazily unmounted mount point, it tries to prepend > >> the name of the lazily unmounted dentry to the path name. It gets this wrong, > >> and also overwrites the slash that separates the name from the following > >> pathname component. This patch fixes that; if a process was in directory > >> /foo/bar and /foo got lazily unmounted, the old result was ``foobar'' (note the > >> missing slash), while the new result with this patch is ``/foo/bar''. > > > > Example: > > > > # mkdir -p /tmp/foo/bar > > # mkdir /tmp/mnt > > # mount --bind /tmp/foo /tmp/mnt > > # cd /tmp/mnt/bar > > # /bin/pwd > > /tmp/mnt/bar > > # umount -l /tmp/mnt > > # /bin/pwd > > foobar > > > > After the patch it will be /foo/bar. > > > > Why is the path starting with "/foo"? Does that make any sense? > > > not a lot except, connecting disconnected paths to root is what > is currently done for paths that aren't reachable but have an fs > as their root (ie the last dentry is / so it looks connected to > root). /tmp (which contains /foo/bar) is not a root of anything. So even that logic doesn't hold for your current patch. /tmp/foo *was* the root of the mount, so "/bar" would make a tiny little more sense. But "/bar" looks like a normal connected patch, which it is not, so it's not really a good solution either. Thanks, Miklos -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html