1. 22 3月, 2012 10 次提交
  2. 03 2月, 2012 3 次提交
  3. 13 1月, 2012 2 次提交
    • A
      ceph: ensure prealloc_blob is in place when removing xattr · 83eb26af
      Alex Elder 提交于
      In __ceph_build_xattrs_blob(), if a ceph inode's extended attributes
      are marked dirty, all attributes recorded in its rb_tree index are
      formatted into a "blob" buffer.  The target buffer is recorded in
      ceph_inode->i_xattrs.prealloc_blob, and it is expected to exist and
      be of sufficient size to hold the attributes.
      
      The extended attributes are marked dirty in two cases: when a new
      attribute is added to the inode; or when one is removed.  In the
      former case work is done to ensure the prealloc_blob buffer is
      properly set up, but in the latter it is not.
      
      Change the logic in ceph_removexattr() so it matches what is
      done in ceph_setxattr().  Note that this is done in a way that
      keeps the two blocks of code nearly identical, in anticipation
      of a subsequent patch that encapsulates some of this logic into
      one or more helper routines.
      Signed-off-by: NAlex Elder <elder@dreamhost.com>
      Signed-off-by: NSage Weil <sage@newdream.net>
      83eb26af
    • S
      ceph: enable/disable dentry complete flags via mount option · a40dc6cc
      Sage Weil 提交于
      Enable/disable use of the dentry dir 'complete' flag via a mount option.
      This lets the admin control whether ceph uses the dcache to satisfy
      negative lookups or readdir when it has the entire directory contents in
      its cache.
      
      This is purely a performance optimization; correctness is guaranteed
      whether it is enabled or not.
      Reviewed-by: NChristoph Hellwig <hch@lst.de>
      Signed-off-by: NSage Weil <sage@newdream.net>
      a40dc6cc
  4. 12 1月, 2012 1 次提交
    • A
      ceph: always initialize the dentry in open_root_dentry() · d46cfba5
      Alex Elder 提交于
      When open_root_dentry() gets a dentry via d_obtain_alias() it does
      not get initialized.  If the dentry obtained came from the cache,
      this is OK.  But if not, the result is an improperly initialized
      dentry.
      
      To fix this, call ceph_init_dentry() regardless of which path
      produced the dentry.  That function returns immediately for a dentry
      that is already initialized, it is safe to use either way.
      
      (Credit to Sage, who suggested this fix.)
      Signed-off-by: NAlex Elder <aelder@sgi.com>
      d46cfba5
  5. 11 1月, 2012 4 次提交
  6. 10 1月, 2012 1 次提交
  7. 07 1月, 2012 1 次提交
  8. 04 1月, 2012 6 次提交
  9. 30 12月, 2011 1 次提交
    • S
      ceph: disable use of dcache for readdir etc. · a4d46363
      Sage Weil 提交于
      Ceph attempts to use the dcache to satisfy negative lookups and readdir
      when the entire directory contents are in cache.  Disable this behavior
      until lingering bugs in this code are shaken out; we'll re-enable these
      hooks once things are fully stable.
      Signed-off-by: NSage Weil <sage@newdream.net>
      a4d46363
  10. 14 12月, 2011 2 次提交
  11. 08 12月, 2011 1 次提交
    • S
      ceph: use i_ceph_lock instead of i_lock · be655596
      Sage Weil 提交于
      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: NAmon Ott <a.ott@m-privacy.de>
      Signed-off-by: NSage Weil <sage@newdream.net>
      be655596
  12. 03 12月, 2011 1 次提交
  13. 12 11月, 2011 1 次提交
    • S
      ceph: initialize root dentry · 774ac21d
      Sage Weil 提交于
      Set up d_fsdata on the root dentry.  This fixes a NULL pointer dereference
      in ceph_d_prune on umount.  It also means we can eventually strip out all
      of the conditional checks on d_fsdata because it is now set unconditionally
      (prior to setting up the d_ops).
      
      Fix the ceph_d_prune debug print while we're here.
      Signed-off-by: NSage Weil <sage@newdream.net>
      774ac21d
  14. 06 11月, 2011 4 次提交
  15. 04 11月, 2011 1 次提交
  16. 02 11月, 2011 1 次提交