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, master has been updated discards 7346e1197eb76e22199b6b4625f129331e0fd7ac (commit) discards c203b1d4c7f27368df5d6211bf9a621acf32904b (commit) discards 9ecd1fbd13f2518fb7076516300bdaa4d644e6c0 (commit) discards d2ec2c790b3994bf0c4381cacc489b514705887c (commit) discards 0af00e497915cfdbef86298a7541d294c629c4aa (commit) discards ce15629a36583e132397fff67f716b80e618b51c (commit) discards 1b95090f3d3a554a8c018539b8dde1425bdb0a4e (commit) discards 9e69683f392eb5b643f632122c4a6384bd5a9a82 (commit) discards 0fd7275cc42ab734eaa1a2c747e65479bd1e42af (commit) discards 96251696da0ed81b1e201f8a743ce65ea295c499 (commit) discards 4d423a9210b0f279d843982044322b9542b8c2dc (commit) discards 6f6b39eb706f5617750cf02952e4e6d7470c40bf (commit) discards 6af128f6ede206995a6be91beb3358b3afbaa8a6 (commit) discards 4b3ac9d54f2206e03fbfb30e113b05ff262a83e9 (commit) discards a42414455456af00c8040cce7cfc7df3344afbe5 (commit) discards 57bf7d895c6dcda45a2f0610870c81c36ff7bf34 (commit) discards 8687ad50cbd11c52cb14e0d617b001b2bbc94b20 (commit) discards 1a0a6b973a9770bb6092110733aa541d3a331679 (commit) discards adcfeda23fee84212b235331cd71bf3d16dd137c (commit) discards fbe5f2875788e1039f02eeca615e6cb6d761c043 (commit) discards 2c2da2d1514dbc5ffcab05ceb8868d7f173f91f6 (commit) discards ac20d66b86a5ace7650d41d83278f73340e824f4 (commit) discards a476c59ebb279d738718edc0e3fb76aab3687114 (commit) discards 04d2da9c682ce2687db29136c60d8679e37e3b35 (commit) discards 40cf20e1aaa0c94fa3ca37705a9db5b827a99273 (commit) discards 9c54f48f2af30d15e1f5e3144af036a0837a116e (commit) discards 7df0916509fbfe2d8bd3490de1e39bb0d2ffc6bb (commit) discards 13cd0dca8c7b52b5e80059ef7a21735521df1a96 (commit) discards 35d7097b403c958c788e71428fa108cfb07456c7 (commit) discards 9b9ab1e4672253ee18bae00edb991f8497a6a7d7 (commit) discards 3ac7b865fae534c57c843fad3e4329329591d08e (commit) discards c921a20399a561b50f7133035c56c7326e140340 (commit) discards b7227df1e6ea6cb8d7b31c455e9d588d00c54461 (commit) discards 5e2e4677a71656a91b6172293f64e8a8f3cbafed (commit) discards 55683d8397e214a9ea08e90b9755bb63456e140b (commit) discards ecb7fb79f5100c1b1d1349f70af24cdc01d5b8a7 (commit) discards b1f0b2c4ea59ef4a17e526d591a5ab12b8a788b4 (commit) discards 90405d0217a8084f34d56cea566b6579b4fd4c75 (commit) discards d03a4065bb0b7daff105c486c15ffd875d1c67d7 (commit) discards fc1d6b5aff9a580a5a45f33a79a06fb6c621bde9 (commit) discards baa3bf2b3037714c4802b035d3539621e87da528 (commit) discards f8ad0a99b85d9a7f3c748dec6a1d5392e97a6f05 (commit) discards 21232bc9fe3f84753fe8dbdb9113c8a8c98ad648 (commit) discards 54c4ec2b99c7d798f97150fd455111ecf7d6a133 (commit) discards d06d42be75efe6ece46006900492ed98944126aa (commit) discards 6bb167bf274b6472754f6faed24e1afa7373ff08 (commit) discards dec049a8c9a07bdd1f01358b192889d7ef87b1fd (commit) discards e7f0f608611d132a3618f94b0074654d182c47a2 (commit) discards 483cc23865b68712437d3412cb9204d9329b7b08 (commit) 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 from 7346e1197eb76e22199b6b4625f129331e0fd7ac (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> ----------------------------------------------------------------------- Summary of changes: fs/xfs/xfs_inode_item.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) hooks/post-receive -- XFS development tree _______________________________________________ xfs mailing list xfs@xxxxxxxxxxx http://oss.sgi.com/mailman/listinfo/xfs