1. 28 9月, 2011 1 次提交
    • P
      doc: fix broken references · 395cf969
      Paul Bolle 提交于
      There are numerous broken references to Documentation files (in other
      Documentation files, in comments, etc.). These broken references are
      caused by typo's in the references, and by renames or removals of the
      Documentation files. Some broken references are simply odd.
      
      Fix these broken references, sometimes by dropping the irrelevant text
      they were part of.
      Signed-off-by: NPaul Bolle <pebolle@tiscali.nl>
      Signed-off-by: NJiri Kosina <jkosina@suse.cz>
      395cf969
  2. 21 7月, 2011 1 次提交
    • J
      locks: rename lock-manager ops · 8fb47a4f
      J. Bruce Fields 提交于
      Both the filesystem and the lock manager can associate operations with a
      lock.  Confusingly, one of them (fl_release_private) actually has the
      same name in both operation structures.
      
      It would save some confusion to give the lock-manager ops different
      names.
      Signed-off-by: NJ. Bruce Fields <bfields@redhat.com>
      8fb47a4f
  3. 16 7月, 2011 1 次提交
  4. 07 7月, 2011 1 次提交
    • M
      fs: fix lock initialization · a51cb91d
      Miklos Szeredi 提交于
      locks_alloc_lock() assumed that the allocated struct file_lock is
      already initialized to zero members.  This is only true for the first
      allocation of the structure, after reuse some of the members will have
      random values.
      
      This will for example result in passing random fl_start values to
      userspace in fuse for FL_FLOCK locks, which is an information leak at
      best.
      
      Fix by reinitializing those members which may be non-zero after freeing.
      Signed-off-by: NMiklos Szeredi <mszeredi@suse.cz>
      CC: stable@kernel.org
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      a51cb91d
  5. 08 3月, 2011 1 次提交
  6. 05 3月, 2011 1 次提交
  7. 07 1月, 2011 1 次提交
  8. 05 1月, 2011 2 次提交
  9. 18 11月, 2010 1 次提交
  10. 11 11月, 2010 2 次提交
  11. 31 10月, 2010 5 次提交
  12. 28 10月, 2010 3 次提交
  13. 27 10月, 2010 1 次提交
    • J
      procfs: fix numbering in /proc/locks · 99dc8292
      Jerome Marchand 提交于
      The lock number in /proc/locks (first field) is implemented by a counter
      (private field of struct seq_file) which is incremented at each call of
      locks_show() and reset to 1 in locks_start() whatever the offset is.  It
      should be reset according to the actual position in the list.  Because of
      this, the numbering erratically restarts at 1 several times when reading a
      long /proc/locks file.
      
      Moreover, locks_show() can be called twice to print a single line thus
      skipping a number.  The counter should be incremented in locks_next().
      
      And last, pos is a loff_t, which can be bigger than a pointer, so we don't
      use the pointer as an integer anymore, and allocate a loff_t instead.
      Signed-off-by: NJerome Marchand <jmarchan@redhat.com>
      Cc: Pavel Emelyanov <xemul@parallels.com>
      Cc: Matthew Wilcox <matthew@wil.cx>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      99dc8292
  14. 05 10月, 2010 1 次提交
    • A
      fs/locks.c: prepare for BKL removal · b89f4321
      Arnd Bergmann 提交于
      This prepares the removal of the big kernel lock from the
      file locking code. We still use the BKL as long as fs/lockd
      uses it and ceph might sleep, but we can flip the definition
      to a private spinlock as soon as that's done.
      All users outside of fs/lockd get converted to use
      lock_flocks() instead of lock_kernel() where appropriate.
      
      Based on an earlier patch to use a spinlock from Matthew
      Wilcox, who has attempted this a few times before, the
      earliest patch from over 10 years ago turned it into
      a semaphore, which ended up being slower than the BKL
      and was subsequently reverted.
      
      Someone should do some serious performance testing when
      this becomes a spinlock, since this has caused problems
      before. Using a spinlock should be at least as good
      as the BKL in theory, but who knows...
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      Acked-by: NMatthew Wilcox <willy@linux.intel.com>
      Cc: Christoph Hellwig <hch@lst.de>
      Cc: Trond Myklebust <trond.myklebust@fys.uio.no>
      Cc: "J. Bruce Fields" <bfields@fieldses.org>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Cc: Miklos Szeredi <mszeredi@suse.cz>
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: John Kacur <jkacur@redhat.com>
      Cc: Sage Weil <sage@newdream.net>
      Cc: linux-kernel@vger.kernel.org
      Cc: linux-fsdevel@vger.kernel.org
      b89f4321
  15. 04 3月, 2010 1 次提交
  16. 05 2月, 2010 1 次提交
  17. 22 9月, 2009 1 次提交
  18. 18 7月, 2009 1 次提交
  19. 17 7月, 2009 1 次提交
  20. 25 4月, 2009 1 次提交
    • F
      lockd: call locks_release_private to cleanup per-filesystem state · a9e61e25
      Felix Blyakher 提交于
      For every lock request lockd creates a new file_lock object
      in nlmsvc_setgrantargs() by copying the passed in file_lock with
      locks_copy_lock(). A filesystem can attach it's own lock_operations
      vector to the file_lock. It has to be cleaned up at the end of the
      file_lock's life. However, lockd doesn't do it today, yet it
      asserts in nlmclnt_release_lockargs() that the per-filesystem
      state is clean.
      This patch fixes it by exporting locks_release_private() and adding
      it to nlmsvc_freegrantargs(), to be symmetrical to creating a
      file_lock in nlmsvc_setgrantargs().
      Signed-off-by: NFelix Blyakher <felixb@sgi.com>
      Signed-off-by: NJ. Bruce Fields <bfields@citi.umich.edu>
      a9e61e25
  21. 14 1月, 2009 1 次提交
  22. 14 11月, 2008 1 次提交
  23. 23 10月, 2008 1 次提交
  24. 21 10月, 2008 1 次提交
  25. 27 7月, 2008 1 次提交
  26. 26 7月, 2008 3 次提交
    • M
      locks: allow ->lock() to return FILE_LOCK_DEFERRED · 764c76b3
      Miklos Szeredi 提交于
      Allow filesystem's ->lock() method to call posix_lock_file() instead of
      posix_lock_file_wait(), and return FILE_LOCK_DEFERRED.  This makes it
      possible to implement a such a ->lock() function, that works with the lock
      manager, which needs the call to be asynchronous.
      
      Now the vfs_lock_file() helper can be used, so this is a cleanup as well.
      Signed-off-by: NMiklos Szeredi <mszeredi@suse.cz>
      Cc: "J. Bruce Fields" <bfields@fieldses.org>
      Cc: Trond Myklebust <trond.myklebust@fys.uio.no>
      Cc: Matthew Wilcox <matthew@wil.cx>
      Cc: David Teigland <teigland@redhat.com>
      Cc: Christoph Hellwig <hch@lst.de>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      764c76b3
    • M
      locks: cleanup code duplication · b648a6de
      Miklos Szeredi 提交于
      Extract common code into a function.
      Signed-off-by: NMiklos Szeredi <mszeredi@suse.cz>
      Cc: "J. Bruce Fields" <bfields@fieldses.org>
      Cc: Trond Myklebust <trond.myklebust@fys.uio.no>
      Cc: Matthew Wilcox <matthew@wil.cx>
      Cc: David Teigland <teigland@redhat.com>
      Cc: Christoph Hellwig <hch@lst.de>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      b648a6de
    • M
      locks: add special return value for asynchronous locks · bde74e4b
      Miklos Szeredi 提交于
      Use a special error value FILE_LOCK_DEFERRED to mean that a locking
      operation returned asynchronously.  This is returned by
      
        posix_lock_file() for sleeping locks to mean that the lock has been
        queued on the block list, and will be woken up when it might become
        available and needs to be retried (either fl_lmops->fl_notify() is
        called or fl_wait is woken up).
      
        f_op->lock() to mean either the above, or that the filesystem will
        call back with fl_lmops->fl_grant() when the result of the locking
        operation is known.  The filesystem can do this for sleeping as well
        as non-sleeping locks.
      
      This is to make sure, that return values of -EAGAIN and -EINPROGRESS by
      filesystems are not mistaken to mean an asynchronous locking.
      
      This also makes error handling in fs/locks.c and lockd/svclock.c slightly
      cleaner.
      Signed-off-by: NMiklos Szeredi <mszeredi@suse.cz>
      Cc: Trond Myklebust <trond.myklebust@fys.uio.no>
      Cc: "J. Bruce Fields" <bfields@fieldses.org>
      Cc: Matthew Wilcox <matthew@wil.cx>
      Cc: David Teigland <teigland@redhat.com>
      Cc: Christoph Hellwig <hch@lst.de>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      bde74e4b
  27. 23 6月, 2008 1 次提交
  28. 12 5月, 2008 1 次提交
    • L
      Add new 'cond_resched_bkl()' helper function · c3921ab7
      Linus Torvalds 提交于
      It acts exactly like a regular 'cond_resched()', but will not get
      optimized away when CONFIG_PREEMPT is set.
      
      Normal kernel code is already preemptable in the presense of
      CONFIG_PREEMPT, so cond_resched() is optimized away (see commit
      02b67cc3 "sched: do not do
      cond_resched() when CONFIG_PREEMPT").
      
      But when wanting to conditionally reschedule while holding a lock, you
      need to use "cond_sched_lock(lock)", and the new function is the BKL
      equivalent of that.
      
      Also make fs/locks.c use it.
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      c3921ab7
  29. 07 5月, 2008 1 次提交
    • A
      [PATCH] fix SMP ordering hole in fcntl_setlk() · 0b2bac2f
      Al Viro 提交于
      fcntl_setlk()/close() race prevention has a subtle hole - we need to
      make sure that if we *do* have an fcntl/close race on SMP box, the
      access to descriptor table and inode->i_flock won't get reordered.
      
      As it is, we get STORE inode->i_flock, LOAD descriptor table entry vs.
      STORE descriptor table entry, LOAD inode->i_flock with not a single
      lock in common on both sides.  We do have BKL around the first STORE,
      but check in locks_remove_posix() is outside of BKL and for a good
      reason - we don't want BKL on common path of close(2).
      
      Solution is to hold ->file_lock around fcheck() in there; that orders
      us wrt removal from descriptor table that preceded locks_remove_posix()
      on close path and we either come first (in which case eviction will be
      handled by the close side) or we'll see the effect of close and do
      eviction ourselves.  Note that even though it's read-only access,
      we do need ->file_lock here - rcu_read_lock() won't be enough to
      order the things.
      Signed-off-by: NAl Viro <viro@zeniv.linux.org.uk>
      0b2bac2f
  30. 02 5月, 2008 1 次提交