On Thu, Apr 24, 2008 at 03:05:21PM +0200, Miklos Szeredi wrote:Because you are mixing the "this sucker will be used for write access for this interval" and "do what is needed to create a file". The latter is not guaranteed to coincide with the former and that in itself is enough. _IF_ they make sense for call in question. At the level where they are applied. Bullshit. It's not just "prevent modification". It's "make sure that no remount r/o happens while we do that". fh_verify() doesn't modify. It does check, though, and later we have that check duplicated by will_write/wont_write pair bracketing a part of sequence. Please, realize that spot checks like that are inherently racy and that's the problem we had all along with r/o remounts et.al. And that's why they got split in will/wont pairs and stretched to cover relevant areas. Areas that depend on specific callers. And yes, we need the counterpart for superblock-level stuff, to deal with remaining races (look at fs_may_remount_ro() and puke - it's still racy as hell). E.g. unlink should do sb-level "will write" when it drops i_nlink to 0 and final removal of inode should do "won't write". ecryptfs should not use the bloody vfsmount, for fuck sake! You are confusing access to fs with access to fs via specific vfsmount. And pretending that the latter is fundamental operation. It isn't. Flags on vfsmounts *do* control it. But the same operations make sense without any vfsmounts involved. At all. And "so let's invent some and express our access control rules by tweaking its flag" is a kludge, not a sane answer. --
| Bart Van Assche | Integration of SCST in the mainstream Linux kernel |
| KAMEZAWA Hiroyuki | Re: 2.6.23-mm1 |
| Greg Kroah-Hartman | [PATCH 005/196] Chinese: add translation of SubmittingDrivers |
| David Miller | Re: Slow DOWN, please!!! |
git: | |
| Gerrit Renker | [PATCH 03/37] dccp: List management for new feature negotiation |
| David Miller | [GIT]: Networking |
| David Miller | Re: [BUG] New Kernel Bugs |
| Paweł Staszewski | rib_trie / Fix inflate_threshold_root. Now=15 size=11 bits |
