[XFS updates] XFS development tree branch, for-linus, updated. v2.6.34-10537-g6b0a299

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "XFS development tree".

The branch, for-linus has been updated
  209fb87 xfs simplify and speed up direct I/O completions
  fb511f2 xfs: move aio completion after unwritten extent conversion
  40e2e97 direct-io: move aio_complete into ->end_io
  696123f xfs: fix big endian build
  ecd7f08 xfs: clean up xfs_bmap_get_bp
  5d18898 xfs: simplify xfs_truncate_file
  939d723 xfs: kill the b_strat callback in xfs_buf
  a64afb0 xfs: remove obsolete osyncisosync mount option
  0664ce8 xfs: clean up filestreams helpers
  73523a2 xfs: fix gcc 4.6 set but not read and unused statement warnings
  0f1a932 xfs: Fix build when CONFIG_XFS_POSIX_ACL=n
  3f34885 xfs: fix unsigned underflow in xfs_free_eofblocks
  aea1b95 xfs: use GFP_NOFS for page cache allocation
  4a7eddd xfs: fix memory reclaim recursion deadlock on locked inode buffer
  4386970 xfs: fix xfs_trans_add_item() lockdep warnings
  2f11fea xfs: simplify and remove xfs_ireclaim
  ec53d1d xfs: don't block on buffer read errors
  a4190f9 xfs: move inode shrinker unregister even earlier
  fa17b25 xfs: remove a dmapi leftover
  78558fe xfs: writepage always has buffers
  d4f7a5c xfs: allow writeback from kswapd
  651701d xfs: remove incorrect log write optimization
  2727ccc xfs: unregister inode shrinker before freeing filesystem structures
  cca28fb xfs: split xfs_itrace_entry
  f2d6761 xfs: remove xfs_iput
  ef35e92 xfs: remove xfs_iput_new
  d2e078c xfs: some iget tracing cleanups / fixes
  807cbbd xfs: do not use emums for flags used in tracing
  64c8614 xfs: remove explicit xfs_sync_data/xfs_sync_attr calls on umount
  f2bde9b xfs: small cleanups for xfs_iomap / __xfs_get_blocks
  3070451 xfs: reduce stack usage in xfs_iomap
  7a36c8a xfs: avoid synchronous transaction in xfs_fs_write_inode
  20cb52e xfs: simplify xfs_vm_writepage
  89f3b36 xfs: simplify xfs_vm_releasepage
  3d9b02e xfs: fix corruption case for block size < page size
  b4e9181 xfs: remove unused delta tracking code in xfs_bmapi
  cd8b0bb xfs: remove unused XFS_BMAPI_ flags
  a59f557 xfs: remove the unused XFS_TRANS_NOSLEEP/XFS_TRANS_WAIT flags
  9134c23 xfs: remove the unused XFS_LOG_SLEEP and XFS_LOG_NOSLEEP flags
  dbb2f65 xfs: kill the unused xlog_debug variable
  4e0d5f9 xfs: fix the xfs_log_iovec i_addr type
  898621d xfs: simplify inode to transaction joining
  4d16e92 xfs: simplify buffer pinning
  ca30b2a xfs: give li_cb callbacks the correct prototype
  7bfa31d xfs: give xfs_item_ops methods the correct prototypes
  9412e31 xfs: merge iop_unpin_remove into iop_unpin
  e98c414 xfs: simplify log item descriptor tracking
  3400777 xfs: remove unneeded #include statements
  288699f xfs: drop dmapi hooks
  16fd536 xfs: track AGs with reclaimable inodes in per-ag radix tree
  70e60ce xfs: convert inode shrinker to per-filesystem contexts
  7f8275d mm: add context argument to shrinker callback
      from  7b6259e7a83647948fa33a736cc832310c8d85aa (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 209fb87a259ead17e966627b7f053d16a96898da
Author: Christoph Hellwig <hch@xxxxxxxxxxxxx>
Date:   Sun Jul 18 21:17:11 2010 +0000

    xfs simplify and speed up direct I/O completions
    
    Our current handling of direct I/O completions is rather suboptimal,
    because we defer it to a workqueue more often than needed, and we
    perform a much to aggressive flush of the workqueue in case unwritten
    extent conversions happen.
    
    This patch changes the direct I/O reads to not even use a completion
    handler, as we don't bother to use it at all, and to perform the unwritten
    extent conversions in caller context for synchronous direct I/O.
    
    For a small I/O size direct I/O workload on a consumer grade SSD, such as
    the untar of a kernel tree inside qemu this patch gives speedups of
    about 5%.  Getting us much closer to the speed of a native block device,
    or a fully allocated XFS file.
    
    Signed-off-by: Christoph Hellwig <hch@xxxxxx>
    Reviewed-by: Dave Chinner <dchinner@xxxxxxxxxx>
    Signed-off-by: Alex Elder <aelder@xxxxxxx>

commit fb511f2150174b18b28ad54708c1adda0df39b17
Author: Christoph Hellwig <hch@xxxxxxxxxxxxx>
Date:   Sun Jul 18 21:17:10 2010 +0000

    xfs: move aio completion after unwritten extent conversion
    
    If we write into an unwritten extent using AIO we need to complete the AIO
    request after the extent conversion has finished.  Without that a read could
    race to see see the extent still unwritten and return zeros.   For synchronous
    I/O we already take care of that by flushing the xfsconvertd workqueue (which
    might be a bit of overkill).
    
    To do that add iocb and result fields to struct xfs_ioend, so that we can
    call aio_complete from xfs_end_io after the extent conversion has happened.
    Note that we need a new result field as io_error is used for positive errno
    values, while the AIO code can return negative error values and positive
    transfer sizes.
    
    Signed-off-by: Christoph Hellwig <hch@xxxxxx>
    Reviewed-by: Dave Chinner <dchinner@xxxxxxxxxx>
    Signed-off-by: Alex Elder <aelder@xxxxxxx>

commit 40e2e97316af6e62affab7a392e792494b8d9dde
Author: Christoph Hellwig <hch@xxxxxxxxxxxxx>
Date:   Sun Jul 18 21:17:09 2010 +0000

    direct-io: move aio_complete into ->end_io
    
    Filesystems with unwritten extent support must not complete an AIO request
    until the transaction to convert the extent has been commited.  That means
    the aio_complete calls needs to be moved into the ->end_io callback so
    that the filesystem can control when to call it exactly.
    
    This makes a bit of a mess out of dio_complete and the ->end_io callback
    prototype even more complicated.
    
    Signed-off-by: Christoph Hellwig <hch@xxxxxx>
    Reviewed-by: Jan Kara <jack@xxxxxxx>
    Signed-off-by: Alex Elder <aelder@xxxxxxx>

commit 696123fca877905696591829c97a2cef11c8d048
Author: Dave Chinner <dchinner@xxxxxxxxxx>
Date:   Mon Jul 26 13:51:46 2010 -0500

    xfs: fix big endian build
    
    Commit 0fd7275cc42ab734eaa1a2c747e65479bd1e42af ("xfs: fix gcc 4.6
    set but not read and unused statement warnings") failed to convert
    some code inside XFS_NATIVE_HOST (big endian host code only) and
    hence fails to build on such machines. Fix it.
    
    Signed-off-by: Dave Chinner <dchinner@xxxxxxxxxx>
    Signed-off-by: Alex Elder <aelder@xxxxxxx>

commit ecd7f082d68d7fb1c96bcf72071aa85db9c00ddf
Author: Christoph Hellwig <hch@xxxxxxxxxxxxx>
Date:   Thu Jul 22 12:52:08 2010 +1000

    xfs: clean up xfs_bmap_get_bp
    
    Signed-off-by: Christoph Hellwig <hch@xxxxxx>
    Reviewed-by: Dave Chinner <dchinner@xxxxxxxxxx>
    Signed-off-by: Dave Chinner <david@xxxxxxxxxxxxx>

commit 5d18898b20dfed5f373f8a9a7cbe01446036f8e9
Author: Christoph Hellwig <hch@xxxxxxxxxxxxx>
Date:   Tue Jul 20 17:51:31 2010 +1000

    xfs: simplify xfs_truncate_file
    
    xfs_truncate_file is only used for truncating quota files.  Move it to
    xfs_qm_syscalls.c so it can be marked static and take advatange of the
    fact by removing the unused page cache validation and taking the iget
    into the helper.
    
    Signed-off-by: Christoph Hellwig <hch@xxxxxx>
    Reviewed-by: Dave Chinner <dchinner@xxxxxxxxxx>
    Signed-off-by: Dave Chinner <david@xxxxxxxxxxxxx>

commit 939d723b721eef71060201738653a73443ff4510
Author: Christoph Hellwig <hch@xxxxxxxxxxxxx>
Date:   Tue Jul 20 17:51:16 2010 +1000

    xfs: kill the b_strat callback in xfs_buf
    
    The b_strat callback is used by xfs_buf_iostrategy to perform additional
    checks before submitting a buffer.  It is used in xfs_bwrite and when
    writing out delayed buffers.  In xfs_bwrite it we can de-virtualize the
    call easily as b_strat is set a few lines above the call to
    xfs_buf_iostrategy.  For the delayed buffers the rationale is a bit
    more complicated:
    
     - there are three callers of xfs_buf_delwri_queue, which places buffers
       on the delwri list:
        (1) xfs_bdwrite - this sets up b_strat, so it's fine
        (2) xfs_buf_iorequest.  None of the callers can have XBF_DELWRI set:
    	- xlog_bdstrat is only used for log buffers, which are never delwri
    	- _xfs_buf_read explicitly clears the delwri flag
    	- xfs_buf_iodone_work retries log buffers only
    	- xfsbdstrat - only used for reads, superblock writes without the
    	  delwri flag, log I/O and file zeroing with explicitly allocated
    	  buffers.
    	- xfs_buf_iostrategy - only calls xfs_buf_iorequest if b_strat is
    	  not set
        (3) xfs_buf_unlock
    	- only puts the buffer on the delwri list if the DELWRI flag is
    	  already set.  The DELWRI flag is only ever set in xfs_bwrite,
    	  xfs_buf_iodone_callbacks, or xfs_trans_log_buf.  For
    	  xfs_buf_iodone_callbacks and xfs_trans_log_buf we require
    	  an initialized buf item, which means b_strat was set to
    	  xfs_bdstrat_cb in xfs_buf_item_init.
    
    Conclusion: we can just get rid of the callback and replace it with
    explicit calls to xfs_bdstrat_cb.
    
    Signed-off-by: Christoph Hellwig <hch@xxxxxx>
    Reviewed-by: Dave Chinner <dchinner@xxxxxxxxxx>
    Signed-off-by: Dave Chinner <david@xxxxxxxxxxxxx>

commit a64afb057b607c04383ab5fb53c51421ba18c434
Author: Christoph Hellwig <hch@xxxxxxxxxxxxx>
Date:   Tue Jul 20 17:50:52 2010 +1000

    xfs: remove obsolete osyncisosync mount option
    
    Since Linux 2.6.33 the kernel has support for real O_SYNC, which made
    the osyncisosync option a no-op.  Warn the users about this and remove
    the mount flag for it.
    
    Signed-off-by: Christoph Hellwig <hch@xxxxxx>
    Reviewed-by: Dave Chinner <dchinner@xxxxxxxxxx>
    Signed-off-by: Dave Chinner <david@xxxxxxxxxxxxx>

commit 0664ce8d0fde731d76fa7e86b3afb54f3a6830ff
Author: Christoph Hellwig <hch@xxxxxxxxxxxxx>
Date:   Tue Jul 20 17:31:01 2010 +1000

    xfs: clean up filestreams helpers
    
    Move xfs_filestream_peek_ag, xxfs_filestream_get_ag and xfs_filestream_put_ag
    from xfs_filestream.h to xfs_filestream.c where it's only callers are, and
    remove the inline marker while we're at it to let the compiler decide on the
    inlining.  Also don't return a value from xfs_filestream_put_ag because
    we don't need it.
    
    Signed-off-by: Christoph Hellwig <hch@xxxxxx>
    Reviewed-by: Dave Chinner <dchinner@xxxxxxxxxx>
    Signed-off-by: Dave Chinner <david@xxxxxxxxxxxxx>

commit 73523a2ecf03f0bfe7c36c244aff8a2ef2208a4a
Author: Christoph Hellwig <hch@xxxxxxxxxxxxx>
Date:   Tue Jul 20 17:54:45 2010 +1000

    xfs: fix gcc 4.6 set but not read and unused statement warnings
    
    [hch: dropped a few hunks that need structural changes instead]
    
    Signed-off-by: Andi Kleen <ak@xxxxxxxxxxxxxxx>
    Reviewed-by: Dave Chinner <dchinner@xxxxxxxxxx>
    Signed-off-by: Dave Chinner <david@xxxxxxxxxxxxx>

commit 0f1a932f5d4d6ee71afb141914e2d5f11f27eee1
Author: Tony Luck <tony.luck@xxxxxxxxx>
Date:   Tue Jul 20 17:54:41 2010 +1000

    xfs: Fix build when CONFIG_XFS_POSIX_ACL=n
    
    When CONFIG_XFS_POSIX_ACL is not set "xfs_check_acl" is #defined
    to NULL - which breaks the code attempting to add a tracepoint
    on this function.
    
    Only define the tracepoint when the function exists.
    
    Signed-off-by: Tony Luck <tony.luck@xxxxxxxxx>
    Reviewed-by: Christoph Hellwig <hch@xxxxxx>
    Signed-off-by: Dave Chinner <david@xxxxxxxxxxxxx>

commit 3f34885cd7c6a3f4deea48e3bbc704d91d5704f4
Author: Kulikov Vasiliy <segooon@xxxxxxxxx>
Date:   Tue Jul 20 17:54:28 2010 +1000

    xfs: fix unsigned underflow in xfs_free_eofblocks
    
    map_len is unsigned. Checking map_len <= 0 is buggy when it should be
    below zero. So, check exact expression instead of map_len.
    
    Signed-off-by: Kulikov Vasiliy <segooon@xxxxxxxxx>
    Reviewed-by: Christoph Hellwig <hch@xxxxxx>
    Signed-off-by: Dave Chinner <david@xxxxxxxxxxxxx>

commit aea1b9532143218f8599ecedbbd6bfbf812385e1
Author: Dave Chinner <dchinner@xxxxxxxxxx>
Date:   Tue Jul 20 17:54:12 2010 +1000

    xfs: use GFP_NOFS for page cache allocation
    
    Avoid a lockdep warning by preventing page cache allocation from
    recursing back into the filesystem during memory reclaim.
    
    Signed-off-by: Dave Chinner <dchinner@xxxxxxxxxx>
    Reviewed-by: Christoph Hellwig <hch@xxxxxx>
    Reviewed-by: Alex Elder <aelder@xxxxxxx>
    Signed-off-by: Dave Chinner <david@xxxxxxxxxxxxx>

commit 4a7edddcb5b14ddb5962e6906b6fd6b500d7a361
Author: Dave Chinner <dchinner@xxxxxxxxxx>
Date:   Tue Jul 20 17:53:59 2010 +1000

    xfs: fix memory reclaim recursion deadlock on locked inode buffer
    
    Calling into memory reclaim with a locked inode buffer can deadlock
    if memory reclaim tries to lock the inode buffer during inode
    teardown. Convert the relevant memory allocations to use KM_NOFS to
    avoid this deadlock condition.
    
    Reported-by: Peter Watkins <treestem@xxxxxxxxx>
    Signed-off-by: Dave Chinner <dchinner@xxxxxxxxxx>
    Reviewed-by: Christoph Hellwig <hch@xxxxxx>
    Reviewed-by: Alex Elder <aelder@xxxxxxx>
    Signed-off-by: Dave Chinner <david@xxxxxxxxxxxxx>

commit 438697064aaa2f64e0fcc6586582a3e7ec36005b
Author: Dave Chinner <dchinner@xxxxxxxxxx>
Date:   Tue Jul 20 17:53:44 2010 +1000

    xfs: fix xfs_trans_add_item() lockdep warnings
    
    xfs_trans_add_item() is called with ip->i_ilock held, which means it
    is unsafe for memory reclaim to recurse back into the filesystem
    (ilock is required in writeback). Hence the allocation needs to be
    KM_NOFS to avoid recursion.
    
    Lockdep report indicating memory allocation being called with the
    ip->i_ilock held is as follows:
    
    [ 1749.866796] =================================
    [ 1749.867788] [ INFO: inconsistent lock state ]
    [ 1749.868327] 2.6.35-rc3-dgc+ #25
    [ 1749.868741] ---------------------------------
    [ 1749.868741] inconsistent {IN-RECLAIM_FS-W} -> {RECLAIM_FS-ON-W} usage.
    [ 1749.868741] dd/2835 [HC0[0]:SC0[0]:HE1:SE1] takes:
    [ 1749.868741]  (&(&ip->i_lock)->mr_lock){++++?.}, at: [<ffffffff813170fb>] xfs_ilock+0x10b/0x190
    [ 1749.868741] {IN-RECLAIM_FS-W} state was registered at:
    [ 1749.868741]   [<ffffffff810b3a97>] __lock_acquire+0x437/0x1450
    [ 1749.868741]   [<ffffffff810b4b56>] lock_acquire+0xa6/0x160
    [ 1749.868741]   [<ffffffff810a20b5>] down_write_nested+0x65/0xb0
    [ 1749.868741]   [<ffffffff813170fb>] xfs_ilock+0x10b/0x190
    [ 1749.868741]   [<ffffffff8134e819>] xfs_reclaim_inode+0x99/0x310
    [ 1749.868741]   [<ffffffff8134f56b>] xfs_inode_ag_walk+0x8b/0x150
    [ 1749.868741]   [<ffffffff8134f6bb>] xfs_inode_ag_iterator+0x8b/0xf0
    [ 1749.868741]   [<ffffffff8134f7a8>] xfs_reclaim_inode_shrink+0x88/0x90
    [ 1749.868741]   [<ffffffff81119d07>] shrink_slab+0x137/0x1a0
    [ 1749.868741]   [<ffffffff8111bbe1>] balance_pgdat+0x421/0x6a0
    [ 1749.868741]   [<ffffffff8111bf7d>] kswapd+0x11d/0x320
    [ 1749.868741]   [<ffffffff8109ce56>] kthread+0x96/0xa0
    [ 1749.868741]   [<ffffffff81035de4>] kernel_thread_helper+0x4/0x10
    [ 1749.868741] irq event stamp: 4234335
    [ 1749.868741] hardirqs last  enabled at (4234335): [<ffffffff81147d25>] kmem_cache_free+0x115/0x220
    [ 1749.868741] hardirqs last disabled at (4234334): [<ffffffff81147c4d>] kmem_cache_free+0x3d/0x220
    [ 1749.868741] softirqs last  enabled at (4233112): [<ffffffff81084dd2>] __do_softirq+0x142/0x260
    [ 1749.868741] softirqs last disabled at (4233095): [<ffffffff81035edc>] call_softirq+0x1c/0x50
    [ 1749.868741]
    [ 1749.868741] other info that might help us debug this:
    [ 1749.868741] 2 locks held by dd/2835:
    [ 1749.868741]  #0:  (&(&ip->i_iolock)->mr_lock#2){+.+.+.}, at: [<ffffffff81316edd>] xfs_ilock_nowait+0xed/0x200
    [ 1749.868741]  #1:  (&(&ip->i_lock)->mr_lock){++++?.}, at: [<ffffffff813170fb>] xfs_ilock+0x10b/0x190
    [ 1749.868741]
    [ 1749.868741] stack backtrace:
    [ 1749.868741] Pid: 2835, comm: dd Not tainted 2.6.35-rc3-dgc+ #25
    [ 1749.868741] Call Trace:
    [ 1749.868741]  [<ffffffff810b1faa>] print_usage_bug+0x18a/0x190
    [ 1749.868741]  [<ffffffff8104264f>] ? save_stack_trace+0x2f/0x50
    [ 1749.868741]  [<ffffffff810b2400>] ? check_usage_backwards+0x0/0xf0
    [ 1749.868741]  [<ffffffff810b2f11>] mark_lock+0x331/0x400
    [ 1749.868741]  [<ffffffff810b3047>] mark_held_locks+0x67/0x90
    [ 1749.868741]  [<ffffffff810b3111>] lockdep_trace_alloc+0xa1/0xe0
    [ 1749.868741]  [<ffffffff81147419>] kmem_cache_alloc+0x39/0x1e0
    [ 1749.868741]  [<ffffffff8133f954>] kmem_zone_alloc+0x94/0xe0
    [ 1749.868741]  [<ffffffff8133f9be>] kmem_zone_zalloc+0x1e/0x50
    [ 1749.868741]  [<ffffffff81335f02>] xfs_trans_add_item+0x72/0xb0
    [ 1749.868741]  [<ffffffff81339e41>] xfs_trans_ijoin+0xa1/0xd0
    [ 1749.868741]  [<ffffffff81319f82>] xfs_itruncate_finish+0x312/0x5d0
    [ 1749.868741]  [<ffffffff8133cb87>] xfs_free_eofblocks+0x227/0x280
    [ 1749.868741]  [<ffffffff8133cd18>] xfs_release+0x138/0x190
    [ 1749.868741]  [<ffffffff813464c5>] xfs_file_release+0x15/0x20
    [ 1749.868741]  [<ffffffff81150ebf>] fput+0x13f/0x260
    [ 1749.868741]  [<ffffffff8114d8c2>] filp_close+0x52/0x80
    [ 1749.868741]  [<ffffffff8114d9a9>] sys_close+0xb9/0x120
    [ 1749.868741]  [<ffffffff81034ff2>] system_call_fastpath+0x16/0x1b
    
    Signed-off-by: Dave Chinner <dchinner@xxxxxxxxxx>
    Reviewed-by: Christoph Hellwig <hch@xxxxxx>
    Reviewed-by: Alex Elder <aelder@xxxxxxx>
    Signed-off-by: Dave Chinner <david@xxxxxxxxxxxxx>

commit 2f11feabb19748c0ffa2eb82d438e8a91b9f6ea0
Author: Dave Chinner <dchinner@xxxxxxxxxx>
Date:   Tue Jul 20 17:53:25 2010 +1000

    xfs: simplify and remove xfs_ireclaim
    
    xfs_ireclaim has to get and put te pag structure because it is only
    called with the inode to reclaim. The one caller of this function
    already has a reference on the pag and a pointer to is, so move the
    radix tree delete to the caller and remove xfs_ireclaim completely.
    This avoids a xfs_perag_get/put on every inode being reclaimed.
    
    The overhead was noticed in a bug report at:
    
    https://bugzilla.kernel.org/show_bug.cgi?id=16348
    
    Signed-off-by: Dave Chinner <dchinner@xxxxxxxxxx>
    Reviewed-by: Christoph Hellwig <hch@xxxxxx>
    Reviewed-by: Alex Elder <aelder@xxxxxxx>
    Signed-off-by: Dave Chinner <david@xxxxxxxxxxxxx>

commit ec53d1dbb3ca960e7b552397613358ba1dbd12bd
Author: Dave Chinner <dchinner@xxxxxxxxxx>
Date:   Tue Jul 20 17:52:59 2010 +1000

    xfs: don't block on buffer read errors
    
    xfs_buf_read() fails to detect dispatch errors before attempting to
    wait on sychronous IO. If there was an error, it will get stuck
    forever, waiting for an I/O that was never started. Make sure the
    error is detected correctly.
    
    Further, such a failure can leave locked pages in the page cache
    which will cause a later operation to hang on the page. Ensure that
    we correctly process pages in the buffers when we get a dispatch
    error.
    
    Signed-off-by: Dave Chinner <dchinner@xxxxxxxxxx>
    Reviewed-by: Christoph Hellwig <hch@xxxxxx>
    Signed-off-by: Dave Chinner <david@xxxxxxxxxxxxx>

commit a4190f90b4e22bde8b01b0086e00dd95439e2edd
Author: Dave Chinner <david@xxxxxxxxxxxxx>
Date:   Mon Jul 12 06:40:58 2010 +0000

    xfs: move inode shrinker unregister even earlier
    
    I missed Dave Chinner's second revision of this change, and pushed
    his first version out to the repository instead.
    
    	commit a476c59ebb279d738718edc0e3fb76aab3687114
    	Author: Dave Chinner <dchinner@xxxxxxxxxx>
    
    This commit compensates for that by moving a block of code up a bit
    further, with a result that matches the the effect of Dave's second
    version.
    
    Dave's first version was:
    	Reviewed-by: Eric Sandeen <sandeen@xxxxxxxxxx>
    Dave's second version was:
    	Reviewed-by: Christoph Hellwig <hch@xxxxxx>
    
    Signed-off-by: Alex Elder <aelder@xxxxxxx>
    Reviewed-by: Eric Sandeen <sandeen@xxxxxxxxxx>

commit fa17b25e9f95375081b43a741cf1c188682ec588
Author: Christoph Hellwig <hch@xxxxxxxxxxxxx>
Date:   Sat Jul 3 09:21:17 2010 +0000

    xfs: remove a dmapi leftover
    
    The open_exec file operation is only added by the external dmapi
    patch.
    
    Signed-off-by: Christoph Hellwig <hch@xxxxxx>
    Reviewed-by: Alex Elder <aelder@xxxxxxx>
    Signed-off-by: Alex Elder <aelder@xxxxxxx>

commit 78558fe8d8326b2395da33456cd9eec57ffc081a
Author: Christoph Hellwig <hch@xxxxxxxxxxxxx>
Date:   Mon Jun 28 10:34:57 2010 -0400

    xfs: writepage always has buffers
    
    These days we always have buffers thanks to ->page_mkwrite.  And we
    already have an assert a few lines above tripping in case that was
    not true due to a bug.
    
    Signed-off-by: Christoph Hellwig <hch@xxxxxx>
    Signed-off-by: Alex Elder <aelder@xxxxxxx>

commit d4f7a5cbd5449a3d2097f601f588886ea7b70dc3
Author: Christoph Hellwig <hch@xxxxxxxxxxxxx>
Date:   Mon Jun 28 10:34:44 2010 -0400

    xfs: allow writeback from kswapd
    
    We only need disable I/O from direct or memcg reclaim.
    
    Signed-off-by: Christoph Hellwig <hch@xxxxxx>
    Signed-off-by: Alex Elder <aelder@xxxxxxx>

commit 651701d71da4dc0ac607f17a638e77906f0d280e
Author: Christoph Hellwig <hch@xxxxxxxxxxxxx>
Date:   Mon Jun 28 10:34:34 2010 -0400

    xfs: remove incorrect log write optimization
    
    We do need a barrier for the first buffer of a split log write.
    Otherwise we might incorrectly stamp the tail LSN into transactions
    in the first part of the split write, or not flush data I/O before
    updating the inode size.
    
    Signed-off-by: Christoph Hellwig <hch@xxxxxx>
    Signed-off-by: Alex Elder <aelder@xxxxxxx>

commit 2727ccc950ae17375b15005403e1c35ba8fec1df
Author: Dave Chinner <dchinner@xxxxxxxxxx>
Date:   Fri Jun 25 11:08:40 2010 +1000

    xfs: unregister inode shrinker before freeing filesystem structures
    
    Currently we don't remove the XFS mount from the shrinker list until
    late in the unmount path. By this time, we have already torn down
    the internals of the filesystem (e.g. the per-ag structures), and
    hence if the shrinker is executed between the teardown and the
    unregistering, the shrinker will get NULL per-ag structure pointers
    and panic trying to dereference them.
    
    Fix this by removing the xfs mount from the shrinker list before
    tearing down it's internal structures.
    
    Signed-off-by: Dave Chinner <dchinner@xxxxxxxxxx>
    Reviewed-by: Eric Sandeen <sandeen@xxxxxxxxxx>
    Signed-off-by: Alex Elder <aelder@xxxxxxx>

commit cca28fb83d9e60779bb348edc33a62068e5f04a4
Author: Christoph Hellwig <hch@xxxxxxxxxxxxx>
Date:   Thu Jun 24 11:57:09 2010 +1000

    xfs: split xfs_itrace_entry
    
    Replace the xfs_itrace_entry catchall with specific trace points.  For
    most simple callers we now use the simple inode class, which used to
    be the iget class, but add more details tracing for namespace events,
    which now includes the name of the directory entries manipulated.
    
    Remove the xfs_inactive trace point, which is a duplicate of the clear_inode
    one, and the xfs_change_file_space trace point, which is immediately
    followed by the more specific alloc/free space trace points.
    
    Signed-off-by: Christoph Hellwig <hch@xxxxxx>
    Reviewed-by: Dave Chinner <dchinner@xxxxxxxxxx>

commit f2d6761433d69d94e0b39ac44ef0f0f0b0508065
Author: Christoph Hellwig <hch@xxxxxxxxxxxxx>
Date:   Thu Jun 24 11:52:50 2010 +1000

    xfs: remove xfs_iput
    
    xfs_iput is just a small wrapper for xfs_iunlock + IRELE.  Having this
    out of line wrapper means the trace events in those two can't track
    their caller properly.  So just remove the wrapper and opencode the
    unlock + rele in the few callers.
    
    Signed-off-by: Christoph Hellwig <hch@xxxxxx>
    Reviewed-by: Dave Chinner <dchinner@xxxxxxxxxx>

commit ef35e9255d4ed12522e836fbcec861e7306d794a
Author: Christoph Hellwig <hch@xxxxxxxxxxxxx>
Date:   Thu Jun 24 11:51:19 2010 +1000

    xfs: remove xfs_iput_new
    
    We never get an i_mode of 0 or a locked VFS inode until we pass in the
    XFS_IGET_CREATE flag to xfs_iget, which makes xfs_iput_new equivalent to
    xfs_iput for the only caller.  In addition to that xfs_nfs_get_inode
    does not even need to lock the inode given that the generation never changes
    for a life inode, so just pass a 0 lock_flags to xfs_iget and release
    the inode using IRELE in the error path.
    
    Signed-off-by: Christoph Hellwig <hch@xxxxxx>
    Reviewed-by: Dave Chinner <dchinner@xxxxxxxxxx>

commit d2e078c33c24f97411b0fdd7cd2173e68125e7e3
Author: Christoph Hellwig <hch@xxxxxxxxxxxxx>
Date:   Thu Jun 24 11:50:22 2010 +1000

    xfs: some iget tracing cleanups / fixes
    
    The xfs_iget_alloc/found tracepoints are a bit misnamed and misplaced.
    Rename them to xfs_iget_hit/xfs_iget_miss and move them to the beggining
    of the xfs_iget_cache_hit/miss functions.  Add a new xfs_iget_reclaim_fail
    tracepoint for the case where we fail to re-initialize a VFS inode,
    and add a second instance of the xfs_iget_skip tracepoint for the case
    of a failed igrab() call.
    
    Signed-off-by: Christoph Hellwig <hch@xxxxxx>
    Reviewed-by: Dave Chinner <dchinner@xxxxxxxxxx>

commit 807cbbdb438d172b87b380eebc1f1c1a5a3549b2
Author: Christoph Hellwig <hch@xxxxxxxxxxxxx>
Date:   Thu Jun 24 11:49:12 2010 +1000

    xfs: do not use emums for flags used in tracing
    
    The tracing code can't print flags defined as enums.  Most flags that
    we want to print are defines as macros already, but move the few remaining
    ones over to make the trace output more useful.
    
    Signed-off-by: Christoph Hellwig <hch@xxxxxx>
    Reviewed-by: Dave Chinner <dchinner@xxxxxxxxxx>

commit 64c86149410bc62d9ac27a0594b3402a2aca03d8
Author: Christoph Hellwig <hch@xxxxxxxxxxxxx>
Date:   Thu Jun 24 11:45:34 2010 +1000

    xfs: remove explicit xfs_sync_data/xfs_sync_attr calls on umount
    
    On the final put of a superblock the VFS already calls sync_filesystem
    for us to write out all data and wait for it.  No need to start another
    asynchronous writeback inside ->put_super.
    
    Signed-off-by: Christoph Hellwig <hch@xxxxxx>
    Reviewed-by: Dave Chinner <dchinner@xxxxxxxxxx>

commit f2bde9b89b4d67c9bc3b963cb996f449ddcd27a4
Author: Christoph Hellwig <hch@xxxxxxxxxxxxx>
Date:   Thu Jun 24 11:44:35 2010 +1000

    xfs: small cleanups for xfs_iomap / __xfs_get_blocks
    
    Remove the flags argument to  __xfs_get_blocks as we can easily derive
    it from the direct argument, and remove the unused BMAPI_MMAP flag.
    
    Signed-off-by: Christoph Hellwig <hch@xxxxxx>
    Reviewed-by: Dave Chinner <dchinner@xxxxxxxxxx>

commit 3070451eea1ed8e3bde0573183c7d8ac25fd5e97
Author: Christoph Hellwig <hch@xxxxxxxxxxxxx>
Date:   Thu Jun 24 11:42:19 2010 +1000

    xfs: reduce stack usage in xfs_iomap
    
    xfs_iomap passes a xfs_bmbt_irec pointer to xfs_iomap_write_direct and
    xfs_iomap_write_allocate to give them the results of our read-only
    xfs_bmapi query.  Instead of allocating a new xfs_bmbt_irec on stack
    for the next call to xfs_bmapi re use the one we got passed as it's not
    used after this point.
    
    Signed-off-by: Christoph Hellwig <hch@xxxxxx>
    Reviewed-by: Dave Chinner <dchinner@xxxxxxxxxx>

commit 7a36c8a98a7dd05756bb147be2ac350325ff5830
Author: Christoph Hellwig <hch@xxxxxxxxxxxxx>
Date:   Thu Jun 24 11:39:25 2010 +1000

    xfs: avoid synchronous transaction in xfs_fs_write_inode
    
    We already rely on the fact that the sync code will cause a synchronous
    log force later on (currently via xfs_fs_sync_fs -> xfs_quiesce_data ->
    xfs_sync_data), so no need to do this here.  This allows us to avoid
    a lot of synchronous log forces during sync, which pays of especially
    with delayed logging enabled.   Some compilebench numbers that show
    this:
    
    xfs (delayed logging, 256k logbufs)
    ===================================
    
    intial create		  25.94 MB/s	  25.75 MB/s	  25.64 MB/s
    create			   8.54 MB/s	   9.12 MB/s	   9.15 MB/s
    patch			   2.47 MB/s	   2.47 MB/s	   3.17 MB/s
    compile			  29.65 MB/s	  30.51 MB/s	  27.33 MB/s
    clean			  90.92 MB/s	  98.83 MB/s	 128.87 MB/s
    read tree		  11.90 MB/s	  11.84 MB/s	   8.56 MB/s
    read compiled		  28.75 MB/s	  29.96 MB/s	  24.25 MB/s
    delete tree		8.39 seconds	8.12 seconds	8.46 seconds
    delete compiled		8.35 seconds	8.44 seconds	5.11 seconds
    stat tree		6.03 seconds	5.59 seconds	5.19 seconds
    stat compiled tree	9.00 seconds	9.52 seconds	8.49 seconds
    
    xfs + write_inode log_force removal
    ===================================
    intial create		  25.87 MB/s	  25.76 MB/s	  25.87 MB/s
    create			  15.18 MB/s	  14.80 MB/s	  14.94 MB/s
    patch			   3.13 MB/s	   3.14 MB/s	   3.11 MB/s
    compile			  36.74 MB/s	  37.17 MB/s	  36.84 MB/s
    clean			 226.02 MB/s	 222.58 MB/s	 217.94 MB/s
    read tree		  15.14 MB/s	  15.02 MB/s	  15.14 MB/s
    read compiled tree	  29.30 MB/s	  29.31 MB/s	  29.32 MB/s
    delete tree		6.22 seconds	6.14 seconds	6.15 seconds
    delete compiled tree	5.75 seconds	5.92 seconds	5.81 seconds
    stat tree		4.60 seconds	4.51 seconds	4.56 seconds
    stat compiled tree	4.07 seconds	3.87 seconds	3.96 seconds
    
    In addition to that also remove the delwri inode flush that is unessecary
    now that bulkstat is always coherent.
    
    Signed-off-by: Christoph Hellwig <hch@xxxxxx>
    Reviewed-by: Dave Chinner <dchinner@xxxxxxxxxx>

commit 20cb52ebd1b5ca6fa8a5d9b6b1392292f5ca8a45
Author: Christoph Hellwig <hch@xxxxxxxxxxxxx>
Date:   Thu Jun 24 09:46:01 2010 +1000

    xfs: simplify xfs_vm_writepage
    
    The writepage implementation in XFS still tries to deal with dirty but
    unmapped buffers which used to caused by writes through shared mmaps.  Since
    the introduction of ->page_mkwrite these can't happen anymore, so remove the
    code dealing with them.
    
    Note that the all_bh variable which causes us to start I/O on all buffers on
    the pages was controlled by the count of unmapped buffers, which also
    included those not actually dirty.  It's now unconditionally initialized to
    0 but set to 1 for the case of small file size extensions.  It probably can
    be removed entirely, but that's left for another patch.
    
    Signed-off-by: Christoph Hellwig <hch@xxxxxx>
    Reviewed-by: Dave Chinner <dchinner@xxxxxxxxxx>

commit 89f3b363967a958e756a549c8747c1fb9c930c1a
Author: Christoph Hellwig <hch@xxxxxxxxxxxxx>
Date:   Thu Jun 24 09:45:48 2010 +1000

    xfs: simplify xfs_vm_releasepage
    
    Currently the xfs releasepage implementation has code to deal with converting
    delayed allocated and unwritten space.  But we never get called for those as
    we always convert delayed and unwritten space when cleaning a page, or drop
    the state from the buffers in block_invalidatepage.  We still keep a WARN_ON
    on those cases for now, but remove all the case dealing with it, which allows
    to fold xfs_page_state_convert into xfs_vm_writepage and remove the !startio
    case from the whole writeback path.
    
    Signed-off-by: Christoph Hellwig <hch@xxxxxx>
    Reviewed-by: Dave Chinner <dchinner@xxxxxxxxxx>

commit 3d9b02e3c76531687ab5314e0edf266256f13c2d
Author: Eric Sandeen <sandeen@xxxxxxxxxxx>
Date:   Thu Jun 24 09:45:30 2010 +1000

    xfs: fix corruption case for block size < page size
    
    xfstests 194 first truncats a file back and then extends it again by
    truncating it to a larger size.  This causes discard_buffer to drop
    the mapped, but not the uptodate bit and thus creates something that
    xfs_page_state_convert takes for unmapped space created by mmap because
    it doesn't check for the dirty bit, which also gets cleared by
    discard_buffer and checked by other ->writepage implementations like
    block_write_full_page.  Handle this kind of buffers early, and unlike
    Eric's first version of the patch simply ASSERT that the buffers is
    dirty, given that the mmap write case can't happen anymore since the
    introduction of ->page_mkwrite.  The now dead code dealing with that
    will be deleted in a follow on patch.
    
    Signed-off-by: Eric Sandeen <sandeen@xxxxxxxxxxx>
    Signed-off-by: Christoph Hellwig <hch@xxxxxx>
    Reviewed-by: Dave Chinner <dchinner@xxxxxxxxxx>

commit b4e9181e772b0c8b9038c5822ead368b96c2b533
Author: Christoph Hellwig <hch@xxxxxxxxxxxxx>
Date:   Wed Jun 23 18:11:15 2010 +1000

    xfs: remove unused delta tracking code in xfs_bmapi
    
    This code was introduced four years ago in commit
    3e57ecf640428c01ba1ed8c8fc538447ada1715b without any review and has
    been unused since.  Remove it just as the rest of the code introduced
    in that commit to reduce that stack usage and complexity in this central
    piece of code.
    
    Signed-off-by: Christoph Hellwig <hch@xxxxxx>
    Reviewed-by: Dave Chinner <dchinner@xxxxxxxxxx>

commit cd8b0bb3c49d0691e9e7b4cf19e21ca63b92c053
Author: Christoph Hellwig <hch@xxxxxxxxxxxxx>
Date:   Wed Jun 23 18:11:15 2010 +1000

    xfs: remove unused XFS_BMAPI_ flags
    
    Signed-off-by: Christoph Hellwig <hch@xxxxxx>
    Reviewed-by: Dave Chinner <dchinner@xxxxxxxxxx>

commit a59f55703c3725b2fa582924f51db62b58be05bb
Author: Christoph Hellwig <hch@xxxxxxxxxxxxx>
Date:   Wed Jun 23 18:11:15 2010 +1000

    xfs: remove the unused XFS_TRANS_NOSLEEP/XFS_TRANS_WAIT flags
    
    Signed-off-by: Christoph Hellwig <hch@xxxxxx>
    Reviewed-by: Dave Chinner <dchinner@xxxxxxxxxx>

commit 9134c2332ecb9154860669d778ef2808f06503ec
Author: Christoph Hellwig <hch@xxxxxxxxxxxxx>
Date:   Wed Jun 23 18:11:15 2010 +1000

    xfs: remove the unused XFS_LOG_SLEEP and XFS_LOG_NOSLEEP flags
    
    Signed-off-by: Christoph Hellwig <hch@xxxxxx>
    Reviewed-by: Dave Chinner <dchinner@xxxxxxxxxx>

commit dbb2f6529feeee8f4de77849edeee2e60c40c805
Author: Christoph Hellwig <hch@xxxxxxxxxxxxx>
Date:   Wed Jun 23 18:11:15 2010 +1000

    xfs: kill the unused xlog_debug variable
    
    Signed-off-by: Christoph Hellwig <hch@xxxxxx>
    Reviewed-by: Dave Chinner <dchinner@xxxxxxxxxx>

commit 4e0d5f926b80b06234a4ed664d6ae8c54fb08c4b
Author: Christoph Hellwig <hch@xxxxxxxxxxxxx>
Date:   Wed Jun 23 18:11:15 2010 +1000

    xfs: fix the xfs_log_iovec i_addr type
    
    By making this member a void pointer we can get rid of a lot of pointless
    casts.
    
    Signed-off-by: Christoph Hellwig <hch@xxxxxx>
    Reviewed-by: Dave Chinner <dchinner@xxxxxxxxxx>

commit 898621d5a72c6799a9a13fce20443b4b6699899c
Author: Christoph Hellwig <hch@xxxxxxxxxxxxx>
Date:   Thu Jun 24 11:36:58 2010 +1000

    xfs: simplify inode to transaction joining
    
    Currently we need to either call IHOLD or xfs_trans_ihold on an inode when
    joining it to a transaction via xfs_trans_ijoin.
    
    This patches instead makes xfs_trans_ijoin usable on it's own by doing
    an implicity xfs_trans_ihold, which also allows us to drop the third
    argument.  For the case where we want to hold a reference on the inode
    a xfs_trans_ijoin_ref wrapper is added which does the IHOLD and marks
    the inode for needing an xfs_iput.  In addition to the cleaner interface
    to the caller this also simplifies the implementation.
    
    Signed-off-by: Christoph Hellwig <hch@xxxxxx>
    Reviewed-by: Dave Chinner <dchinner@xxxxxxxxxx>

commit 4d16e9246fc3b3cf7bc95609eff66929a39daa06
Author: Christoph Hellwig <hch@xxxxxxxxxxxxx>
Date:   Wed Jun 23 18:11:15 2010 +1000

    xfs: simplify buffer pinning
    
    Get rid of the xfs_buf_pin/xfs_buf_unpin/xfs_buf_ispin helpers and opencode
    them in their only callers, just like we did for the inode pinning a while
    ago.  Also remove duplicate trace points - the bufitem tracepoints cover
    all the information that is present in a buffer tracepoint.
    
    Signed-off-by: Christoph Hellwig <hch@xxxxxx>
    Reviewed-by: Dave Chinner <dchinner@xxxxxxxxxx>

commit ca30b2a7b7ac899ac4da6030ccbebf2f137b8e6d
Author: Christoph Hellwig <hch@xxxxxxxxxxxxx>
Date:   Wed Jun 23 18:11:15 2010 +1000

    xfs: give li_cb callbacks the correct prototype
    
    Stop the function pointer casting madness and give all the li_cb instances
    correct prototype.
    
    Signed-off-by: Christoph Hellwig <hch@xxxxxx>
    Reviewed-by: Dave Chinner <dchinner@xxxxxxxxxx>

commit 7bfa31d8e0f90b65ff23be94fca65ce261b43fc8
Author: Christoph Hellwig <hch@xxxxxxxxxxxxx>
Date:   Wed Jun 23 18:11:15 2010 +1000

    xfs: give xfs_item_ops methods the correct prototypes
    
    Stop the function pointer casting madness and give all the xfs_item_ops the
    correct prototypes.
    
    Signed-off-by: Christoph Hellwig <hch@xxxxxx>
    Reviewed-by: Dave Chinner <dchinner@xxxxxxxxxx>

commit 9412e3181c0ef82efc3d8e88d73e583ec10c34e9
Author: Christoph Hellwig <hch@xxxxxxxxxxxxx>
Date:   Wed Jun 23 18:11:15 2010 +1000

    xfs: merge iop_unpin_remove into iop_unpin
    
    The unpin_remove item operation instances always share most of the
    implementation with the respective unpin implementation.  So instead
    of keeping two different entry points add a remove flag to the unpin
    operation and share the code more easily.
    
    Signed-off-by: Christoph Hellwig <hch@xxxxxx>
    Reviewed-by: Dave Chinner <dchinner@xxxxxxxxxx>

commit e98c414f9a3134fe7efc56ef8f1d394b54bfd40e
Author: Christoph Hellwig <hch@xxxxxxxxxxxxx>
Date:   Wed Jun 23 18:11:15 2010 +1000

    xfs: simplify log item descriptor tracking
    
    Currently we track log item descriptor belonging to a transaction using a
    complex opencoded chunk allocator.  This code has been there since day one
    and seems to work around the lack of an efficient slab allocator.
    
    This patch replaces it with dynamically allocated log item descriptors
    from a dedicated slab pool, linked to the transaction by a linked list.
    
    This allows to greatly simplify the log item descriptor tracking to the
    point where it's just a couple hundred lines in xfs_trans.c instead of
    a separate file.  The external API has also been simplified while we're
    at it - the xfs_trans_add_item and xfs_trans_del_item functions to add/
    delete items from a transaction have been simplified to the bare minium,
    and the xfs_trans_find_item function is replaced with a direct dereference
    of the li_desc field.  All debug code walking the list of log items in
    a transaction is down to a simple list_for_each_entry.
    
    Note that we could easily use a singly linked list here instead of the
    double linked list from list.h as the fastpath only does deletion from
    sequential traversal.  But given that we don't have one available as
    a library function yet I use the list.h functions for simplicity.
    
    Signed-off-by: Christoph Hellwig <hch@xxxxxx>
    Reviewed-by: Dave Chinner <dchinner@xxxxxxxxxx>

commit 3400777ff03a3cd4fdbc6cb15676fc7e7ceefc00
Author: Christoph Hellwig <hch@xxxxxxxxxxxxx>
Date:   Wed Jun 23 18:11:15 2010 +1000

    xfs: remove unneeded #include statements
    
    Signed-off-by: Christoph Hellwig <hch@xxxxxx>
    Reviewed-by: Dave Chinner <david@xxxxxxxxxxxxx>

commit 288699fecaffa1ef8f75f92020cbb593a772e487
Author: Christoph Hellwig <hch@xxxxxxxxxxxxx>
Date:   Wed Jun 23 18:11:15 2010 +1000

    xfs: drop dmapi hooks
    
    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: Christoph Hellwig <hch@xxxxxx>
    Reviewed-by: Dave Chinner <dchinner@xxxxxxxxxx>

commit 16fd5367370099b59d96e30bb7d9de8d419659f2
Author: Dave Chinner <dchinner@xxxxxxxxxx>
Date:   Tue Jul 20 09:43:39 2010 +1000

    xfs: track AGs with reclaimable inodes in per-ag radix tree
    
    https://bugzilla.kernel.org/show_bug.cgi?id=16348
    
    When the filesystem grows to a large number of allocation groups,
    the summing of recalimable inodes gets expensive. In many cases,
    most AGs won't have any reclaimable inodes and so we are wasting CPU
    time aggregating over these AGs. This is particularly important for
    the inode shrinker that gets called frequently under memory
    pressure.
    
    To avoid the overhead, track AGs with reclaimable inodes in the
    per-ag radix tree so that we can find all the AGs with reclaimable
    inodes via a simple gang tag lookup. This involves setting the tag
    when the first reclaimable inode is tracked in the AG, and removing
    the tag when the last reclaimable inode is removed from the tree.
    Then the summation process becomes a loop walking the radix tree
    summing AGs with the reclaim tag set.
    
    This significantly reduces the overhead of scanning - a 6400 AG
    filesystea now only uses about 25% of a cpu in kswapd while slab
    reclaim progresses instead of being permanently stuck at 100% CPU
    and making little progress. Clean filesystems filesystems will see
    no overhead and the overhead only increases linearly with the number
    of dirty AGs.
    
    Signed-off-by: Dave Chinner <dchinner@xxxxxxxxxx>
    Reviewed-by: Christoph Hellwig <hch@xxxxxx>

commit 70e60ce71516c3a9e882edb70a09f696a05961db
Author: Dave Chinner <dchinner@xxxxxxxxxx>
Date:   Tue Jul 20 08:07:02 2010 +1000

    xfs: convert inode shrinker to per-filesystem contexts
    
    Now the shrinker passes us a context, wire up a shrinker context per
    filesystem. This allows us to remove the global mount list and the
    locking problems that introduced. It also means that a shrinker call
    does not need to traverse clean filesystems before finding a
    filesystem with reclaimable inodes.  This significantly reduces
    scanning overhead when lots of filesystems are present.
    
    Signed-off-by: Dave Chinner <dchinner@xxxxxxxxxx>
    Reviewed-by: Christoph Hellwig <hch@xxxxxx>

commit 7f8275d0d660c146de6ee3017e1e2e594c49e820
Author: Dave Chinner <dchinner@xxxxxxxxxx>
Date:   Mon Jul 19 14:56:17 2010 +1000

    mm: add context argument to shrinker callback
    
    The current shrinker implementation requires the registered callback
    to have global state to work from. This makes it difficult to shrink
    caches that are not global (e.g. per-filesystem caches). Pass the shrinker
    structure to the callback so that users can embed the shrinker structure
    in the context the shrinker needs to operate on and get back to it in the
    callback via container_of().
    
    Signed-off-by: Dave Chinner <dchinner@xxxxxxxxxx>
    Reviewed-by: Christoph Hellwig <hch@xxxxxx>

-----------------------------------------------------------------------

Summary of changes:
 fs/xfs/Makefile                   |    4 +-
 fs/xfs/linux-2.6/xfs_acl.c        |    2 +-
 fs/xfs/linux-2.6/xfs_aops.c       |  611 +++++++++++++------------------------
 fs/xfs/linux-2.6/xfs_aops.h       |    4 +-
 fs/xfs/linux-2.6/xfs_buf.c        |   67 ++---
 fs/xfs/linux-2.6/xfs_buf.h        |  119 ++++----
 fs/xfs/linux-2.6/xfs_dmapi_priv.h |   28 --
 fs/xfs/linux-2.6/xfs_export.c     |    8 +-
 fs/xfs/linux-2.6/xfs_file.c       |  104 +------
 fs/xfs/linux-2.6/xfs_fs_subr.c    |    4 -
 fs/xfs/linux-2.6/xfs_fs_subr.h    |   25 --
 fs/xfs/linux-2.6/xfs_ioctl.c      |   27 +--
 fs/xfs/linux-2.6/xfs_ioctl32.c    |    6 +-
 fs/xfs/linux-2.6/xfs_iops.c       |   10 +-
 fs/xfs/linux-2.6/xfs_linux.h      |    1 -
 fs/xfs/linux-2.6/xfs_quotaops.c   |    1 -
 fs/xfs/linux-2.6/xfs_super.c      |  173 ++++--------
 fs/xfs/linux-2.6/xfs_super.h      |    7 -
 fs/xfs/linux-2.6/xfs_sync.c       |  179 +++++++-----
 fs/xfs/linux-2.6/xfs_sync.h       |    5 -
 fs/xfs/linux-2.6/xfs_trace.c      |    4 -
 fs/xfs/linux-2.6/xfs_trace.h      |  131 ++++++--
 fs/xfs/quota/xfs_dquot.c          |  114 +++----
 fs/xfs/quota/xfs_dquot_item.c     |  301 ++++++++-----------
 fs/xfs/quota/xfs_qm.c             |   22 +-
 fs/xfs/quota/xfs_qm_bhv.c         |   10 -
 fs/xfs/quota/xfs_qm_stats.c       |   10 -
 fs/xfs/quota/xfs_qm_syscalls.c    |   89 ++++--
 fs/xfs/quota/xfs_trans_dquot.c    |   35 +--
 fs/xfs/support/debug.c            |    1 -
 fs/xfs/xfs_alloc.c                |   15 +-
 fs/xfs/xfs_alloc.h                |   20 +-
 fs/xfs/xfs_alloc_btree.c          |    5 -
 fs/xfs/xfs_attr.c                 |   91 ++----
 fs/xfs/xfs_attr_leaf.c            |    5 +-
 fs/xfs/xfs_bmap.c                 |  327 +++-----------------
 fs/xfs/xfs_bmap.h                 |   37 +--
 fs/xfs/xfs_bmap_btree.c           |    5 -
 fs/xfs/xfs_btree.c                |    5 -
 fs/xfs/xfs_buf_item.c             |  228 +++++++--------
 fs/xfs/xfs_buf_item.h             |    2 +-
 fs/xfs/xfs_da_btree.c             |   20 +-
 fs/xfs/xfs_dfrag.c                |   16 +-
 fs/xfs/xfs_dir2.c                 |   11 +-
 fs/xfs/xfs_dir2_block.c           |    8 +-
 fs/xfs/xfs_dir2_data.c            |    2 -
 fs/xfs/xfs_dir2_leaf.c            |    4 +-
 fs/xfs/xfs_dir2_node.c            |    2 -
 fs/xfs/xfs_dir2_sf.c              |    2 -
 fs/xfs/xfs_dmapi.h                |  170 ----------
 fs/xfs/xfs_dmops.c                |   55 ----
 fs/xfs/xfs_error.c                |    4 -
 fs/xfs/xfs_extfree_item.c         |  278 +++++++----------
 fs/xfs/xfs_filestream.c           |   84 +++++-
 fs/xfs/xfs_filestream.h           |   82 -----
 fs/xfs/xfs_fsops.c                |    7 +-
 fs/xfs/xfs_ialloc.c               |    4 -
 fs/xfs/xfs_ialloc_btree.c         |    4 -
 fs/xfs/xfs_iget.c                 |  108 +-------
 fs/xfs/xfs_inode.c                |   60 ++---
 fs/xfs/xfs_inode.h                |    4 +-
 fs/xfs/xfs_inode_item.c           |  273 ++++++-----------
 fs/xfs/xfs_inode_item.h           |   12 +-
 fs/xfs/xfs_iomap.c                |   76 +++---
 fs/xfs/xfs_iomap.h                |   22 +-
 fs/xfs/xfs_itable.c               |    8 +-
 fs/xfs/xfs_log.c                  |   16 +-
 fs/xfs/xfs_log.h                  |   11 +-
 fs/xfs/xfs_log_cil.c              |    4 +-
 fs/xfs/xfs_log_recover.c          |   42 +--
 fs/xfs/xfs_mount.c                |    3 -
 fs/xfs/xfs_mount.h                |   71 +-----
 fs/xfs/xfs_rename.c               |   63 +----
 fs/xfs/xfs_rtalloc.c              |    9 +-
 fs/xfs/xfs_rw.c                   |   15 -
 fs/xfs/xfs_trans.c                |  211 ++++++++-----
 fs/xfs/xfs_trans.h                |  117 +-------
 fs/xfs/xfs_trans_ail.c            |    1 -
 fs/xfs/xfs_trans_buf.c            |   75 +----
 fs/xfs/xfs_trans_extfree.c        |   23 +-
 fs/xfs/xfs_trans_inode.c          |   74 ++---
 fs/xfs/xfs_trans_item.c           |  441 --------------------------
 fs/xfs/xfs_trans_priv.h           |   18 +-
 fs/xfs/xfs_utils.c                |   87 ------
 fs/xfs/xfs_utils.h                |    1 -
 fs/xfs/xfs_vnodeops.c             |  293 ++++--------------
 86 files changed, 1681 insertions(+), 4052 deletions(-)
 delete mode 100644 fs/xfs/linux-2.6/xfs_dmapi_priv.h
 delete mode 100644 fs/xfs/linux-2.6/xfs_fs_subr.h
 delete mode 100644 fs/xfs/xfs_dmapi.h
 delete mode 100644 fs/xfs/xfs_dmops.c
 delete mode 100644 fs/xfs/xfs_trans_item.c


hooks/post-receive
-- 
XFS development tree

_______________________________________________
xfs mailing list
xfs@xxxxxxxxxxx
http://oss.sgi.com/mailman/listinfo/xfs


[Index of Archives]     [Linux XFS Devel]     [Linux Filesystem Development]     [Filesystem Testing]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux