1. 27 2月, 2010 9 次提交
    • J
      ocfs2: Set the xattr name+value pair in one place · 69a3e539
      Joel Becker 提交于
      We create two new functions on ocfs2_xa_loc, ocfs2_xa_prepare_entry()
      and ocfs2_xa_store_inline_value().
      
      ocfs2_xa_prepare_entry() makes sure that the xl_entry field of
      ocfs2_xa_loc is ready to receive an xattr.  The entry will point to an
      appropriately sized name+value region in storage.  If an existing entry
      can be reused, it will be.  If no entry already exists, it will be
      allocated.  If there isn't space to allocate it, -ENOSPC will be
      returned.
      
      ocfs2_xa_store_inline_value() stores the data that goes into the 'value'
      part of the name+value pair.  For values that don't fit directly, this
      stores the value tree root.
      
      A number of operations are added to ocfs2_xa_loc_operations to support
      these functions.  This reflects the disparate behaviors of xattr blocks
      and buckets.
      
      With these functions, the overlapping ocfs2_xattr_set_entry_local() and
      ocfs2_xattr_set_entry_normal() can be replaced with a single call
      scheme.
      Signed-off-by: NJoel Becker <joel.becker@oracle.com>
      69a3e539
    • J
      ocfs2: Wrap calculation of name+value pair size. · 199799a3
      Joel Becker 提交于
      An ocfs2 xattr entry stores the text name and value as a pair in the
      storage area.  Obviously names and values can be variable-sized.  If a
      value is too large for the entry storage, a tree root is stored instead.
      The name+value pair is also padded.
      
      Because of this, there are a million places in the code that do:
      
      	if (needs_external_tree(value_size)
      		namevalue_size = pad(name_size) + tree_root_size;
      	else
      		namevalue_size = pad(name_size) + pad(value_size);
      
      Let's create some convenience functions to make the code more readable.
      There are three forms.  The first takes the raw sizes.  The second takes
      an ocfs2_xattr_info structure.  The third takes an existing
      ocfs2_xattr_entry.
      Signed-off-by: NJoel Becker <joel.becker@oracle.com>
      199799a3
    • J
      ocfs2: Add a name_len field to ocfs2_xattr_info. · 18853b95
      Joel Becker 提交于
      Rather than calculating strlen all over the place, let's store the
      name length directly on ocfs2_xattr_info.
      Signed-off-by: NJoel Becker <joel.becker@oracle.com>
      18853b95
    • J
      ocfs2: Prefix the member fields of struct ocfs2_xattr_info. · 6b240ff6
      Joel Becker 提交于
      struct ocfs2_xattr_info is a useful structure describing an xattr
      you'd like to set.  Let's put prefixes on the member fields so it's
      easier to read and use.
      Signed-off-by: NJoel Becker <joel.becker@oracle.com>
      6b240ff6
    • J
      ocfs2: Remove xattrs via ocfs2_xa_loc · bde1e540
      Joel Becker 提交于
      Add ocfs2_xa_remove_entry(), which will remove an xattr entry from its
      storage via the ocfs2_xa_loc descriptor.
      Signed-off-by: NJoel Becker <joel.becker@oracle.com>
      bde1e540
    • J
      ocfs2: Introduce ocfs2_xa_loc · 11179f2c
      Joel Becker 提交于
      The ocfs2 extended attribute (xattr) code is very flexible.  It can
      store xattrs in the inode itself, in an external block, or in a tree of
      data structures.  This allows the number of xattrs to be bounded by the
      filesystem size.
      
      However, the code that manages each possible storage location is
      different.  Maintaining the ocfs2 xattr code requires changing each hunk
      separately.
      
      This patch is the start of a series introducing the ocfs2_xa_loc
      structure.  This structure wraps the on-disk details of an xattr
      entry.  The goal is that the generic xattr routines can use
      ocfs2_xa_loc without knowing the underlying storage location.
      
      This first pass merely implements the basic structure, initializing it,
      and wiping the name+value pair of the entry.
      Signed-off-by: NJoel Becker <joel.becker@oracle.com>
      11179f2c
    • S
      ocfs2: Add current->comm in trace output · 8545e03d
      Sunil Mushran 提交于
      Add current->comm to the standard mlog() output to help with debugging.
      Signed-off-by: NSunil Mushran <sunil.mushran@oracle.com>
      Signed-off-by: NJoel Becker <joel.becker@oracle.com>
      8545e03d
    • W
      ocfs2: Clean up the checks for CoW and direct I/O. · 96a1cc73
      Wengang Wang 提交于
      When ocfs2 has to do CoW for refcounted extents, we disable direct I/O
      and go through the buffered I/O path.  This makes the combined check
      easier to read.
      Signed-off-by: NWengang Wang <wen.gang.wang@oracle.com>
      Signed-off-by: NJoel Becker <joel.becker@oracle.com>
      96a1cc73
    • T
      ocfs2: add extent block stealing for ocfs2 v5 · b89c5428
      Tiger Yang 提交于
      This patch add extent block (metadata) stealing mechanism for
      extent allocation. This mechanism is same as the inode stealing.
      if no room in slot specific extent_alloc, we will try to
      allocate extent block from the next slot.
      Signed-off-by: NTiger Yang <tiger.yang@oracle.com>
      Acked-by: NTao Ma <tao.ma@oracle.com>
      Signed-off-by: NJoel Becker <joel.becker@oracle.com>
      b89c5428
  2. 09 2月, 2010 8 次提交
  3. 08 2月, 2010 11 次提交
  4. 07 2月, 2010 12 次提交