1. 10 Aug, 2013 2 commits
  2. 03 Jul, 2013 1 commit
  3. 02 May, 2013 4 commits
  4. 26 Feb, 2013 1 commit
  5. 12 Feb, 2013 2 commits
  6. 13 Dec, 2012 1 commit
  7. 27 Sep, 2012 1 commit
  8. 21 Aug, 2012 1 commit
  9. 22 Mar, 2012 1 commit
  10. 10 Jan, 2012 1 commit
  11. 04 Jan, 2012 1 commit
    • Al Viro's avatar
      vfs: fix the stupidity with i_dentry in inode destructors · 6b520e05
      Al Viro authored
      Seeing that just about every destructor got that INIT_LIST_HEAD() copied into
      it, there is no point whatsoever keeping this INIT_LIST_HEAD in inode_init_once();
      the cost of taking it into inode_init_always() will be negligible for pipes
      and sockets and negative for everything else.  Not to mention the removal of
      boilerplate code from ->destroy_inode() instances...
      Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
      6b520e05
  12. 07 Dec, 2011 1 commit
    • Sage Weil's avatar
      ceph: use i_ceph_lock instead of i_lock · be655596
      Sage Weil authored
      We have been using i_lock to protect all kinds of data structures in the
      ceph_inode_info struct, including lists of inodes that we need to iterate
      over while avoiding races with inode destruction.  That requires grabbing
      a reference to the inode with the list lock protected, but igrab() now
      takes i_lock to check the inode flags.
      
      Changing the list lock ordering would be a painful process.
      
      However, using a ceph-specific i_ceph_lock in the ceph inode instead of
      i_lock is a simple mechanical change and avoids the ordering constraints
      imposed by igrab().
      Reported-by: default avatarAmon Ott <a.ott@m-privacy.de>
      Signed-off-by: default avatarSage Weil <sage@newdream.net>
      be655596
  13. 06 Nov, 2011 2 commits
  14. 02 Nov, 2011 1 commit
  15. 25 Oct, 2011 1 commit
    • Sage Weil's avatar
      Revert "ceph: don't truncate dirty pages in invalidate work thread" · 83eaea22
      Sage Weil authored
      This reverts commit c9af9fb6.
      
      We need to block and truncate all pages in order to reliably invalidate
      them.  Otherwise, we could:
      
       - have some uptodate pages in the cache
       - queue an invalidate
       - write(2) locks some pages
       - invalidate_work skips them
       - write(2) only overwrites part of the page
       - page now dirty and uptodate
       -> partial leakage of invalidated data
      
      It's not entirely clear why we started skipping locked pages in the first
      place.  I just ran this through fsx and didn't see any problems.
      Signed-off-by: default avatarSage Weil <sage@newdream.net>
      83eaea22
  16. 26 Jul, 2011 4 commits
  17. 20 Jul, 2011 3 commits
  18. 08 Jun, 2011 1 commit
  19. 11 May, 2011 1 commit
  20. 04 May, 2011 1 commit
  21. 21 Mar, 2011 1 commit
  22. 15 Mar, 2011 1 commit
    • Sage Weil's avatar
      ceph: preserve I_COMPLETE across rename · 09adc80c
      Sage Weil authored
      d_move puts the renamed dentry at the end of d_subdirs, screwing with our
      cached dentry directory offsets.  We were just clearing I_COMPLETE to avoid
      any possibility of trouble.  However, assigning the renamed dentry an
      offset at the end of the directory (to match it's new d_subdirs position)
      is sufficient to maintain correct behavior and hold onto I_COMPLETE.
      
      This is especially important for workloads like rsync, which renames files
      into place.  Before, we would lose I_COMPLETE and do MDS lookups for each
      file.  With this patch we only talk to the MDS on create and rename.
      Signed-off-by: default avatarSage Weil <sage@newdream.net>
      09adc80c
  23. 03 Mar, 2011 1 commit
  24. 13 Jan, 2011 1 commit
  25. 12 Jan, 2011 2 commits
    • Sage Weil's avatar
      ceph: implement DIRLAYOUTHASH feature to get dir layout from MDS · 14303d20
      Sage Weil authored
      This implements the DIRLAYOUTHASH protocol feature, which passes the dir
      layout over the wire from the MDS.  This gives the client knowledge
      of the correct hash function to use for mapping dentries among dir
      fragments.
      
      Note that if this feature is _not_ present on the client but is on the
      MDS, the client may misdirect requests.  This will result in a forward
      and degrade performance.  It may also result in inaccurate NFS filehandle
      generation, which will prevent fh resolution when the inode is not present
      in the client cache and the parent directories have been fragmented.
      Signed-off-by: default avatarSage Weil <sage@newdream.net>
      14303d20
    • Sage Weil's avatar
      ceph: add dir_layout to inode · 6c0f3af7
      Sage Weil authored
      Add a ceph_dir_layout to the inode, and calculate dentry hash values based
      on the parent directory's specified dir_hash function.  This is needed
      because the old default Linux dcache hash function is extremely week and
      leads to a poor distribution of files among dir fragments.
      Signed-off-by: default avatarSage Weil <sage@newdream.net>
      6c0f3af7
  26. 07 Jan, 2011 3 commits
    • Nick Piggin's avatar
      fs: provide rcu-walk aware permission i_ops · b74c79e9
      Nick Piggin authored
      Signed-off-by: default avatarNick Piggin <npiggin@kernel.dk>
      b74c79e9
    • Nick Piggin's avatar
      fs: icache RCU free inodes · fa0d7e3d
      Nick Piggin authored
      RCU free the struct inode. This will allow:
      
      - Subsequent store-free path walking patch. The inode must be consulted for
        permissions when walking, so an RCU inode reference is a must.
      - sb_inode_list_lock to be moved inside i_lock because sb list walkers who want
        to take i_lock no longer need to take sb_inode_list_lock to walk the list in
        the first place. This will simplify and optimize locking.
      - Could remove some nested trylock loops in dcache code
      - Could potentially simplify things a bit in VM land. Do not need to take the
        page lock to follow page->mapping.
      
      The downsides of this is the performance cost of using RCU. In a simple
      creat/unlink microbenchmark, performance drops by about 10% due to inability to
      reuse cache-hot slab objects. As iterations increase and RCU freeing starts
      kicking over, this increases to about 20%.
      
      In cases where inode lifetimes are longer (ie. many inodes may be allocated
      during the average life span of a single inode), a lot of this cache reuse is
      not applicable, so the regression caused by this patch is smaller.
      
      The cache-hot regression could largely be avoided by using SLAB_DESTROY_BY_RCU,
      however this adds some complexity to list walking and store-free path walking,
      so I prefer to implement this at a later date, if it is shown to be a win in
      real situations. I haven't found a regression in any non-micro benchmark so I
      doubt it will be a problem.
      Signed-off-by: default avatarNick Piggin <npiggin@kernel.dk>
      fa0d7e3d
    • Nick Piggin's avatar
      fs: dcache remove dcache_lock · b5c84bf6
      Nick Piggin authored
      dcache_lock no longer protects anything. remove it.
      Signed-off-by: default avatarNick Piggin <npiggin@kernel.dk>
      b5c84bf6