summaryrefslogtreecommitdiff
path: root/fs
AgeCommit message (Collapse)Author
2010-11-30Merge remote branch 'cleancache/linux-next'Stephen Rothwell
Conflicts: fs/ocfs2/super.c include/linux/fs.h mm/Kconfig
2010-11-30Merge remote branch 'tty/tty-next'Stephen Rothwell
2010-11-30Merge remote branch 'driver-core/driver-core-next'Stephen Rothwell
2010-11-30Merge remote branch 'fsnotify/for-next'Stephen Rothwell
2010-11-30Merge remote branch 'trivial/for-next'Stephen Rothwell
Conflicts: MAINTAINERS drivers/scsi/bfa/bfa_fcpim.c
2010-11-30Merge remote branch 'dlm/next'Stephen Rothwell
2010-11-30Merge remote branch 'kvm/linux-next'Stephen Rothwell
2010-11-30Merge remote branch 'udf/for_next'Stephen Rothwell
2010-11-30Merge remote branch 'ocfs2/linux-next'Stephen Rothwell
2010-11-30Merge remote branch 'nilfs2/for-next'Stephen Rothwell
2010-11-30Merge remote branch 'nfsd/nfsd-next'Stephen Rothwell
2010-11-30Merge remote branch 'nfs/linux-next'Stephen Rothwell
2010-11-30Merge remote branch 'hfsplus/for-next'Stephen Rothwell
2010-11-30Merge remote branch 'gfs2/master'Stephen Rothwell
2010-11-30Merge remote branch 'ecryptfs/next'Stephen Rothwell
2010-11-30Merge remote branch 'cifs/master'Stephen Rothwell
2010-11-30Merge remote branch 'ceph/for-next'Stephen Rothwell
2010-11-29fanotify: Dont try to open a file descriptor for the overflow eventLino Sanfilippo
We should not try to open a file descriptor for the overflow event since this will always fail. Signed-off-by: Lino Sanfilippo <LinoSanfilippo@gmx.de> Signed-off-by: Eric Paris <eparis@redhat.com>
2010-11-29sysfs: remove useless test from sysfs_merge_groupAlan Stern
Dan Carpenter pointed out that the new sysfs_merge_group() and sysfs_unmerge_group() routines requires their grp argument to be non-NULL, because they dereference grp to obtain the list of attributes. Hence it's pointless for the routines to include a test and special-case handling for when grp is NULL. This patch (as1433) removes the unneeded tests. Signed-off-by: Alan Stern <stern@rowland.harvard.edu> CC: Dan Carpenter <error27@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2010-11-29fanotify: remove dead code in prepare_for_access_responseLino Sanfilippo
Remove the unnecessary check for the bypass_perm flag in prepare_for_access_response(), since this function can't be called after fanotify_release() is called we know the flag cannot ever be set. Signed-off-by: Lino Sanfilippo <LinoSanfilippo@gmx.de> Signed-off-by: Eric Paris <eparis@redhat.com>
2010-11-29nfs: Don't generate duplicated eventsAlexey Zaytsev
The events are already generated by vfs_readv and vfs_writev. splice does not seem to generate the events, but that's an other bug. The patch also removes a couple of unneeded fsnotify.h inclusions from fs/cachefiles/. Signed-off-by: Alexey Zaytsev <alexey.zaytsev@gmail.com> Signed-off-by: Eric Paris <eparis@redhat.com>
2010-11-29Revert "fanotify: Do check against max_marks and increase number of group ↵Eric Paris
marks atomically" This reverts commit 5876b30fc2c91d67386f91da62b14f159d7bb41f. This was reverted due to: Hi Eric, After merging the fsnotify tree, today's linux-next build (powerpc ppc64_defconfig) failed like this: fs/notify/mark.c: In function 'fsnotify_add_mark': fs/notify/mark.c:230: error: 'struct fsnotify_group' has no member named 'fanotify_data' Caused by commit 0ed64ab6b338e4269c9f25de83781619ecd624f1 ("fsnotify: code and error path cleanup in fsnotify_add_mark"). This build has CONFIG_FANOTIFY not set. I have used the fsnotify tree from next-20101109 for today. Conflicts: fs/notify/mark.c
2010-11-29fsnotify: code and error path cleanup in fsnotify_add_markEric Paris
fsnotify_add_mark had some extra goto's we didn't really need and some extra conditionals which could be cleaned up. Functionally it should be the exact same. Signed-off-by: Eric Paris <eparis@redhat.com>
2010-11-29fanotify: Do check against max_marks and increase number of group marks ↵Lino Sanfilippo
atomically The number of group marks is checked against max_marks and increased afterwards in a non atomic way. This may result in 2 or more processes passing the check at the same time and increasing the number of group marks above the max_marks limit afterwards. With this patch the check against max_marks is done in fsnotify_add_mark(), after the group lock has been aquired to ensure that concurrent processes cant exceed the group marks limit. Signed-off-by: Lino Sanfilippo <LinoSanfilippo@gmx.de> Signed-off-by: Eric Paris <eparis@redhat.com>
2010-11-29fanotify: reorder event on child checking for ease of readabilityEric Paris
The check to return false if a parent did not request to receive events about it's children happens in the middle of a big if statement which is easier to read if we just do the check later. So move it. Signed-off-by: Eric Paris <eparis@redhat.com>
2010-11-29fanotify: remove code duplication in mask testsEric Paris
The generic code in send_to_group() checks if a given mask is appropriate for the given group. There is no need to duplicate this code in fanotify. Reported-by: Tvrtko Ursulin <tvrtko.ursulin@sophos.com> Signed-off-by: Eric Paris <eparis@redhat.com>
2010-11-29fanotify: calculate the correct file flags up frontEric Paris
fanotify does and |= FMODE_NONOTIFY every single time it opens a file for the listeners. Instead just calculate that once during sys_fanotify_init() and use it when needed. Just a minor perf win. Signed-off-by: Eric Paris <eparis@redhat.com>
2010-11-29fanotify: retry open RO if RW failesTvrtko Ursulin
When a listener has requested read-write access to files, but such open failed, also try to open them read-only if requested. Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@sophos.com> Signed-off-by: Eric Paris <eparis@redhat.com>
2010-11-29fsnotify: inline mark refcnt functionsTvrtko Ursulin
Inline trivial mark put and get helpers. Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@sophos.com> Signed-off-by: Eric Paris <eparis@redhat.com>
2010-11-29fanotify: do not leak user reference on allocation failureEric Paris
If fanotify_init is unable to allocate a new fsnotify group it will return but will not drop its reference on the associated user struct. Drop that reference on error. Reported-by: Vegard Nossum <vegard.nossum@gmail.com> Signed-off-by: Eric Paris <eparis@redhat.com>
2010-11-29inotify: stop kernel memory leak on file creation failureEric Paris
If inotify_init is unable to allocate a new file for the new inotify group we leak the new group. This patch drops the reference on the group on file allocation failure. Reported-by: Vegard Nossum <vegard.nossum@gmail.com> cc: stable@kernel.org Signed-off-by: Eric Paris <eparis@redhat.com>
2010-11-29fanotify: on group destroy allow all waiters to bypass permission checkLino Sanfilippo
When fanotify_release() is called, there may still be processes waiting for access permission. Currently only processes for which an event has already been queued into the groups access list will be woken up. Processes for which no event has been queued will continue to sleep and thus cause a deadlock when fsnotify_put_group() is called. Furthermore there is a race allowing further processes to be waiting on the access wait queue after wake_up (if they arrive before clear_marks_by_group() is called). This patch corrects this by setting a flag to inform processes that the group is about to be destroyed and thus not to wait for access permission. [additional changelog from eparis] Lets think about the 4 relevant code paths from the PoV of the 'operator' 'listener' 'responder' and 'closer'. Where operator is the process doing an action (like open/read) which could require permission. Listener is the task (or in this case thread) slated with reading from the fanotify file descriptor. The 'responder' is the thread responsible for responding to access requests. 'Closer' is the thread attempting to close the fanotify file descriptor. The 'operator' is going to end up in: fanotify_handle_event() get_response_from_access() (THIS BLOCKS WAITING ON USERSPACE) The 'listener' interesting code path fanotify_read() copy_event_to_user() prepare_for_access_response() (THIS CREATES AN fanotify_response_event) The 'responder' code path: fanotify_write() process_access_response() (REMOVE A fanotify_response_event, SET RESPONSE, WAKE UP 'operator') The 'closer': fanotify_release() (SUPPOSED TO CLEAN UP THE REST OF THIS MESS) What we have today is that in the closer we remove all of the fanotify_response_events and set a bit so no more response events are ever created in prepare_for_access_response(). The bug is that we never wake all of the operators up and tell them to move along. You fix that in fanotify_get_response_from_access(). You also fix other operators which haven't gotten there yet. So I agree that's a good fix. [/additional changelog from eparis] [remove additional changes to minimize patch size] [move initialization so it was inside CONFIG_FANOTIFY_PERMISSION] Signed-off-by: Lino Sanfilippo <LinoSanfilippo@gmx.de> Signed-off-by: Eric Paris <eparis@redhat.com>
2010-11-29fanotify: Dont allow a mask of 0 if setting or removing a markLino Sanfilippo
In mark_remove_from_mask() we destroy marks that have their event mask cleared. Thus we should not allow the creation of those marks in the first place. With this patch we check if the mask given from user is 0 in case of FAN_MARK_ADD. If so we return an error. Same for FAN_MARK_REMOVE since this does not have any effect. Signed-off-by: Lino Sanfilippo <LinoSanfilippo@gmx.de> Signed-off-by: Eric Paris <eparis@redhat.com>
2010-11-29fanotify: correct broken ref counting in case adding a mark failedLino Sanfilippo
If adding a mount or inode mark failed fanotify_free_mark() is called explicitly. But at this time the mark has already been put into the destroy list of the fsnotify_mark kernel thread. If the thread is too slow it will try to decrease the reference of a mark, that has already been freed by fanotify_free_mark(). (If its fast enough it will only decrease the marks ref counter from 2 to 1 - note that the counter has been increased to 2 in add_mark() - which has practically no effect.) This patch fixes the ref counting by not calling free_mark() explicitly, but decreasing the ref counter and rely on the fsnotify_mark thread to cleanup in case adding the mark has failed. Signed-off-by: Lino Sanfilippo <LinoSanfilippo@gmx.de> Signed-off-by: Eric Paris <eparis@redhat.com>
2010-11-29fanotify: if set by user unset FMODE_NONOTIFY before fsnotify_perm() is calledLino Sanfilippo
Unsetting FMODE_NONOTIFY in fsnotify_open() is too late, since fsnotify_perm() is called before. If FMODE_NONOTIFY is set fsnotify_perm() will skip permission checks, so a user can still disable permission checks by setting this flag in an open() call. This patch corrects this by unsetting the flag before fsnotify_perm is called. Signed-off-by: Lino Sanfilippo <LinoSanfilippo@gmx.de> Signed-off-by: Eric Paris <eparis@redhat.com>
2010-11-29fanotify: deny permissions when no event was sentEric Paris
If no event was sent to userspace we cannot expect userspace to respond to permissions requests. Today such requests just hang forever. This patch will deny any permissions event which was unable to be sent to userspace. Reported-by: Tvrtko Ursulin <tvrtko.ursulin@sophos.com> Signed-off-by: Eric Paris <eparis@redhat.com>
2010-11-29cifs: trivial comment fix for cifs_invalidate_mappingSuresh Jayaraman
Only the callers check whether the invalid_mapping flag is set and not cifs_invalidate_mapping(). Signed-off-by: Suresh Jayaraman <sjayaraman@suse.de> Signed-off-by: Steve French <sfrench@us.ibm.com>
2010-11-29GFS2: Clean up of gdlm_lock functionSteven Whitehouse
The DLM never returns -EAGAIN in response to dlm_lock(), and even if it did, the test in gdlm_lock() was wrong anyway. Once that test is removed, it is possible to greatly simplify this code by simply using a "normal" error return code (0 for success). We then no longer need the LM_OUT_ASYNC return code which can be removed. Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
2010-11-28Un-inline get_pipe_info() helper functionLinus Torvalds
This avoids some include-file hell, and the function isn't really important enough to be inlined anyway. Reported-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2010-11-28Export 'get_pipe_info()' to other usersLinus Torvalds
And in particular, use it in 'pipe_fcntl()'. The other pipe functions do not need to use the 'careful' version, since they are only ever called for things that are already known to be pipes. The normal read/write/ioctl functions are called through the file operations structures, so if a file isn't a pipe, they'd never get called. But pipe_fcntl() is special, and called directly from the generic fcntl code, and needs to use the same careful function that the splice code is using. Cc: Jens Axboe <jaxboe@fusionio.com> Cc: Andrew Morton <akpm@linux-foundation.org> Cc: Al Viro <viro@zeniv.linux.org.uk> Cc: Dave Jones <davej@redhat.com> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2010-11-28Rename 'pipe_info()' to 'get_pipe_info()'Linus Torvalds
.. and change it to take the 'file' pointer instead of an inode, since that's what all users want anyway. The renaming is preparatory to exporting it to other users. The old 'pipe_info()' name was too generic and is already used elsewhere, so before making the function public we need to use a more specific name. Cc: Jens Axboe <jaxboe@fusionio.com> Cc: Andrew Morton <akpm@linux-foundation.org> Cc: Al Viro <viro@zeniv.linux.org.uk> Cc: Dave Jones <davej@redhat.com> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2010-11-27NFS: Fix a readdirplus bugTrond Myklebust
When comparing filehandles in the helper nfs_same_file(), we should not be using 'strncmp()': filehandles are not null terminated strings. Instead, we should just use the existing helper nfs_compare_fh(). Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
2010-11-27Merge branch 'bugfixes' of git://git.linux-nfs.org/projects/trondmy/nfs-2.6Linus Torvalds
* 'bugfixes' of git://git.linux-nfs.org/projects/trondmy/nfs-2.6: NFS: Ensure we return the dirent->d_type when it is known NFS: Correct the array bound calculation in nfs_readdir_add_to_array NFS: Don't ignore errors from nfs_do_filldir() NFS: Fix the error handling in "uncached_readdir()" NFS: Fix a page leak in uncached_readdir() NFS: Fix a page leak in nfs_do_filldir() NFS: Assume eof if the server returns no readdir records NFS: Buffer overflow in ->decode_dirent() should not be fatal Pure nfs client performance using odirect. SUNRPC: Fix an infinite loop in call_refresh/call_refreshresult
2010-11-27Merge branch 'for-linus' of git://git.kernel.dk/linux-2.6-blockLinus Torvalds
* 'for-linus' of git://git.kernel.dk/linux-2.6-block: cciss: fix build for PROC_FS disabled block: fix amiga and atari floppy driver compile warning blk-throttle: Fix calculation of max number of WRITES to be dispatched ioprio: grab rcu_read_lock in sys_ioprio_{set,get}() xen/blkfront: cope with backend that fail empty BLKIF_OP_WRITE_BARRIER requests xen/blkfront: Implement FUA with BLKIF_OP_WRITE_BARRIER xen/blkfront: change blk_shadow.request to proper pointer xen/blkfront: map REQ_FLUSH into a full barrier
2010-11-27Merge branch 'for-linus' of ↵Linus Torvalds
git://git.kernel.org/pub/scm/linux/kernel/git/ryusuke/nilfs2 * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ryusuke/nilfs2: nilfs2: fix typo in comment of nilfs_dat_move function nilfs2: nilfs_iget_for_gc() returns ERR_PTR
2010-11-25udf: Fix directory corruption after extent mergingJan Kara
If udf_bread() called from udf_add_entry() managed to merge created extent to an already existing one (or if previous extents could be merged), the code truncating the last extent to proper size would just overwrite the freshly allocated extent with an extent that used to be in that place. This obviously results in a directory corruption. Fix the problem by properly reloading the last extent. Signed-off-by: Jan Kara <jack@suse.cz>
2010-11-25udf: Protect udf_file_aio_write from possible racesJan Kara
Code doing conversion from INICB file to a normal file in udf_file_aio_write() is not protected by any lock from other code modifying the inode. Use i_alloc_sem for that. Reported-by: Alessio Igor Bogani <abogani@texware.it> Signed-off-by: Jan Kara <jack@suse.cz>
2010-11-25udf: Remove unnecessary bkl usagesAlessio Igor Bogani
The udf_readdir(), udf_lookup(), udf_create(), udf_mknod(), udf_mkdir(), udf_rmdir(), udf_link(), udf_get_parent() and udf_unlink() seems already adequately protected by i_mutex held by VFS invoking calls. The udf_rename() instead should be already protected by lock_rename again by VFS. The udf_ioctl(), udf_fill_super() and udf_evict_inode() don't requires any further protection. This work was supported by a hardware donation from the CE Linux Forum. Signed-off-by: Alessio Igor Bogani <abogani@texware.it> Signed-off-by: Jan Kara <jack@suse.cz>
2010-11-25udf: Use of s_alloc_mutex to serialize udf_relocate_blocks() executionAlessio Igor Bogani
This work was supported by a hardware donation from the CE Linux Forum. Signed-off-by: Alessio Igor Bogani <abogani@texware.it> Signed-off-by: Jan Kara <jack@suse.cz>
2010-11-25udf: Replace bkl with the UDF_I(inode)->i_data_sem for protect ↵Alessio Igor Bogani
udf_inode_info struct Replace bkl with the UDF_I(inode)->i_data_sem rw semaphore in udf_release_file(), udf_symlink(), udf_symlink_filler(), udf_get_block(), udf_block_map(), and udf_setattr(). The rule now is that any operation on regular file's or symlink's extents (or generally allocation information including goal block) needs to hold i_data_sem. This work was supported by a hardware donation from the CE Linux Forum. Signed-off-by: Alessio Igor Bogani <abogani@texware.it> Signed-off-by: Jan Kara <jack@suse.cz>