aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2012-07-14do_dentry_open(): take initialization of file->f_path to callerAl Viro1-14/+12
... and get rid of a couple of arguments and a pointless reassignment in finish_open() case. Signed-off-by: Al Viro <[email protected]>
2012-07-14fold __dentry_open() into its sole callerAl Viro1-21/+12
Signed-off-by: Al Viro <[email protected]>
2012-07-14switch do_dentry_open() to returning intAl Viro1-20/+20
Signed-off-by: Al Viro <[email protected]>
2012-07-14make finish_no_open() return intAl Viro8-20/+12
namely, 1 ;-) That's what we want to return from ->atomic_open() instances after finish_no_open(). Signed-off-by: Al Viro <[email protected]>
2012-07-14fs/namei.c: get do_last() and friends return intAl Viro1-80/+70
Same conventions as for ->atomic_open(). Trimmed the forest of labels a bit, while we are at it... Signed-off-by: Al Viro <[email protected]>
2012-07-14kill struct opendataAl Viro15-98/+81
Just pass struct file *. Methods are happier that way... There's no need to return struct file * from finish_open() now, so let it return int. Next: saner prototypes for parts in namei.c Signed-off-by: Al Viro <[email protected]>
2012-07-14kill opendata->{mnt,dentry}Al Viro3-14/+9
->filp->f_path is there for purpose... Signed-off-by: Al Viro <[email protected]>
2012-07-14make ->atomic_open() return intAl Viro13-105/+97
Change of calling conventions: old new NULL 1 file 0 ERR_PTR(-ve) -ve Caller *knows* that struct file *; no need to return it. Signed-off-by: Al Viro <[email protected]>
2012-07-14don't modify od->filp at allAl Viro2-6/+3
make put_filp() conditional on flag set by finish_open() Signed-off-by: Al Viro <[email protected]>
2012-07-14->atomic_open() prototype change - pass int * instead of bool *Al Viro14-52/+63
... and let finish_open() report having opened the file via that sucker. Next step: don't modify od->filp at all. [AV: FILE_CREATE was already used by cifs; Miklos' fix folded] Signed-off-by: Al Viro <[email protected]>
2012-07-14vfs: move O_DIRECT check to common codeMiklos Szeredi1-12/+5
Perform open_check_o_direct() in a common place in do_last after opening the file. Signed-off-by: Miklos Szeredi <[email protected]> Signed-off-by: Al Viro <[email protected]>
2012-07-14vfs: do_last(): clean up retryMiklos Szeredi1-15/+21
Move the lookup retry logic to the bottom of the function to make the normal case simpler to read. Reported-by: David Howells <[email protected]> Signed-off-by: Miklos Szeredi <[email protected]> Signed-off-by: Al Viro <[email protected]>
2012-07-14vfs: do_last(): clean up boolMiklos Szeredi1-14/+14
Consistently use bool for boolean values in do_last(). Reported-by: David Howells <[email protected]> Signed-off-by: Miklos Szeredi <[email protected]> Signed-off-by: Al Viro <[email protected]>
2012-07-14vfs: do_last(): clean up labelsMiklos Szeredi1-5/+5
Reported-by: David Howells <[email protected]> Signed-off-by: Miklos Szeredi <[email protected]> Signed-off-by: Al Viro <[email protected]>
2012-07-14vfs: do_last(): clean up error handlingMiklos Szeredi1-15/+8
Signed-off-by: Miklos Szeredi <[email protected]> Signed-off-by: Al Viro <[email protected]>
2012-07-14vfs: remove open intents from nameidataMiklos Szeredi4-153/+48
All users of open intents have been converted to use ->atomic_{open,create}. This patch gets rid of nd->intent.open and related infrastructure. Signed-off-by: Miklos Szeredi <[email protected]> Signed-off-by: Al Viro <[email protected]>
2012-07-149p: implement i_op->atomic_open()Miklos Szeredi2-84/+137
Add an ->atomic_open implementation which replaces the atomic open+create operation implemented via ->create. No functionality is changed. Signed-off-by: Miklos Szeredi <[email protected]> CC: Eric Van Hensbergen <[email protected]> Signed-off-by: Al Viro <[email protected]>
2012-07-14ceph: implement i_op->atomic_open()Miklos Szeredi3-38/+56
Add an ->atomic_open implementation which replaces the atomic lookup+open+create operation implemented via ->lookup and ->create operations. Signed-off-by: Miklos Szeredi <[email protected]> CC: Sage Weil <[email protected]> Signed-off-by: Al Viro <[email protected]>
2012-07-14ceph: remove unused arg from ceph_lookup_open()Miklos Szeredi3-6/+4
What was the purpose of this? Signed-off-by: Miklos Szeredi <[email protected]> CC: Sage Weil <[email protected]> Signed-off-by: Al Viro <[email protected]>
2012-07-14cifs: implement i_op->atomic_open()Miklos Szeredi3-198/+247
Add an ->atomic_open implementation which replaces the atomic lookup+open+create operation implemented via ->lookup and ->create operations. Signed-off-by: Miklos Szeredi <[email protected]> CC: Steve French <[email protected]> Signed-off-by: Al Viro <[email protected]>
2012-07-14fuse: implement i_op->atomic_open()Miklos Szeredi1-27/+67
Add an ->atomic_open implementation which replaces the atomic open+create operation implemented via ->create. No functionality is changed. Signed-off-by: Miklos Szeredi <[email protected]> Signed-off-by: Al Viro <[email protected]>
2012-07-14nfs: don't use intents for checking atomic openMiklos Szeredi1-20/+4
is_atomic_open() is now only used by nfs4_lookup_revalidate() to check whether it's okay to skip normal revalidation. It does a racy check for mount read-onlyness and falls back to normal revalidation if the open would fail. This makes little sense now that this function isn't used for determining whether to actually open the file or not. The d_mountpoint() check still makes sense since it is an indication that we might be following a mount and so open may not revalidate the dentry. Signed-off-by: Miklos Szeredi <[email protected]> CC: Trond Myklebust <[email protected]> Signed-off-by: Al Viro <[email protected]>
2012-07-14nfs: don't use nd->intent.open.flagsMiklos Szeredi1-5/+4
Instead check LOOKUP_EXCL in nd->flags, which is basically what the open intent flags were used for. Signed-off-by: Miklos Szeredi <[email protected]> CC: Trond Myklebust <[email protected]> Signed-off-by: Al Viro <[email protected]>
2012-07-14nfs: clean up ->create in nfs_rpc_opsMiklos Szeredi5-70/+15
Don't pass nfs_open_context() to ->create(). Only the NFS4 implementation needed that and only because it wanted to return an open file using open intents. That task has been replaced by ->atomic_open so it is not necessary anymore to pass the context to the create rpc operation. Despite nfs4_proc_create apparently being okay with a NULL context it Oopses somewhere down the call chain. So allocate a context here. Signed-off-by: Miklos Szeredi <[email protected]> CC: Trond Myklebust <[email protected]> Signed-off-by: Al Viro <[email protected]>
2012-07-14nfs: implement i_op->atomic_open()Miklos Szeredi1-86/+97
Replace NFS4 specific ->lookup implementation with ->atomic_open impelementation and use the generic nfs_lookup for other lookups. Signed-off-by: Miklos Szeredi <[email protected]> CC: Trond Myklebust <[email protected]> Signed-off-by: Al Viro <[email protected]>
2012-07-14vfs: add i_op->atomic_open()Miklos Szeredi6-2/+270
Add a new inode operation which is called on the last component of an open. Using this the filesystem can look up, possibly create and open the file in one atomic operation. If it cannot perform this (e.g. the file type turned out to be wrong) it may signal this by returning NULL instead of an open struct file pointer. i_op->atomic_open() is only called if the last component is negative or needs lookup. Handling cached positive dentries here doesn't add much value: these can be opened using f_op->open(). If the cached file turns out to be invalid, the open can be retried, this time using ->atomic_open() with a fresh dentry. For now leave the old way of using open intents in lookup and revalidate in place. This will be removed once all the users are converted. David Howells noticed that if ->atomic_open() opens the file but does not create it, handle_truncate() will be called on it even if it is not a regular file. Fix this by checking the file type in this case too. Signed-off-by: Miklos Szeredi <[email protected]> Signed-off-by: Al Viro <[email protected]>
2012-07-14vfs: lookup_open(): expand lookup_hash()Miklos Szeredi1-1/+11
Copy __lookup_hash() into lookup_open(). The next patch will insert the atomic open call just before the real lookup. Signed-off-by: Miklos Szeredi <[email protected]> Signed-off-by: Al Viro <[email protected]>
2012-07-14vfs: add lookup_open()Miklos Szeredi1-38/+61
Split out lookup + maybe create from do_last(). This is the part under i_mutex protection. The function is called lookup_open() and returns a filp even though the open part is not used yet. Signed-off-by: Miklos Szeredi <[email protected]> Signed-off-by: Al Viro <[email protected]>
2012-07-14vfs: do_last(): common slow lookupMiklos Szeredi1-22/+5
Make the slow lookup part of O_CREAT and non-O_CREAT opens common. This allows atomic_open to be hooked into the slow lookup part. Signed-off-by: Miklos Szeredi <[email protected]> Signed-off-by: Al Viro <[email protected]>
2012-07-14vfs: do_last(): separate O_CREAT specific codeMiklos Szeredi1-16/+17
Check O_CREAT on the slow lookup paths where necessary. This allows the rest to be shared with plain open. Signed-off-by: Miklos Szeredi <[email protected]> Signed-off-by: Al Viro <[email protected]>
2012-07-14vfs: do_last(): inline lookup_slow()Miklos Szeredi1-2/+15
Copy lookup_slow() into do_last(). Signed-off-by: Miklos Szeredi <[email protected]> Signed-off-by: Al Viro <[email protected]>
2012-07-14namei.c: let follow_link() do put_link() on failureAl Viro1-33/+41
no need for kludgy "set cookie to ERR_PTR(...) because we failed before we did actual ->follow_link() and want to suppress put_link()", no pointless check in put_link() itself. Callers checked if follow_link() has failed anyway; might as well break out of their loops if that happened, without bothering to call put_link() first. [AV: folded fixes from hch] Signed-off-by: Al Viro <[email protected]>
2012-07-14coda: use list_for_each_entryAl Viro1-7/+3
Signed-off-by: Al Viro <[email protected]>
2012-07-14vfs: switch i_dentry/d_alias to hlistAl Viro13-28/+36
Signed-off-by: Al Viro <[email protected]>
2012-07-14ext4: get rid of open-coded d_find_any_alias()Al Viro1-8/+1
Signed-off-by: Al Viro <[email protected]>
2012-07-14ocfs2: use list_for_each_entry in ocfs2_find_local_alias()Al Viro1-11/+5
Signed-off-by: Al Viro <[email protected]>
2012-07-14affs: unobfuscate affs_fix_dcache()Al Viro1-6/+8
and add a comment on what it's doing Signed-off-by: Al Viro <[email protected]>
2012-07-14affs: get rid of open-coded list_for_each_entry()Al Viro1-6/+1
Signed-off-by: Al Viro <[email protected]>
2012-07-14vfs: update documentation on ->i_dentry handlingAl Viro1-6/+4
we used to need to clean it in RCU callback freeing an inode; in 3.2 that requirement went away. Unfortunately, it hadn't been reflected in Documentation/filesystems/porting. Signed-off-by: Al Viro <[email protected]>
2012-07-14adfs: don't bother with ->i_dentry in ->destroy_inode()Al Viro1-1/+0
Signed-off-by: Al Viro <[email protected]>
2012-07-14cifs: don't bother with ->i_dentry in ->destroy_inode()Al Viro1-1/+0
Signed-off-by: Al Viro <[email protected]>
2012-07-14qnx6: don't bother with ->i_dentry in inode-freeing callbackAl Viro1-1/+0
we'll initialize it in inode_init_always() when we allocate that object again. Signed-off-by: Al Viro <[email protected]>
2012-07-14get rid of magic in proc_namespace.cAl Viro3-8/+9
don't rely on proc_mounts->m being the first field; container_of() is there for purpose. No need to bother with ->private, while we are at it - the same container_of will do nicely. Signed-off-by: Al Viro <[email protected]>
2012-07-14get rid of ->mnt_longtermAl Viro5-72/+26
it's enough to set ->mnt_ns of internal vfsmounts to something distinct from all struct mnt_namespace out there; then we can just use the check for ->mnt_ns != NULL in the fast path of mntput_no_expire() Signed-off-by: Al Viro <[email protected]>
2012-07-14fs/direct-io.c: adjust suspicious bit operationJulia Lawall1-1/+1
READ is 0, so the result of the bit-and operation is 0. Rewrite with == as done elsewhere in the same file. This problem was found using Coccinelle (http://coccinelle.lip6.fr/). Signed-off-by: Julia Lawall <[email protected]> Reviewed-by: Jeff Moyer <[email protected]> Cc: Al Viro <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Al Viro <[email protected]>
2012-07-14affs: get rid of affs_sync_superArtem Bityutskiy3-13/+45
This patch makes affs stop using the VFS '->write_super()' method along with the 's_dirt' superblock flag, because they are on their way out. The whole "superblock write-out" VFS infrastructure is served by the 'sync_supers()' kernel thread, which wakes up every 5 (by default) seconds and writes out all dirty superblocks using the '->write_super()' call-back. But the problem with this thread is that it wastes power by waking up the system every 5 seconds, even if there are no diry superblocks, or there are no client file-systems which would need this (e.g., btrfs does not use '->write_super()'). So we want to kill it completely and thus, we need to make file-systems to stop using the '->write_super()' VFS service, and then remove it together with the kernel thread. Signed-off-by: Artem Bityutskiy <[email protected]> Signed-off-by: Al Viro <[email protected]>
2012-07-14affs: introduce VFS superblock object back-referenceArtem Bityutskiy2-0/+2
Add an 'sb' VFS superblock back-reference to the 'struct affs_sb_info' data structure - we will need to find the VFS superblock from a 'struct affs_sb_info' object in the next patch, so this change is jut a preparation. Signed-off-by: Artem Bityutskiy <[email protected]> Signed-off-by: Al Viro <[email protected]>
2012-07-14affs: stop using lock_superArtem Bityutskiy1-2/+3
The VFS's 'lock_super()' and 'unlock_super()' calls are deprecated and unwanted and just wait for a brave knight who'd kill them. This patch makes AFFS stop using them and use the buffer-head's own lock instead. Signed-off-by: Artem Bityutskiy <[email protected]> Signed-off-by: Al Viro <[email protected]>
2012-07-14affs: re-structure superblock locking a bitArtem Bityutskiy1-5/+2
AFFS wants to serialize the superblock (the root block in AFFS terms) updates and uses 'lock_super()/unlock_super()' for these purposes. This patch pushes the locking down to the 'affs_commit_super()' from the callers. Signed-off-by: Artem Bityutskiy <[email protected]> Signed-off-by: Al Viro <[email protected]>
2012-07-14affs: remove useless superblock writeout on remountArtem Bityutskiy1-3/+2
We do not need to write out the superblock from '->remount_fs()' because VFS has already called '->sync_fs()' by this time and the superblock has already been written out. Thus, remove the 'affs_write_super()' infocation from 'affs_remount()'. Signed-off-by: Artem Bityutskiy <[email protected]> Signed-off-by: Al Viro <[email protected]>