From: Jamie Lokier <jamie@shareable.org>
To: Jan Blunck <jblunck@suse.de>
Cc: Miklos Szeredi <miklos@szeredi.hu>,
Valerie Aurora <vaurora@redhat.com>,
dwmw2@infradead.org, viro@zeniv.linux.org.uk,
linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org,
tytso@mit.edu, linux-ext4@vger.kernel.org
Subject: Re: [PATCH 13/35] fallthru: ext2 fallthru support
Date: Wed, 21 Apr 2010 10:22:35 +0100 [thread overview]
Message-ID: <20100421092235.GB13114@shareable.org> (raw)
In-Reply-To: <20100421084211.GB22741@bolzano.suse.de>
Jan Blunck wrote:
> On Tue, Apr 20, Jamie Lokier wrote:
>
> > Miklos Szeredi wrote:
> > > On Mon, 19 Apr 2010, Valerie Aurora wrote:
> > > > I don't recall there being any technical reason not to look up the
> > > > real inode number. I just wrote it that we because I was lazy. So I
> > > > like returning the directory's d_ino better than a single magic
> > > > number, but I'd at least like to try returning the real inode number
> > > > too.
> > >
> > > Note, "struct dirent" doesn't have d_dev, so you really can't return
> > > the "real" inode number, that's on a different filesystem and just a
> > > random number in the context of the the readdir in question.
> >
> > Agree. Does this inappropriate inode number for the union mount's
> > st_dev happen with stat() on the actual files too? That could be bad.
>
> No, for stat() you do a lookup and that is returning the correct
> dentry/inode for the filesystem the name is on.
Hmm. I smell potential confusion for some otherwise POSIX-friendly
userspaces.
When I open /path/to/foo, call fstat (st_dev=2, st_ino=5678), and then
keep the file open, then later do a readdir which includes foo
(dir.st_dev=1, d_ino=1234), I'm going to immediately assume a rename
or unlink happened, close the file, abort streaming from it, refresh
the GUI windows, refresh application caches for that name entry, etc.
Because in the POSIX world I think open files have stable inode
numbers (as long as they are open), and I don't think that an open
file can have it's name's d_ino not match the inode number unless it's
a mount point, which my program would know about.
This plays into inotify, where you have to know if you are monitoring
every directory that contains a link to a file, to know if you need to
monitor the file itself directly instead.
Now I think it's fair enough that a union mount doesn't play all the
traditional rules :-) C'est la vie.
This mismatch of (dir.st_dev,d_ino) and st_ino strongly resembles a
file-bind-mount. Like bind mounts, it's quite annoying for programs
that like to assume they've seen all of a file's links when they've
seen i_nlink of them.
Bind mounts can be detected by looking in /proc/mounts. st_dev
changing doesn't work because it can be a binding of the same
filesystem.
How would I go about detecting when a union mount's directory entry
has similar behaviour, without calling stat() on each entry? Is it
just a matter of recognising a particular filesystem name in
/proc/mounts, or something more?
Thanks,
-- Jamie
next prev parent reply other threads:[~2010-04-21 9:22 UTC|newest]
Thread overview: 79+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-04-15 23:04 [PATCH 00/35] Union mounts - everything but the xattrs Valerie Aurora
2010-04-15 23:04 ` [PATCH 01/35] VFS: Make lookup_hash() return a struct path Valerie Aurora
2010-04-15 23:04 ` [PATCH 02/35] VFS: Add read-only users count to superblock Valerie Aurora
2010-04-15 23:04 ` [PATCH 03/35] XXX autofs4: Save autofs trigger's vfsmount in super block info Valerie Aurora
2010-04-15 23:04 ` [PATCH 04/35] whiteout/NFSD: Don't return information about whiteouts to userspace Valerie Aurora
2010-04-15 23:04 ` [PATCH 05/35] whiteout: Add vfs_whiteout() and whiteout inode operation Valerie Aurora
2010-04-15 23:04 ` [PATCH 06/35] whiteout: Set S_OPAQUE inode flag when creating directories Valerie Aurora
2010-04-15 23:04 ` [PATCH 07/35] whiteout: Allow removal of a directory with whiteouts Valerie Aurora
2010-04-15 23:04 ` [PATCH 08/35] whiteout: tmpfs whiteout support Valerie Aurora
2010-04-15 23:04 ` Valerie Aurora
2010-04-15 23:04 ` [PATCH 09/35] whiteout: Split of ext2_append_link() from ext2_add_link() Valerie Aurora
2010-04-15 23:04 ` [PATCH 10/35] whiteout: ext2 whiteout support Valerie Aurora
2010-04-15 23:04 ` [PATCH 11/35] whiteout: jffs2 " Valerie Aurora
2010-04-15 23:04 ` Valerie Aurora
2010-04-15 23:04 ` Valerie Aurora
2010-04-15 23:04 ` [PATCH 12/35] fallthru: Basic fallthru definitions Valerie Aurora
2010-04-15 23:04 ` [PATCH 13/35] fallthru: ext2 fallthru support Valerie Aurora
2010-04-15 23:04 ` [PATCH 14/35] fallthru: jffs2 " Valerie Aurora
2010-04-15 23:04 ` Valerie Aurora
2010-04-15 23:04 ` [PATCH 15/35] fallthru: tmpfs " Valerie Aurora
2010-04-15 23:04 ` [PATCH 16/35] union-mount: Writable overlays/union mounts documentation Valerie Aurora
2010-04-15 23:04 ` [PATCH 17/35] union-mount: Introduce MNT_UNION and MS_UNION flags Valerie Aurora
2010-04-15 23:04 ` [PATCH 18/35] union-mount: Introduce union_mount structure and basic operations Valerie Aurora
2010-04-15 23:04 ` [PATCH 19/35] union-mount: Drive the union cache via dcache Valerie Aurora
2010-04-15 23:04 ` [PATCH 20/35] union-mount: Implement union lookup Valerie Aurora
2010-04-15 23:04 ` [PATCH 21/35] union-mount: Support for mounting union mount file systems Valerie Aurora
2010-04-15 23:04 ` [PATCH 22/35] union-mount: Call do_whiteout() on unlink and rmdir in unions Valerie Aurora
2010-04-15 23:04 ` [PATCH 23/35] union-mount: Copy up directory entries on first readdir() Valerie Aurora
2010-04-15 23:04 ` [PATCH 24/35] VFS: Split inode_permission() and create path_permission() Valerie Aurora
2010-04-15 23:04 ` [PATCH 25/35] VFS: Create user_path_nd() to lookup both parent and target Valerie Aurora
2010-04-15 23:04 ` [PATCH 26/35] union-mount: In-kernel copyup routines Valerie Aurora
2010-04-15 23:04 ` [PATCH 27/35] union-mount: Implement union-aware access()/faccessat() Valerie Aurora
2010-04-15 23:04 ` [PATCH 28/35] union-mount: Implement union-aware link() Valerie Aurora
2010-04-15 23:04 ` [PATCH 29/35] union-mount: Implement union-aware rename() Valerie Aurora
2010-04-15 23:04 ` [PATCH 30/35] union-mount: Implement union-aware writable open() Valerie Aurora
2010-04-15 23:04 ` [PATCH 31/35] union-mount: Implement union-aware chown() Valerie Aurora
2010-04-15 23:04 ` [PATCH 32/35] union-mount: Implement union-aware truncate() Valerie Aurora
2010-04-15 23:04 ` [PATCH 33/35] union-mount: Implement union-aware chmod()/fchmodat() Valerie Aurora
2010-04-15 23:04 ` [PATCH 34/35] union-mount: Implement union-aware lchown() Valerie Aurora
2010-04-15 23:04 ` [PATCH 35/35] union-mount: Implement union-aware utimensat() Valerie Aurora
2010-04-20 16:30 ` [PATCH 16/35] union-mount: Writable overlays/union mounts documentation Miklos Szeredi
2010-04-28 20:19 ` Valerie Aurora
2010-04-29 9:33 ` Miklos Szeredi
2010-04-29 20:20 ` Valerie Aurora
2010-05-10 12:57 ` Miklos Szeredi
2010-05-17 19:55 ` Valerie Aurora
2010-04-29 16:10 ` J. R. Okajima
2010-04-19 12:40 ` [PATCH 13/35] fallthru: ext2 fallthru support Jan Blunck
2010-04-19 13:02 ` David Woodhouse
2010-04-19 13:23 ` Jan Blunck
2010-04-19 13:30 ` Jamie Lokier
2010-04-19 14:12 ` Jan Blunck
2010-04-19 14:23 ` Valerie Aurora
2010-04-19 14:53 ` Miklos Szeredi
2010-04-20 21:34 ` Jamie Lokier
2010-04-21 8:42 ` Jan Blunck
2010-04-21 9:22 ` Jamie Lokier [this message]
2010-04-21 9:34 ` Miklos Szeredi
2010-04-21 9:52 ` Jamie Lokier
2010-04-21 10:17 ` Miklos Szeredi
2010-04-21 17:36 ` Jamie Lokier
2010-04-21 21:34 ` Valerie Aurora
2010-04-21 21:38 ` Valerie Aurora
2010-04-21 22:10 ` Jamie Lokier
2010-04-22 10:30 ` J. R. Okajima
2010-04-20 21:40 ` Jamie Lokier
2010-04-19 13:03 ` [PATCH 11/35] whiteout: jffs2 whiteout support David Woodhouse
2010-04-19 13:03 ` David Woodhouse
2010-04-19 13:03 ` David Woodhouse
2010-04-19 14:26 ` Valerie Aurora
2010-04-19 14:26 ` Valerie Aurora
2010-04-16 15:59 ` [PATCH 04/35] whiteout/NFSD: Don't return information about whiteouts to userspace J. Bruce Fields
2010-04-16 15:59 ` J. Bruce Fields
2010-04-19 12:37 ` Jan Blunck
2010-04-19 12:37 ` Jan Blunck
2010-04-19 13:54 ` J. Bruce Fields
2010-04-15 23:45 ` [PATCH 03/35] autofs4: Save autofs trigger's vfsmount in super block info Valerie Aurora
2010-04-21 22:06 ` [PATCH 00/35] Union mounts - everything but the xattrs Randy Dunlap
2010-04-21 23:35 ` Valerie Aurora
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20100421092235.GB13114@shareable.org \
--to=jamie@shareable.org \
--cc=dwmw2@infradead.org \
--cc=jblunck@suse.de \
--cc=linux-ext4@vger.kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=miklos@szeredi.hu \
--cc=tytso@mit.edu \
--cc=vaurora@redhat.com \
--cc=viro@zeniv.linux.org.uk \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.