1. 06 1月, 2009 11 次提交
  2. 17 12月, 2008 1 次提交
  3. 11 11月, 2008 14 次提交
  4. 15 10月, 2008 3 次提交
  5. 14 10月, 2008 11 次提交
    • T
      ocfs2: Refactor xattr list and remove ocfs2_xattr_handler(). · 936b8834
      Tao Ma 提交于
      According to Christoph Hellwig's advice, we really don't need
      a ->list to handle one xattr's list. Just a map from index to
      xattr prefix is enough. And I also refactor the old list method
      with the reference from fs/xfs/linux-2.6/xfs_xattr.c and the
      xattr list method in btrfs.
      Signed-off-by: NTao Ma <tao.ma@oracle.com>
      Signed-off-by: NMark Fasheh <mfasheh@suse.com>
      936b8834
    • T
      ocfs2: Calculate EA hash only by its suffix. · 2057e5c6
      Tao Ma 提交于
      According to Christoph Hellwig's advice, the hash value of EA
      is only calculated by its suffix.
      Signed-off-by: NTao Ma <tao.ma@oracle.com>
      Signed-off-by: NMark Fasheh <mfasheh@suse.com>
      2057e5c6
    • M
      ocfs2: Move trusted and user attribute support into xattr.c · 99219aea
      Mark Fasheh 提交于
      Per Christoph Hellwig's suggestion - don't split these up. It's not like we
      gained much by having the two tiny files around.
      Signed-off-by: NMark Fasheh <mfasheh@suse.com>
      99219aea
    • M
      ocfs2: Uninline ocfs2_xattr_name_hash() · 40daa16a
      Mark Fasheh 提交于
      This is too big to be inlined.
      Signed-off-by: NMark Fasheh <mfasheh@suse.com>
      40daa16a
    • T
      ocfs2: Add empty bucket support in xattr. · 5a095611
      Tao Ma 提交于
      As Mark mentioned, it may be time-consuming when we remove the
      empty xattr bucket, so this patch try to let empty bucket exist
      in xattr operation. The modification includes:
      1. Remove the functin of bucket and extent record deletion during
         xattr delete.
      2. In xattr set:
         1) Don't clean the last entry so that if the bucket is empty,
            the hash value of the bucket is the hash value of the entry
            which is deleted last.
         2) During insert, if we meet with an empty bucket, just use the
            1st entry.
      3. In binary search of xattr bucket, use the bucket hash value(which
         stored in the 1st xattr entry) to find the right place.
      Signed-off-by: NTao Ma <tao.ma@oracle.com>
      Signed-off-by: NMark Fasheh <mfasheh@suse.com>
      5a095611
    • T
      ocfs2/xattr.c: Fix a bug when inserting xattr. · 06b240d8
      Tao Ma 提交于
      During the process of xatt insertion, we use binary search
      to find the right place and "low" is set to it. But when
      there is one xattr which has the same name hash as the inserted
      one, low is the wrong value. So set it to the right position.
      Signed-off-by: NTao Ma <tao.ma@oracle.com>
      Signed-off-by: NMark Fasheh <mfasheh@suse.com>
      06b240d8
    • T
      ocfs2: Resolve deadlock in ocfs2_xattr_free_block. · 08413899
      Tao Ma 提交于
      In ocfs2_xattr_free_block, we take a cluster lock on xb_alloc_inode while we
      have a transaction open. This will deadlock the downconvert thread, so fix
      it.
      
      We can clean up how xattr blocks are removed while here - this patch also
      moves the mechanism of releasing xattr block (including both value, xattr
      tree and xattr block) into this function.
      Signed-off-by: NTao Ma <tao.ma@oracle.com>
      Signed-off-by: NMark Fasheh <mfasheh@suse.com>
      08413899
    • T
      ocfs2: bug-fix for journal extend in xattr. · 28b8ca0b
      Tao Ma 提交于
      In ocfs2_extend_trans, when we can't extend the current
      transaction, it will commit current transaction and restart
      a new one. So if the previous credits we have allocated aren't
      used(the block isn't dirtied before our extend), we will not
      have enough credits for any future operation(it will cause jbd
      complain and bug out). So check this and re-extend it.
      Signed-off-by: NTao Ma <tao.ma@oracle.com>
      Signed-off-by: NMark Fasheh <mfasheh@suse.com>
      28b8ca0b
    • J
      ocfs2: Change ocfs2_get_*_extent_tree() to ocfs2_init_*_extent_tree() · 8d6220d6
      Joel Becker 提交于
      The original get/put_extent_tree() functions held a reference on
      et_root_bh.  However, every single caller already has a safe reference,
      making the get/put cycle irrelevant.
      
      We change ocfs2_get_*_extent_tree() to ocfs2_init_*_extent_tree().  It
      no longer gets a reference on et_root_bh.  ocfs2_put_extent_tree() is
      removed.  Callers now have a simpler init+use pattern.
      Signed-off-by: NJoel Becker <joel.becker@oracle.com>
      Signed-off-by: NMark Fasheh <mfasheh@suse.com>
      8d6220d6
    • J
      ocfs2: Make ocfs2_extent_tree the first-class representation of a tree. · f99b9b7c
      Joel Becker 提交于
      We now have three different kinds of extent trees in ocfs2: inode data
      (dinode), extended attributes (xattr_tree), and extended attribute
      values (xattr_value).  There is a nice abstraction for them,
      ocfs2_extent_tree, but it is hidden in alloc.c.  All the calling
      functions have to pick amongst a varied API and pass in type bits and
      often extraneous pointers.
      
      A better way is to make ocfs2_extent_tree a first-class object.
      Everyone converts their object to an ocfs2_extent_tree() via the
      ocfs2_get_*_extent_tree() calls, then uses the ocfs2_extent_tree for all
      tree calls to alloc.c.
      
      This simplifies a lot of callers, making for readability.  It also
      provides an easy way to add additional extent tree types, as they only
      need to be defined in alloc.c with a ocfs2_get_<new>_extent_tree()
      function.
      Signed-off-by: NJoel Becker <joel.becker@oracle.com>
      Signed-off-by: NMark Fasheh <mfasheh@suse.com>
      f99b9b7c
    • M
      ocfs2: fix printk format warnings · ff1ec20e
      Mark Fasheh 提交于
      This patch fixes the following build warnings:
      
      fs/ocfs2/xattr.c: In function 'ocfs2_half_xattr_bucket':
      fs/ocfs2/xattr.c:3282: warning: format '%d' expects type 'int', but argument 7 has type 'long int'
      fs/ocfs2/xattr.c:3282: warning: format '%d' expects type 'int', but argument 8 has type 'long int'
      fs/ocfs2/xattr.c:3282: warning: format '%d' expects type 'int', but argument 7 has type 'long int'
      fs/ocfs2/xattr.c:3282: warning: format '%d' expects type 'int', but argument 8 has type 'long int'
      fs/ocfs2/xattr.c:3282: warning: format '%d' expects type 'int', but argument 7 has type 'long int'
      fs/ocfs2/xattr.c:3282: warning: format '%d' expects type 'int', but argument 8 has type 'long int'
      fs/ocfs2/xattr.c: In function 'ocfs2_xattr_set_entry_in_bucket':
      fs/ocfs2/xattr.c:4092: warning: format '%d' expects type 'int', but argument 6 has type 'size_t'
      fs/ocfs2/xattr.c:4092: warning: format '%d' expects type 'int', but argument 6 has type 'size_t'
      fs/ocfs2/xattr.c:4092: warning: format '%d' expects type 'int', but argument 6 has type 'size_t'
      Signed-off-by: NMark Fasheh <mfasheh@suse.com>
      ff1ec20e
新手
引导
客服 返回
顶部