1. 20 11月, 2012 1 次提交
  2. 09 11月, 2012 1 次提交
  3. 12 10月, 2011 1 次提交
    • C
      xfs: revert to using a kthread for AIL pushing · 0030807c
      Christoph Hellwig 提交于
      Currently we have a few issues with the way the workqueue code is used to
      implement AIL pushing:
      
       - it accidentally uses the same workqueue as the syncer action, and thus
         can be prevented from running if there are enough sync actions active
         in the system.
       - it doesn't use the HIGHPRI flag to queue at the head of the queue of
         work items
      
      At this point I'm not confident enough in getting all the workqueue flags and
      tweaks right to provide a perfectly reliable execution context for AIL
      pushing, which is the most important piece in XFS to make forward progress
      when the log fills.
      
      Revert back to use a kthread per filesystem which fixes all the above issues
      at the cost of having a task struct and stack around for each mounted
      filesystem.  In addition this also gives us much better ways to diagnose
      any issues involving hung AIL pushing and removes a small amount of code.
      Signed-off-by: NChristoph Hellwig <hch@lst.de>
      Reported-by: NStefan Priebe <s.priebe@profihost.ag>
      Tested-by: NStefan Priebe <s.priebe@profihost.ag>
      Reviewed-by: NDave Chinner <dchinner@redhat.com>
      Signed-off-by: NAlex Elder <aelder@sgi.com>
      0030807c
  4. 13 8月, 2011 2 次提交
  5. 08 7月, 2011 1 次提交
  6. 29 4月, 2011 1 次提交
  7. 07 3月, 2011 1 次提交
  8. 02 3月, 2011 1 次提交
  9. 21 12月, 2010 1 次提交
  10. 19 10月, 2010 3 次提交
  11. 10 8月, 2010 1 次提交
    • C
      xfs: new truncate sequence · fa9b227e
      Christoph Hellwig 提交于
      Convert XFS to the new truncate sequence.  We still can have errors after
      updating the file size in xfs_setattr, but these are real I/O errors and lead
      to a transaction abort and filesystem shutdown, so they are not an issue.
      
      Errors from ->write_begin and write_end can now be handled correctly because
      we can actually get rid of the delalloc extents while previous the buffer
      state was stipped in block_invalidatepage.
      
      There is still no error handling for ->direct_IO, because doing so will need
      some major restructuring given that we only have the iolock shared and do not
      hold i_mutex at all.  Fortunately leaving the normally allocated blocks behind
      there is not a major issue and this will get cleaned up by xfs_free_eofblock
      later.
      
      Note: the patch is against Al's vfs.git tree as that contains the nessecary
      preparations.  I'd prefer to get it applied there so that we can get some
      testing in linux-next.
      Signed-off-by: NChristoph Hellwig <hch@lst.de>
      Signed-off-by: NAl Viro <viro@zeniv.linux.org.uk>
      fa9b227e
  12. 27 7月, 2010 1 次提交
    • C
      xfs: drop dmapi hooks · 288699fe
      Christoph Hellwig 提交于
      Dmapi support was never merged upstream, but we still have a lot of hooks
      bloating XFS for it, all over the fast pathes of the filesystem.
      
      This patch drops over 700 lines of dmapi overhead.  If we'll ever get HSM
      support in mainline at least the namespace events can be done much saner
      in the VFS instead of the individual filesystem, so it's not like this
      is much help for future work.
      Signed-off-by: NChristoph Hellwig <hch@lst.de>
      Reviewed-by: NDave Chinner <dchinner@redhat.com>
      288699fe
  13. 02 3月, 2010 1 次提交
  14. 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
  15. 19 6月, 2009 1 次提交
  16. 29 3月, 2009 1 次提交
  17. 09 2月, 2009 1 次提交
  18. 01 12月, 2008 2 次提交
  19. 30 10月, 2008 2 次提交
  20. 14 8月, 2008 1 次提交
    • D
      CRED: Introduce credential access wrappers · 9e2b2dc4
      David Howells 提交于
      The patches that are intended to introduce copy-on-write credentials for 2.6.28
      require abstraction of access to some fields of the task structure,
      particularly for the case of one task accessing another's credentials where RCU
      will have to be observed.
      
      Introduced here are trivial no-op versions of the desired accessors for current
      and other tasks so that other subsystems can start to be converted over more
      easily.
      
      Wrappers are introduced into a new header (linux/cred.h) for UID/GID,
      EUID/EGID, SUID/SGID, FSUID/FSGID, cap_effective and current's subscribed
      user_struct.  These wrappers are macros because the ordering between header
      files mitigates against making them inline functions.
      
      linux/cred.h is #included from linux/sched.h.
      
      Further, XFS is modified such that it no longer defines and uses parameterised
      versions of current_fs[ug]id(), thus getting rid of the namespace collision
      otherwise incurred.
      Signed-off-by: NDavid Howells <dhowells@redhat.com>
      Signed-off-by: NJames Morris <jmorris@namei.org>
      9e2b2dc4
  21. 13 8月, 2008 3 次提交
  22. 28 7月, 2008 2 次提交
    • E
      [XFS] Pack some shortform dir2 structures for the ARM old ABI · ae23a5e8
      Eric Sandeen 提交于
      architecture.
      
      This should fix the longstanding issues with xfs and old ABI arm boxes,
      which lead to various asserts and xfs shutdowns, and for which an
      (incorrect) patch has been floating around for years.
      
      I've verified this patch by comparing the on-disk structure layouts using
      pahole from the dwarves package, as well as running through a bit of xfsqa
      under qemu-arm, modified so that the check/repair phase after each test
      actually executes check/repair from the x86 host, on the filesystem
      populated by the arm emulator. Thus far it all looks good.
      
      There are 2 other structures with extra padding at the end, but they don't
      seem to cause trouble. I suppose they could be packed as well:
      xfs_dir2_data_unused_t and xfs_dir2_sf_t.
      
      Note that userspace needs a similar treatment, and any filesystems which
      were running with the previous rogue "fix" will now see corruption (either
      in the kernel, or during xfs_repair) with this fix properly in place; it
      may be worth teaching xfs_repair to identify and fix that specific issue.
      
      SGI-PV: 982930
      
      SGI-Modid: xfs-linux-melb:xfs-kern:31280a
      Signed-off-by: NEric Sandeen <sandeen@sandeen.net>
      Signed-off-by: NTim Shimmin <tes@sgi.com>
      Signed-off-by: NLachlan McIlroy <lachlan@sgi.com>
      ae23a5e8
    • 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
  23. 30 4月, 2008 2 次提交
  24. 29 4月, 2008 1 次提交
  25. 18 4月, 2008 1 次提交
  26. 07 2月, 2008 3 次提交
  27. 16 10月, 2007 1 次提交
  28. 15 10月, 2007 2 次提交