1. 29 6月, 2013 1 次提交
  2. 02 7月, 2012 1 次提交
  3. 15 5月, 2012 1 次提交
  4. 27 7月, 2011 1 次提交
  5. 13 7月, 2011 2 次提交
  6. 08 7月, 2011 1 次提交
  7. 07 3月, 2011 1 次提交
  8. 27 7月, 2010 4 次提交
  9. 20 1月, 2010 3 次提交
  10. 15 12月, 2009 1 次提交
    • C
      xfs: event tracing support · 0b1b213f
      Christoph Hellwig 提交于
      Convert the old xfs tracing support that could only be used with the
      out of tree kdb and xfsidbg patches to use the generic event tracer.
      
      To use it make sure CONFIG_EVENT_TRACING is enabled and then enable
      all xfs trace channels by:
      
         echo 1 > /sys/kernel/debug/tracing/events/xfs/enable
      
      or alternatively enable single events by just doing the same in one
      event subdirectory, e.g.
      
         echo 1 > /sys/kernel/debug/tracing/events/xfs/xfs_ihold/enable
      
      or set more complex filters, etc. In Documentation/trace/events.txt
      all this is desctribed in more detail.  To reads the events do a
      
         cat /sys/kernel/debug/tracing/trace
      
      Compared to the last posting this patch converts the tracing mostly to
      the one tracepoint per callsite model that other users of the new
      tracing facility also employ.  This allows a very fine-grained control
      of the tracing, a cleaner output of the traces and also enables the
      perf tool to use each tracepoint as a virtual performance counter,
           allowing us to e.g. count how often certain workloads git various
           spots in XFS.  Take a look at
      
          http://lwn.net/Articles/346470/
      
      for some examples.
      
      Also the btree tracing isn't included at all yet, as it will require
      additional core tracing features not in mainline yet, I plan to
      deliver it later.
      
      And the really nice thing about this patch is that it actually removes
      many lines of code while adding this nice functionality:
      
       fs/xfs/Makefile                |    8
       fs/xfs/linux-2.6/xfs_acl.c     |    1
       fs/xfs/linux-2.6/xfs_aops.c    |   52 -
       fs/xfs/linux-2.6/xfs_aops.h    |    2
       fs/xfs/linux-2.6/xfs_buf.c     |  117 +--
       fs/xfs/linux-2.6/xfs_buf.h     |   33
       fs/xfs/linux-2.6/xfs_fs_subr.c |    3
       fs/xfs/linux-2.6/xfs_ioctl.c   |    1
       fs/xfs/linux-2.6/xfs_ioctl32.c |    1
       fs/xfs/linux-2.6/xfs_iops.c    |    1
       fs/xfs/linux-2.6/xfs_linux.h   |    1
       fs/xfs/linux-2.6/xfs_lrw.c     |   87 --
       fs/xfs/linux-2.6/xfs_lrw.h     |   45 -
       fs/xfs/linux-2.6/xfs_super.c   |  104 ---
       fs/xfs/linux-2.6/xfs_super.h   |    7
       fs/xfs/linux-2.6/xfs_sync.c    |    1
       fs/xfs/linux-2.6/xfs_trace.c   |   75 ++
       fs/xfs/linux-2.6/xfs_trace.h   | 1369 +++++++++++++++++++++++++++++++++++++++++
       fs/xfs/linux-2.6/xfs_vnode.h   |    4
       fs/xfs/quota/xfs_dquot.c       |  110 ---
       fs/xfs/quota/xfs_dquot.h       |   21
       fs/xfs/quota/xfs_qm.c          |   40 -
       fs/xfs/quota/xfs_qm_syscalls.c |    4
       fs/xfs/support/ktrace.c        |  323 ---------
       fs/xfs/support/ktrace.h        |   85 --
       fs/xfs/xfs.h                   |   16
       fs/xfs/xfs_ag.h                |   14
       fs/xfs/xfs_alloc.c             |  230 +-----
       fs/xfs/xfs_alloc.h             |   27
       fs/xfs/xfs_alloc_btree.c       |    1
       fs/xfs/xfs_attr.c              |  107 ---
       fs/xfs/xfs_attr.h              |   10
       fs/xfs/xfs_attr_leaf.c         |   14
       fs/xfs/xfs_attr_sf.h           |   40 -
       fs/xfs/xfs_bmap.c              |  507 +++------------
       fs/xfs/xfs_bmap.h              |   49 -
       fs/xfs/xfs_bmap_btree.c        |    6
       fs/xfs/xfs_btree.c             |    5
       fs/xfs/xfs_btree_trace.h       |   17
       fs/xfs/xfs_buf_item.c          |   87 --
       fs/xfs/xfs_buf_item.h          |   20
       fs/xfs/xfs_da_btree.c          |    3
       fs/xfs/xfs_da_btree.h          |    7
       fs/xfs/xfs_dfrag.c             |    2
       fs/xfs/xfs_dir2.c              |    8
       fs/xfs/xfs_dir2_block.c        |   20
       fs/xfs/xfs_dir2_leaf.c         |   21
       fs/xfs/xfs_dir2_node.c         |   27
       fs/xfs/xfs_dir2_sf.c           |   26
       fs/xfs/xfs_dir2_trace.c        |  216 ------
       fs/xfs/xfs_dir2_trace.h        |   72 --
       fs/xfs/xfs_filestream.c        |    8
       fs/xfs/xfs_fsops.c             |    2
       fs/xfs/xfs_iget.c              |  111 ---
       fs/xfs/xfs_inode.c             |   67 --
       fs/xfs/xfs_inode.h             |   76 --
       fs/xfs/xfs_inode_item.c        |    5
       fs/xfs/xfs_iomap.c             |   85 --
       fs/xfs/xfs_iomap.h             |    8
       fs/xfs/xfs_log.c               |  181 +----
       fs/xfs/xfs_log_priv.h          |   20
       fs/xfs/xfs_log_recover.c       |    1
       fs/xfs/xfs_mount.c             |    2
       fs/xfs/xfs_quota.h             |    8
       fs/xfs/xfs_rename.c            |    1
       fs/xfs/xfs_rtalloc.c           |    1
       fs/xfs/xfs_rw.c                |    3
       fs/xfs/xfs_trans.h             |   47 +
       fs/xfs/xfs_trans_buf.c         |   62 -
       fs/xfs/xfs_vnodeops.c          |    8
       70 files changed, 2151 insertions(+), 2592 deletions(-)
      Signed-off-by: NChristoph Hellwig <hch@lst.de>
      Signed-off-by: NAlex Elder <aelder@sgi.com>
      0b1b213f
  11. 12 8月, 2009 1 次提交
  12. 11 8月, 2009 1 次提交
  13. 07 3月, 2009 1 次提交
  14. 10 11月, 2008 1 次提交
    • D
      [XFS] Account for allocated blocks when expanding directories · 6f9f51ad
      David Chinner 提交于
      When we create a directory, we reserve a number of blocks for the maximum
      possible expansion of of the directory due to various btree splits,
      freespace allocation, etc. Unfortunately, each allocation is not reflected
      in the total number of blocks still available to the transaction, so the
      maximal reservation is used over and over again.
      
      This leads to problems where an allocation group has only enough blocks
      for *some* of the allocations required for the directory modification.
      After the first N allocations, the remaining blocks in the allocation
      group drops below the total reservation, and subsequent allocations fail
      because the allocator will not allow the allocation to proceed if the AG
      does not have the enough blocks available for the entire allocation total.
      
      This results in an ENOSPC occurring after an allocation has already
      occurred. This results in aborting the directory operation (leaving the
      directory in an inconsistent state) and cancelling a dirty transaction,
      which results in a filesystem shutdown.
      
      Avoid the problem by reflecting the number of blocks allocated in any
      directory expansion in the total number of blocks available to the
      modification in progress. This prevents a directory modification from
      being aborted part way through with an ENOSPC.
      
      SGI-PV: 988144
      
      SGI-Modid: xfs-linux-melb:xfs-kern:32340a
      Signed-off-by: NDavid Chinner <david@fromorbit.com>
      Signed-off-by: NLachlan McIlroy <lachlan@sgi.com>
      6f9f51ad
  15. 30 10月, 2008 1 次提交
    • D
      [XFS] Account for allocated blocks when expanding directories · a7444053
      David Chinner 提交于
      When we create a directory, we reserve a number of blocks for the maximum
      possible expansion of of the directory due to various btree splits,
      freespace allocation, etc. Unfortunately, each allocation is not reflected
      in the total number of blocks still available to the transaction, so the
      maximal reservation is used over and over again.
      
      This leads to problems where an allocation group has only enough blocks
      for *some* of the allocations required for the directory modification.
      After the first N allocations, the remaining blocks in the allocation
      group drops below the total reservation, and subsequent allocations fail
      because the allocator will not allow the allocation to proceed if the AG
      does not have the enough blocks available for the entire allocation total.
      
      This results in an ENOSPC occurring after an allocation has already
      occurred. This results in aborting the directory operation (leaving the
      directory in an inconsistent state) and cancelling a dirty transaction,
      which results in a filesystem shutdown.
      
      Avoid the problem by reflecting the number of blocks allocated in any
      directory expansion in the total number of blocks available to the
      modification in progress. This prevents a directory modification from
      being aborted part way through with an ENOSPC.
      
      SGI-PV: 988144
      
      SGI-Modid: xfs-linux-melb:xfs-kern:32340a
      Signed-off-by: NDavid Chinner <david@fromorbit.com>
      Signed-off-by: NLachlan McIlroy <lachlan@sgi.com>
      a7444053
  16. 28 7月, 2008 6 次提交
    • B
      [XFS] Zero uninitialised xfs_da_args structure in xfs_dir2.c · 87affd08
      Barry Naujok 提交于
      Fixes a problem in the xfs_dir2_remove and xfs_dir2_replace paths which
      intenally call directory format specific lookup funtions that assume
      args->cmpresult is zeroed.
      
      SGI-PV: 982606
      SGI-Modid: xfs-linux-melb:xfs-kern:31268a
      Signed-off-by: NBarry Naujok <bnaujok@sgi.com>
      Signed-off-by: NChristoph Hellwig <hch@infradead.org>
      87affd08
    • B
      [XFS] XFS: ASCII case-insensitive support · 189f4bf2
      Barry Naujok 提交于
      Implement ASCII case-insensitive support. It's primary purpose is for
      supporting existing filesystems that already use this case-insensitive
      mode migrated from IRIX. But, if you only need ASCII-only case-insensitive
      support (ie. English only) and will never use another language, then this
      mode is perfectly adequate.
      
      ASCII-CI is implemented by generating hashes based on lower-case letters
      and doing lower-case compares. It implements a new xfs_nameops vector for
      doing the hashes and comparisons for all filename operations.
      
      To create a filesystem with this CI mode, use: # mkfs.xfs -n version=ci
      <device>
      
      SGI-PV: 981516
      SGI-Modid: xfs-linux-melb:xfs-kern:31209a
      Signed-off-by: NBarry Naujok <bnaujok@sgi.com>
      Signed-off-by: NChristoph Hellwig <hch@infradead.org>
      189f4bf2
    • B
      [XFS] Return case-insensitive match for dentry cache · 384f3ced
      Barry Naujok 提交于
      This implements the code to store the actual filename found during a
      lookup in the dentry cache and to avoid multiple entries in the dcache
      pointing to the same inode.
      
      To avoid polluting the dcache, we implement a new directory inode
      operations for lookup. xfs_vn_ci_lookup() stores the correct case name in
      the dcache.
      
      The "actual name" is only allocated and returned for a case- insensitive
      match and not an actual match.
      
      Another unusual interaction with the dcache is not storing negative
      dentries like other filesystems doing a d_add(dentry, NULL) when an ENOENT
      is returned. During the VFS lookup, if a dentry returned has no inode,
      dput is called and ENOENT is returned. By not doing a d_add, this actually
      removes it completely from the dcache to be reused. create/rename have to
      be modified to support unhashed dentries being passed in.
      
      SGI-PV: 981521
      SGI-Modid: xfs-linux-melb:xfs-kern:31208a
      Signed-off-by: NBarry Naujok <bnaujok@sgi.com>
      Signed-off-by: NChristoph Hellwig <hch@infradead.org>
      384f3ced
    • B
      [XFS] Add op_flags field and helpers to xfs_da_args · 6a178100
      Barry Naujok 提交于
      The end of the xfs_da_args structure has 4 unsigned char fields for
      true/false information on directory and attr operations using the
      xfs_da_args structure.
      
      The following converts these 4 into a op_flags field that uses the first 4
      bits for these fields and allows expansion for future operation
      information (eg. case-insensitive lookup request).
      
      SGI-PV: 981520
      SGI-Modid: xfs-linux-melb:xfs-kern:31206a
      Signed-off-by: NBarry Naujok <bnaujok@sgi.com>
      Signed-off-by: NChristoph Hellwig <hch@infradead.org>
      6a178100
    • B
      [XFS] Name operation vector for hash and compare · 5163f95a
      Barry Naujok 提交于
      Adds two pieces of functionality for the basis of case-insensitive support
      in XFS:
      
      1. A comparison result enumerated type: xfs_dacmp. It represents an
      
      exact match, case-insensitive match or no match at all. This patch
      
      only implements different and exact results.
      
      2. xfs_nameops vector for specifying how to perform the hash generation
      
      of filenames and comparision methods. In this patch the hash vector
      
      points to the existing xfs_da_hashname function and the comparison
      
      method does a length compare, and if the same, does a memcmp and
      
      return the xfs_dacmp result.
      
      All filename functions that use the hash (create, lookup remove, rename,
      etc) now use the xfs_nameops.hashname function and all directory lookup
      functions also use the xfs_nameops.compname function.
      
      The lookup functions also handle case-insensitive results even though the
      default comparison function cannot return that. And important aspect of
      the lookup functions is that an exact match always has precedence over a
      case-insensitive. So while a case-insensitive match is found, we have to
      keep looking just in case there is an exact match. In the meantime, the
      info for the first case-insensitive match is retained if no exact match is
      found.
      
      SGI-PV: 981519
      SGI-Modid: xfs-linux-melb:xfs-kern:31205a
      Signed-off-by: NBarry Naujok <bnaujok@sgi.com>
      Signed-off-by: NChristoph Hellwig <hch@infradead.org>
      5163f95a
    • D
      [XFS] Remove unused arg from kmem_free() · f0e2d93c
      Denys Vlasenko 提交于
      kmem_free() function takes (ptr, size) arguments but doesn't actually use
      second one.
      
      This patch removes size argument from all callsites.
      
      SGI-PV: 981498
      SGI-Modid: xfs-linux-melb:xfs-kern:31050a
      Signed-off-by: NDenys Vlasenko <vda.linux@googlemail.com>
      Signed-off-by: NDavid Chinner <dgc@sgi.com>
      Signed-off-by: NLachlan McIlroy <lachlan@sgi.com>
      f0e2d93c
  17. 18 4月, 2008 1 次提交
  18. 10 4月, 2008 1 次提交
  19. 07 2月, 2008 2 次提交
  20. 16 10月, 2007 1 次提交
  21. 15 10月, 2007 2 次提交
    • C
      [XFS] decontaminate vnode operations from behavior details · 993386c1
      Christoph Hellwig 提交于
      All vnode ops now take struct xfs_inode pointers and the behaviour related
      glue is split out into methods of it's own. This required fixing
      xfs_create/mkdir/symlink to not mess with the inode pointer but rather use
      a separate boolean for error handling. Thanks to Dave Chinner for that
      fix.
      
      SGI-PV: 969608
      SGI-Modid: xfs-linux-melb:xfs-kern:29492a
      Signed-off-by: NChristoph Hellwig <hch@infradead.org>
      Signed-off-by: NDavid Chinner <dgc@sgi.com>
      Signed-off-by: NTim Shimmin <tes@sgi.com>
      993386c1
    • C
      [XFS] use filldir internally · 051e7cd4
      Christoph Hellwig 提交于
      Currently xfs has a rather complicated internal scheme to allow for
      different directory formats in IRIX. This patch rips all code related to
      this out and pushes useage of the Linux filldir callback into the lowlevel
      directory code. This does not make the code any less portable because
      filldir can be used to create dirents of all possible variations
      (including the IRIX ones as proved by the IRIX binary emulation code under
      arch/mips/).
      
      This patch get rid of an unessecary copy in the readdir path, about 400
      lines of code and one of the last two users of the uio structure.
      
      This version is updated to deal with dmapi aswell which greatly simplifies
      the get_dirattrs code. The dmapi part has been tested using the
      get_dirattrs tools from the xfstest dmapi suite1 with various small and
      large directories.
      
      SGI-PV: 968563
      SGI-Modid: xfs-linux-melb:xfs-kern:29478a
      Signed-off-by: NChristoph Hellwig <hch@infradead.org>
      Signed-off-by: NDavid Chinner <dgc@sgi.com>
      Signed-off-by: NTim Shimmin <tes@sgi.com>
      051e7cd4
  22. 14 7月, 2007 1 次提交
  23. 11 11月, 2006 1 次提交
  24. 20 6月, 2006 1 次提交
  25. 09 6月, 2006 1 次提交
  26. 02 11月, 2005 2 次提交