1. 11 12月, 2008 1 次提交
    • C
      [XFS] resync headers with libxfs · 6d73cf13
      Christoph Hellwig 提交于
       - xfs_sb.h add the XFS_SB_VERSION2_PARENTBIT features2 that has been
         around in userspace for some time
       - xfs_inode.h: move a few things out of __KERNEL__ that are needed by
         userspace
       - xfs_mount.h: only include xfs_sync.h under __KERNEL__
       - xfs_inode.c: minor whitespace fixup.  I accidentaly changes this when
         importing this file for use by userspace.
      Signed-off-by: NChristoph Hellwig <hch@lst.de>
      Signed-off-by: NLachlan McIlroy <lachlan@sgi.com>
      6d73cf13
  2. 04 12月, 2008 5 次提交
  3. 01 12月, 2008 2 次提交
  4. 30 10月, 2008 10 次提交
  5. 13 8月, 2008 2 次提交
  6. 28 7月, 2008 5 次提交
    • C
      [XFS] streamline init/exit path · 9f8868ff
      Christoph Hellwig 提交于
      Currently the xfs module init/exit code is a mess. It's farmed out over a
      lot of function with very little error checking. This patch makes sure we
      propagate all initialization failures properly and clean up after them.
      Various runtime initializations are replaced with compile-time
      initializations where possible to make this easier. The exit path is
      similarly consolidated.
      
      There's now split out function to create/destroy the kmem zones and
      alloc/free the trace buffers. I've also changed the ktrace allocations to
      KM_MAYFAIL and handled errors resulting from that.
      
      And yes, we really should replace the XFS_*_TRACE ifdefs with a single
      XFS_TRACE..
      
      SGI-PV: 976035
      
      SGI-Modid: xfs-linux-melb:xfs-kern:31354a
      Signed-off-by: NChristoph Hellwig <hch@infradead.org>
      Signed-off-by: NNiv Sardi <xaiki@sgi.com>
      Signed-off-by: NLachlan McIlroy <lachlan@sgi.com>
      9f8868ff
    • 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
    • C
      [XFS] kill xfs_mount_init · c962fb79
      Christoph Hellwig 提交于
      xfs_mount_init is inlined into xfs_fs_fill_super and allocation switched
      to kzalloc. Plug a leak of the mount structure for most early mount
      failures. Move xfs_icsb_init_counters to as late as possible in the mount
      path and make sure to undo it so that no stale hotplug cpu notifiers are
      left around on mount failures.
      
      SGI-PV: 981951
      SGI-Modid: xfs-linux-melb:xfs-kern:31196a
      Signed-off-by: NChristoph Hellwig <hch@infradead.org>
      Signed-off-by: NDavid Chinner <dgc@sgi.com>
      Signed-off-by: NLachlan McIlroy <lachlan@sgi.com>
      c962fb79
    • C
      [XFS] sort out opening and closing of the block devices · 19f354d4
      Christoph Hellwig 提交于
      Currently closing the rt/log block device is done in the wrong spot, and
      far too early. So revampt it:
      
      - xfs_blkdev_put moved out of xfs_free_buftarg into the caller so that
      
      it is done after tearing down the buftarg completely.
      
      - call to xfs_unmountfs_close moved from xfs_mountfs into caller so
      
      that it's done after tearing down the filesystem completely.
      
      - xfs_unmountfs_close is renamed to xfs_close_devices and made static
      
      in xfs_super.c
      
      - opening of the block devices is split into a helper xfs_open_devices
      
      that is symetric in use to xfs_close_devices
      
      - xfs_unmountfs can now lose struct cred
      
      - error handling around device opening sanitized in xfs_fs_fill_super
      
      SGI-PV: 981951
      SGI-Modid: xfs-linux-melb:xfs-kern:31193a
      Signed-off-by: NChristoph Hellwig <hch@infradead.org>
      Signed-off-by: NDavid Chinner <dgc@sgi.com>
      Signed-off-by: NLachlan McIlroy <lachlan@sgi.com>
      19f354d4
    • T
      [XFS] Fix up noattr2 so that it will properly update the versionnum and · 7c12f296
      Tim Shimmin 提交于
      features2 fields.
      
      Previously, mounting with noattr2 failed to achieve anything because
      although it cleared the attr2 mount flag, it would set it again as soon as
      it processed the superblock fields. The fix now has an explicit noattr2
      flag and uses it later to fix up the versionnum and features2 fields.
      
      SGI-PV: 980021
      SGI-Modid: xfs-linux-melb:xfs-kern:31003a
      Signed-off-by: NTim Shimmin <tes@sgi.com>
      Signed-off-by: NChristoph Hellwig <hch@infradead.org>
      Signed-off-by: NLachlan McIlroy <lachlan@sgi.com>
      7c12f296
  7. 29 4月, 2008 3 次提交
  8. 18 4月, 2008 4 次提交
  9. 29 2月, 2008 1 次提交
  10. 07 2月, 2008 6 次提交
    • D
      [XFS] Move AIL pushing into it's own thread · 249a8c11
      David Chinner 提交于
      When many hundreds to thousands of threads all try to do simultaneous
      transactions and the log is in a tail-pushing situation (i.e. full), we
      can get multiple threads walking the AIL list and contending on the AIL
      lock.
      
      The AIL push is, in effect, a simple I/O dispatch algorithm complicated by
      the ordering constraints placed on it by the transaction subsystem. It
      really does not need multiple threads to push on it - even when only a
      single CPU is pushing the AIL, it can push the I/O out far faster that
      pretty much any disk subsystem can handle.
      
      So, to avoid contention problems stemming from multiple list walkers, move
      the list walk off into another thread and simply provide a "target" to
      push to. When a thread requires a push, it sets the target and wakes the
      push thread, then goes to sleep waiting for the required amount of space
      to become available in the log.
      
      This mechanism should also be a lot fairer under heavy load as the waiters
      will queue in arrival order, rather than queuing in "who completed a push
      first" order.
      
      Also, by moving the pushing to a separate thread we can do more
      effectively overload detection and prevention as we can keep context from
      loop iteration to loop iteration. That is, we can push only part of the
      list each loop and not have to loop back to the start of the list every
      time we run. This should also help by reducing the number of items we try
      to lock and/or push items that we cannot move.
      
      Note that this patch is not intended to solve the inefficiencies in the
      AIL structure and the associated issues with extremely large list
      contents. That needs to be addresses separately; parallel access would
      cause problems to any new structure as well, so I'm only aiming to isolate
      the structure from unbounded parallelism here.
      
      SGI-PV: 972759
      SGI-Modid: xfs-linux-melb:xfs-kern:30371a
      Signed-off-by: NDavid Chinner <dgc@sgi.com>
      Signed-off-by: NLachlan McIlroy <lachlan@sgi.com>
      249a8c11
    • C
      [XFS] kill xfs_iocore_t · 613d7043
      Christoph Hellwig 提交于
      xfs_iocore_t is a structure embedded in xfs_inode. Except for one field it
      just duplicates fields already in xfs_inode, and there is nothing this
      abstraction buys us on XFS/Linux. This patch removes it and shrinks source
      and binary size of xfs aswell as shrinking the size of xfs_inode by 60/44
      bytes in debug/non-debug builds.
      
      SGI-PV: 970852
      SGI-Modid: xfs-linux-melb:xfs-kern:29754a
      Signed-off-by: NChristoph Hellwig <hch@infradead.org>
      Signed-off-by: NLachlan McIlroy <lachlan@sgi.com>
      Signed-off-by: NTim Shimmin <tes@sgi.com>
      613d7043
    • E
      [XFS] Cleanup lock goop. · 36e41eeb
      Eric Sandeen 提交于
      Switch last couple lock_t's to spinlock_t's. Remove now-unused
      spinlock-related macros & types.
      
      SGI-PV: 970382
      SGI-Modid: xfs-linux-melb:xfs-kern:29748a
      Signed-off-by: NEric Sandeen <sandeen@sandeen.net>
      Signed-off-by: NDonald Douwsma <donaldd@sgi.com>
      Signed-off-by: NTim Shimmin <tes@sgi.com>
      36e41eeb
    • E
      [XFS] Unwrap XFS_SB_LOCK. · 3685c2a1
      Eric Sandeen 提交于
      Un-obfuscate XFS_SB_LOCK, remove XFS_SB_LOCK->mutex_lock->spin_lock
      macros, call spin_lock directly, remove extraneous cookie holdover from
      old xfs code, and change lock type to spinlock_t.
      
      SGI-PV: 970382
      SGI-Modid: xfs-linux-melb:xfs-kern:29746a
      Signed-off-by: NEric Sandeen <sandeen@sandeen.net>
      Signed-off-by: NDonald Douwsma <donaldd@sgi.com>
      Signed-off-by: NTim Shimmin <tes@sgi.com>
      3685c2a1
    • D
      [XFS] Unwrap AIL_LOCK · 287f3dad
      Donald Douwsma 提交于
      SGI-PV: 970382
      SGI-Modid: xfs-linux-melb:xfs-kern:29739a
      Signed-off-by: NDonald Douwsma <donaldd@sgi.com>
      Signed-off-by: NEric Sandeen <sandeen@sandeen.net>
      Signed-off-by: NTim Shimmin <tes@sgi.com>
      287f3dad
    • L
      [XFS] kill unnessecary ioops indirection · 541d7d3c
      Lachlan McIlroy 提交于
      Currently there is an indirection called ioops in the XFS data I/O path.
      Various functions are called by functions pointers, but there is no
      coherence in what this is for, and of course for XFS itself it's entirely
      unused. This patch removes it instead and significantly reduces source and
      binary size of XFS while making maintaince easier.
      
      SGI-PV: 970841
      SGI-Modid: xfs-linux-melb:xfs-kern:29737a
      Signed-off-by: NLachlan McIlroy <lachlan@sgi.com>
      Signed-off-by: NChristoph Hellwig <hch@infradead.org>
      Signed-off-by: NTim Shimmin <tes@sgi.com>
      541d7d3c
  11. 16 10月, 2007 1 次提交