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-next has been updated a0e881b Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs d9457dc xfs: Convert to new freezing code 37cd960 Merge tag 'for-linus-v3.6-rc1' of git://oss.sgi.com/xfs/xfs 9a57fa8 xfs: wait for the write the superblock on unmount 8375f92 xfs: re-enable xfsaild idle mode and fix associated races 4f59af7 xfs: remove iolock lock classes 5a15322 xfs: avoid the iolock in xfs_free_eofblocks for evicted inodes 0b56185 xfs: do not take the iolock in xfs_inactive fe67be0 xfs: remove xfs_inactive_attrs b373e98 xfs: clean up xfs_inactive be60fe5 xfs: do not read the AGI buffer in xfs_dialloc until nessecary 55d6af6 xfs: refactor xfs_ialloc_ag_select 4bb6106 xfs: add a short cut to xfs_dialloc for the non-NULL agbp case 0835890 xfs: remove the alloc_done argument to xfs_dialloc f2ecc5e xfs: split xfs_dialloc a66d2c8 Merge branch 'for-linus-2' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs 765927b switch dentry_open() to struct path, make it grab references itself 824c313 xfs: remove xfs_ialloc_find_free 0d882a3 Prefix IO_XX flags with XFS_IO_XX to avoid namespace colision. 129dbc9 xfs: remove xfs_inotobp 475ee41 xfs: merge xfs_itobp into xfs_imap_to_bp 6b7a03f xfs: handle EOF correctly in xfs_vm_writepage 69ff282 xfs: implement ->update_time 96ee34b xfs: fix comment typo of struct xfs_da_blkinfo. ebfc3b4 don't pass nameidata to ->create() 00cd8dd stop passing nameidata to ->lookup() 1632dcc xfs: do not call xfs_bdstrat_cb in xfs_buf_iodone_callbacks 40a9b79 xfs: prevent recursion in xfs_buf_iorequest aa29284 xfs: don't defer metadata allocation to the workqueue e3a746f5 xfs: really fix the cursor leak in xfs_alloc_ag_vextent_near a2dcf5d xfs: do not call xfs_bdstrat_cb in xfs_buf_iodone_callbacks 08023d6 xfs: prevent recursion in xfs_buf_iorequest eb71a12 xfs: don't defer metadata allocation to the workqueue 1f432a8 xfs: really fix the cursor leak in xfs_alloc_ag_vextent_near 9b73bd7 xfs: factor buffer reading from xfs_dir2_leaf_getdents 1d9025e xfs: remove struct xfs_dabuf and infrastructure 3605431 xfs: use discontiguous xfs_buf support in dabuf wrappers 372cc85 xfs: support discontiguous buffers in the xfs_buf_log_item de2a4f5 xfs: add discontiguous buffer support to transactions 6dde270 xfs: add discontiguous buffer map interface 3e85c86 xfs: convert internal buffer functions to pass maps cbb7baa xfs: separate buffer indexing from block map 77c1a08 xfs: struct xfs_buf_log_format isn't variable sized. 9a8d2fd xfs: remove xlog_t typedef f7bdf03 xfs: rename log structure to xlog 8866fc6 xfs: shutdown xfs_sync_worker before the log 59c84ed0 xfs: Fix overallocation in xfs_buf_allocate_memory() 76d0953 xfs: fix allocbt cursor leak in xfs_alloc_ag_vextent_near 9a3a5da xfs: check for stale inode before acquiring iflock on push ad223e6 xfs: rename log structure to xlog 11159a0 xfs: shutdown xfs_sync_worker before the log bcf62ab xfs: Fix overallocation in xfs_buf_allocate_memory() 079da28 xfs: fix allocbt cursor leak in xfs_alloc_ag_vextent_near 76e8f13 xfs: check for stale inode before acquiring iflock on push 3b876c8 xfs: fix debug_object WARN at xfs_alloc_vextent() 66f9311 xfs: xfs_vm_writepage clear iomap_valid when !buffer_uptodate (REV2) 51c8422 xfs: fix typo in comment of xfs_dinode_t. 5276432 xfs: kill copy and paste segment checks in xfs_file_aio_read 3297238 xfs: make largest supported offset less shouty d2c2819 xfs: m_maxioffset is redundant 0f2cf9d xfs: fix debug_object WARN at xfs_alloc_vextent() 7d0fa3e xfs: xfs_vm_writepage clear iomap_valid when !buffer_uptodate (REV2) c3b2da3 fs: introduce inode operation ->update_time b0b0382 ->encode_fh() API change 77ba787 xfs: switch to proper __bitwise type for KM_... flags 90324cc Merge tag 'writeback' of git://git.kernel.org/pub/scm/linux/kernel/git/wfg/linux 14c26c6 xfs: add trace points for log forces 3ba3160 xfs: fix memory reclaim deadlock on agi buffer ea562ed xfs: fix delalloc quota accounting on failure 1307bbd xfs: protect xfs_sync_worker with s_umount semaphore 3fe3e6b xfs: introduce SEEK_DATA/SEEK_HOLE support e700a06 xfs: make xfs_extent_busy_trim not static 611c994 xfs: make XBF_MAPPED the default behaviour d4f3512 xfs: flush outstanding buffers on log mount failure 12bcb3f xfs: Properly exclude IO type flags from buffer flags ad1e95c xfs: clean up xfs_bit.h includes 2af51f3 xfs: move xfs_do_force_shutdown() and kill xfs_rw.c 2a0ec1d xfs: move xfs_get_extsz_hint() and kill xfs_rw.h fd50092 xfs: move xfs_fsb_to_db to xfs_bmap.h 4ecbfe6 xfs: clean up busy extent naming efc27b5 xfs: move busy extent handling to it's own file 60a3460 xfs: move xfsagino_t to xfs_types.h bc4010e xfs: use iolock on XFS_IOC_ALLOCSP calls aa5c158 xfs: kill XBF_DONTBLOCK 7ca790a xfs: kill xfs_read_buf() a8acad7 xfs: kill XBF_LOCK 795cac7 xfs: kill xfs_buf_btoc aa0e883 xfs: use blocks for storing the desired IO size 4e94b71 xfs: use blocks for counting length of buffers de1cbee xfs: kill b_file_offset e70b73f xfs: clean up buffer get/read call API bf813cd xfs: use kmem_zone_zalloc for buffers ead360c xfs: fix incorrect b_offset initialisation 0e95f19 xfs: check for buffer errors before waiting fe2429b xfs: fix buffer lookup race on allocation failure aff3a9e xfs: Use preallocation for inodes with extsz hints 3ed9116 xfs: limit specualtive delalloc to maxioffset 58e2077 xfs: don't assert on delalloc regions beyond EOF 81158e0 xfs: prevent needless mount warning causing test failures d3bc815 xfs: punch new delalloc blocks out of failed writes inside EOF. 6ffc4db xfs: page type check in writeback only checks last buffer 4c2d542 xfs: Do background CIL flushes via a workqueue 04913fd xfs: pass shutdown method into xfs_trans_ail_delete_bulk a856917 xfs: remove some obsolete comments in xfs_trans_ail.c 43ff212 xfs: on-stack delayed write buffer lists 960c60a xfs: do not add buffers to the delwri queue until pushed fe7257f xfs: do not write the buffer from xfs_qm_dqflush 4c46819 xfs: do not write the buffer from xfs_iflush 8a48088 xfs: don't flush inodes from background inode reclaim 211e4d4 xfs: implement freezing by emptying the AIL 1c30462 xfs: allow assigning the tail lsn with the AIL lock held 32ce90a xfs: remove log item from AIL in xfs_iflush after a shutdown dea9609 xfs: remove log item from AIL in xfs_qm_dqflush after a shutdown 7582df5 xfs: using GFP_NOFS for blkdev_issue_flush 01c84d2 xfs: punch all delalloc blocks beyond EOF on write failure. 507630b xfs: use shared ilock mode for direct IO writes by default 193aec1 xfs: push the ilock into xfs_zero_eof f38996f xfs: reduce ilock hold times in xfs_setattr_size 467f789 xfs: reduce ilock hold times in xfs_file_aio_write_checks b4d05e3 xfs: avoid taking the ilock unnessecarily in xfs_qm_dqattach dbd5768 vfs: Rename end_writeback() to clear_inode() 8a00ebe xfs: Ensure inode reclaim can run during quotacheck da5bf95 xfs: don't fill statvfs with project quota for a directory if it was not enabled. 0195c00 Merge tag 'split-asm_system_h-for-linus-20120328' of git://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-asm_system f21ce8f Merge branch 'for-linus' of git://oss.sgi.com/xfs/xfs 9ffc93f Remove all #inclusions of asm/system.h 5a5881c xfs: add lots of attribute trace points d97d32e xfs: Fix oops on IO error during xlog_recover_process_iunlinks() a66d636 xfs: fix fstrim offset calculations 3948659 xfs: Account log unmount transaction correctly 5132ba8 xfs: don't cache inodes read through bulkstat f616137 xfs: trace xfs_name strings correctly 49d99a2 Merge branch 'for-linus' of git://oss.sgi.com/xfs/xfs 48fde70 switch open-coded instances of d_make_root() to new helper 8de5277 vfs: check i_nlink limits in vfs_{mkdir,rename_dir,link} c922bbc xfs: make inode quota check more general 20f12d8 xfs: change available ranges of softlimit and hardlimit in quota check 0529348 XFS: xfs_trans_add_item() - don't assign in ASSERT() when compare is intended 04da0c8 xfs: use a normal shrinker for the dquot freelist from c999a223c2f0d31c64ef7379814cea1378b2b800 (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 a0e881b7c189fa2bd76c024dbff91e79511c971d Merge: eff0d13 dbc6e02 Author: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx> Date: Wed Aug 1 10:26:23 2012 -0700 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs Pull second vfs pile from Al Viro: "The stuff in there: fsfreeze deadlock fixes by Jan (essentially, the deadlock reproduced by xfstests 068), symlink and hardlink restriction patches, plus assorted cleanups and fixes. Note that another fsfreeze deadlock (emergency thaw one) is *not* dealt with - the series by Fernando conflicts a lot with Jan's, breaks userland ABI (FIFREEZE semantics gets changed) and trades the deadlock for massive vfsmount leak; this is going to be handled next cycle. There probably will be another pull request, but that stuff won't be in it." Fix up trivial conflicts due to unrelated changes next to each other in drivers/{staging/gdm72xx/usb_boot.c, usb/gadget/storage_common.c} * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (54 commits) delousing target_core_file a bit Documentation: Correct s_umount state for freeze_fs/unfreeze_fs fs: Remove old freezing mechanism ext2: Implement freezing btrfs: Convert to new freezing mechanism nilfs2: Convert to new freezing mechanism ntfs: Convert to new freezing mechanism fuse: Convert to new freezing mechanism gfs2: Convert to new freezing mechanism ocfs2: Convert to new freezing mechanism xfs: Convert to new freezing code ext4: Convert to new freezing mechanism fs: Protect write paths by sb_start_write - sb_end_write fs: Skip atime update on frozen filesystem fs: Add freezing handling to mnt_want_write() / mnt_drop_write() fs: Improve filesystem freezing handling switch the protection of percpu_counter list to spinlock nfsd: Push mnt_want_write() outside of i_mutex btrfs: Push mnt_want_write() outside of i_mutex fat: Push mnt_want_write() outside of i_mutex ... commit d9457dc056249913a7abe8b71dc09e427e590e35 Author: Jan Kara <jack@xxxxxxx> Date: Tue Jun 12 16:20:39 2012 +0200 xfs: Convert to new freezing code Generic code now blocks all writers from standard write paths. So we add blocking of all writers coming from ioctl (we get a protection of ioctl against racing remount read-only as a bonus) and convert xfs_file_aio_write() to a non-racy freeze protection. We also keep freeze protection on transaction start to block internal filesystem writes such as removal of preallocated blocks. CC: Ben Myers <bpm@xxxxxxx> CC: Alex Elder <elder@xxxxxxxxxx> CC: xfs@xxxxxxxxxxx Signed-off-by: Jan Kara <jack@xxxxxxx> Signed-off-by: Al Viro <viro@xxxxxxxxxxxxxxxxxx> commit 37cd9600a9e20359b0283983c9e3a55d84347168 Merge: 95b18e6 9a57fa8 Author: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx> Date: Mon Jul 30 13:37:53 2012 -0700 Merge tag 'for-linus-v3.6-rc1' of git://oss.sgi.com/xfs/xfs Pull xfs update from Ben Myers: "Numerous cleanups and several bug fixes. Here are some highlights: - Discontiguous directory buffer support - Inode allocator refactoring - Removal of the IO lock in inode reclaim - Implementation of .update_time - Fix for handling of EOF in xfs_vm_writepage - Fix for races in xfsaild, and idle mode is re-enabled - Fix for a crash in xfs_buf completion handlers on unmount." Fix up trivial conflicts in fs/xfs/{xfs_buf.c,xfs_log.c,xfs_log_priv.h} due to duplicate patches that had already been merged for 3.5. * tag 'for-linus-v3.6-rc1' of git://oss.sgi.com/xfs/xfs: (44 commits) xfs: wait for the write the superblock on unmount xfs: re-enable xfsaild idle mode and fix associated races xfs: remove iolock lock classes xfs: avoid the iolock in xfs_free_eofblocks for evicted inodes xfs: do not take the iolock in xfs_inactive xfs: remove xfs_inactive_attrs xfs: clean up xfs_inactive xfs: do not read the AGI buffer in xfs_dialloc until nessecary xfs: refactor xfs_ialloc_ag_select xfs: add a short cut to xfs_dialloc for the non-NULL agbp case xfs: remove the alloc_done argument to xfs_dialloc xfs: split xfs_dialloc xfs: remove xfs_ialloc_find_free Prefix IO_XX flags with XFS_IO_XX to avoid namespace colision. xfs: remove xfs_inotobp xfs: merge xfs_itobp into xfs_imap_to_bp xfs: handle EOF correctly in xfs_vm_writepage xfs: implement ->update_time xfs: fix comment typo of struct xfs_da_blkinfo. xfs: do not call xfs_bdstrat_cb in xfs_buf_iodone_callbacks ... commit a66d2c8f7ec1284206ca7c14569e2a607583f1e3 Merge: a6be1fc 8cae6f7 Author: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx> Date: Mon Jul 23 12:27:27 2012 -0700 Merge branch 'for-linus-2' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs Pull the big VFS changes from Al Viro: "This one is *big* and changes quite a few things around VFS. What's in there: - the first of two really major architecture changes - death to open intents. The former is finally there; it was very long in making, but with Miklos getting through really hard and messy final push in fs/namei.c, we finally have it. Unlike his variant, this one doesn't introduce struct opendata; what we have instead is ->atomic_open() taking preallocated struct file * and passing everything via its fields. Instead of returning struct file *, it returns -E... on error, 0 on success and 1 in "deal with it yourself" case (e.g. symlink found on server, etc.). See comments before fs/namei.c:atomic_open(). That made a lot of goodies finally possible and quite a few are in that pile: ->lookup(), ->d_revalidate() and ->create() do not get struct nameidata * anymore; ->lookup() and ->d_revalidate() get lookup flags instead, ->create() gets "do we want it exclusive" flag. With the introduction of new helper (kern_path_locked()) we are rid of all struct nameidata instances outside of fs/namei.c; it's still visible in namei.h, but not for long. Come the next cycle, declaration will move either to fs/internal.h or to fs/namei.c itself. [me, miklos, hch] - The second major change: behaviour of final fput(). Now we have __fput() done without any locks held by caller *and* not from deep in call stack. That obviously lifts a lot of constraints on the locking in there. Moreover, it's legal now to call fput() from atomic contexts (which has immediately simplified life for aio.c). We also don't need anti-recursion logics in __scm_destroy() anymore. There is a price, though - the damn thing has become partially asynchronous. For fput() from normal process we are guaranteed that pending __fput() will be done before the caller returns to userland, exits or gets stopped for ptrace. For kernel threads and atomic contexts it's done via schedule_work(), so theoretically we might need a way to make sure it's finished; so far only one such place had been found, but there might be more. There's flush_delayed_fput() (do all pending __fput()) and there's __fput_sync() (fput() analog doing __fput() immediately). I hope we won't need them often; see warnings in fs/file_table.c for details. [me, based on task_work series from Oleg merged last cycle] - sync series from Jan - large part of "death to sync_supers()" work from Artem; the only bits missing here are exofs and ext4 ones. As far as I understand, those are going via the exofs and ext4 trees resp.; once they are in, we can put ->write_super() to the rest, along with the thread calling it. - preparatory bits from unionmount series (from dhowells). - assorted cleanups and fixes all over the place, as usual. This is not the last pile for this cycle; there's at least jlayton's ESTALE work and fsfreeze series (the latter - in dire need of fixes, so I'm not sure it'll make the cut this cycle). I'll probably throw symlink/hardlink restrictions stuff from Kees into the next pile, too. Plus there's a lot of misc patches I hadn't thrown into that one - it's large enough as it is..." * 'for-linus-2' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (127 commits) ext4: switch EXT4_IOC_RESIZE_FS to mnt_want_write_file() btrfs: switch btrfs_ioctl_balance() to mnt_want_write_file() switch dentry_open() to struct path, make it grab references itself spufs: shift dget/mntget towards dentry_open() zoran: don't bother with struct file * in zoran_map ecryptfs: don't reinvent the wheels, please - use struct completion don't expose I_NEW inodes via dentry->d_inode tidy up namei.c a bit unobfuscate follow_up() a bit ext3: pass custom EOF to generic_file_llseek_size() ext4: use core vfs llseek code for dir seeks vfs: allow custom EOF in generic_file_llseek code vfs: Avoid unnecessary WB_SYNC_NONE writeback during sys_sync and reorder sync passes vfs: Remove unnecessary flushing of block devices vfs: Make sys_sync writeout also block device inodes vfs: Create function for iterating over block devices vfs: Reorder operations during sys_sync quota: Move quota syncing to ->sync_fs method quota: Split dquot_quota_sync() to writeback and cache flushing part vfs: Move noop_backing_dev_info check from sync into writeback ... commit 765927b2d508712d320c8934db963bbe14c3fcec Author: Al Viro <viro@xxxxxxxxxxxxxxxxxx> Date: Tue Jun 26 21:58:53 2012 +0400 switch dentry_open() to struct path, make it grab references itself Signed-off-by: Al Viro <viro@xxxxxxxxxxxxxxxxxx> commit ebfc3b49a7ac25920cb5be5445f602e51d2ea559 Author: Al Viro <viro@xxxxxxxxxxxxxxxxxx> Date: Sun Jun 10 18:05:36 2012 -0400 don't pass nameidata to ->create() boolean "does it have to be exclusive?" flag is passed instead; Local filesystem should just ignore it - the object is guaranteed not to be there yet. Signed-off-by: Al Viro <viro@xxxxxxxxxxxxxxxxxx> commit 00cd8dd3bf95f2cc8435b4cac01d9995635c6d0b Author: Al Viro <viro@xxxxxxxxxxxxxxxxxx> Date: Sun Jun 10 17:13:09 2012 -0400 stop passing nameidata to ->lookup() Just the flags; only NFS cares even about that, but there are legitimate uses for such argument. And getting rid of that completely would require splitting ->lookup() into a couple of methods (at least), so let's leave that alone for now... Signed-off-by: Al Viro <viro@xxxxxxxxxxxxxxxxxx> commit 1632dcc93f55f9ab407b373da1957a727b1a7fe3 Author: Christoph Hellwig <hch@xxxxxxxxxxxxx> Date: Fri Jul 13 02:24:10 2012 -0400 xfs: do not call xfs_bdstrat_cb in xfs_buf_iodone_callbacks xfs_bdstrat_cb only adds a check for a shutdown filesystem over xfs_buf_iorequest, but xfs_buf_iodone_callbacks just checked for a shut down filesystem a little earlier. In addition the shutdown handling in xfs_bdstrat_cb is not very suitable for this caller. Signed-off-by: Christoph Hellwig <hch@xxxxxx> Reviewed-by: Dave Chinner <dchinner@xxxxxxxxxx> Signed-off-by: Ben Myers <bpm@xxxxxxx> commit 40a9b7963df32e743c45d79a5f41445fe2476f15 Author: Christoph Hellwig <hch@xxxxxxxxxxxxx> Date: Mon Jul 2 06:00:04 2012 -0400 xfs: prevent recursion in xfs_buf_iorequest If the b_iodone handler is run in calling context in xfs_buf_iorequest we can run into a recursion where xfs_buf_iodone_callbacks keeps calling back into xfs_buf_iorequest because an I/O error happened, which keeps calling back into xfs_buf_iorequest. This chain will usually not take long because the filesystem gets shut down because of log I/O errors, but even over a short time it can cause stack overflows if run on the same context. As a short term workaround make sure we always call the iodone handler in workqueue context. Signed-off-by: Christoph Hellwig <hch@xxxxxx> Reviewed-by: Dave Chinner <dchinner@xxxxxxxxxx> Signed-off-by: Ben Myers <bpm@xxxxxxx> commit aa292847b9fc6e187547110de833a7d3131bbddf Author: Dave Chinner <dchinner@xxxxxxxxxx> Date: Thu Jul 12 07:40:43 2012 +1000 xfs: don't defer metadata allocation to the workqueue Almost all metadata allocations come from shallow stack usage situations. Avoid the overhead of switching the allocation to a workqueue as we are not in danger of running out of stack when making these allocations. Metadata allocations are already marked through the args that are passed down, so this is trivial to do. Signed-off-by: Dave Chinner <dchinner@xxxxxxxxxx> Reported-by: Mel Gorman <mgorman@xxxxxxx> Tested-by: Mel Gorman <mgorman@xxxxxxx> Signed-off-by: Ben Myers <bpm@xxxxxxx> commit e3a746f5aab71f2dd0a83116772922fb37ae29d6 Author: Dave Chinner <dchinner@xxxxxxxxxx> Date: Thu Jul 12 07:40:42 2012 +1000 xfs: really fix the cursor leak in xfs_alloc_ag_vextent_near The current cursor is reallocated when retrying the allocation, so the existing cursor needs to be destroyed in both the restart and the failure cases. Signed-off-by: Dave Chinner <dchinner@xxxxxxxxxx> Tested-by: Mike Snitzer <snitzer@xxxxxxxxxx> Signed-off-by: Ben Myers <bpm@xxxxxxx> commit f7bdf03a99efc083608cd9c0c3e03abff311c79e Author: Mark Tinguely <tinguely@xxxxxxx> Date: Thu Jun 14 09:22:15 2012 -0500 xfs: rename log structure to xlog Rename the XFS log structure to xlog to help crash distinquish it from the other logs in Linux. Signed-off-by: Mark Tinguely <tinguely@xxxxxxx> Reviewed-by: Christoph Hellwig <hch@xxxxxx> Signed-off-by: Ben Myers <bpm@xxxxxxx> commit 8866fc6fa55e31b2bce931b7963ff16641b39dc7 Author: Ben Myers <bpm@xxxxxxx> Date: Fri May 25 15:45:36 2012 -0500 xfs: shutdown xfs_sync_worker before the log Revert commit 1307bbd, which uses the s_umount semaphore to provide exclusion between xfs_sync_worker and unmount, in favor of shutting down the sync worker before freeing the log in xfs_log_unmount. This is a cleaner way of resolving the race between xfs_sync_worker and unmount than using s_umount. Signed-off-by: Ben Myers <bpm@xxxxxxx> Reviewed-by: Mark Tinguely <tinguely@xxxxxxx> Reviewed-by: Dave Chinner <dchinner@xxxxxxxxxx> commit 59c84ed0ddc11f1823b4a33ace4fbcc948261bb2 Author: Jan Kara <jack@xxxxxxx> Date: Wed Jun 6 00:32:26 2012 +0200 xfs: Fix overallocation in xfs_buf_allocate_memory() Commit de1cbee which removed b_file_offset in favor of b_bn introduced a bug causing xfs_buf_allocate_memory() to overestimate the number of necessary pages. The problem is that xfs_buf_alloc() sets b_bn to -1 and thus effectively every buffer is straddling a page boundary which causes xfs_buf_allocate_memory() to allocate two pages and use vmalloc() for access which is unnecessary. Dave says xfs_buf_alloc() doesn't need to set b_bn to -1 anymore since the buffer is inserted into the cache only after being fully initialized now. So just make xfs_buf_alloc() fill in proper block number from the beginning. CC: David Chinner <dchinner@xxxxxxxxxx> Signed-off-by: Jan Kara <jack@xxxxxxx> Reviewed-by: Christoph Hellwig <hch@xxxxxx> Reviewed-by: Dave Chinner <dchinner@xxxxxxxxxx> Signed-off-by: Ben Myers <bpm@xxxxxxx> commit 76d095388b040229ea1aad7dea45be0cfa20f589 Author: Dave Chinner <dchinner@xxxxxxxxxx> Date: Tue Jun 12 14:20:26 2012 +1000 xfs: fix allocbt cursor leak in xfs_alloc_ag_vextent_near When we fail to find an matching extent near the requested extent specification during a left-right distance search in xfs_alloc_ag_vextent_near, we fail to free the original cursor that we used to look up the XFS_BTNUM_CNT tree and hence leak it. Reported-by: Chris J Arges <chris.j.arges@xxxxxxxxxxxxx> Signed-off-by: Dave Chinner <dchinner@xxxxxxxxxx> Reviewed-by: Christoph Hellwig <hch@xxxxxx> Signed-off-by: Ben Myers <bpm@xxxxxxx> commit 9a3a5dab63461b84213052888bf38a962b22d035 Author: Brian Foster <bfoster@xxxxxxxxxx> Date: Mon Jun 11 10:39:43 2012 -0400 xfs: check for stale inode before acquiring iflock on push An inode in the AIL can be flush locked and marked stale if a cluster free transaction occurs at the right time. The inode item is then marked as flushing, which causes xfsaild to spin and leaves the filesystem stalled. This is reproduced by running xfstests 273 in a loop for an extended period of time. Check for stale inodes before the flush lock. This marks the inode as pinned, leads to a log flush and allows the filesystem to proceed. Signed-off-by: Brian Foster <bfoster@xxxxxxxxxx> Reviewed-by: Dave Chinner <dchinner@xxxxxxxxxx> Reviewed-by: Christoph Hellwig <hch@xxxxxx> Reviewed-by: Mark Tinguely <tinguely@xxxxxxx> Signed-off-by: Ben Myers <bpm@xxxxxxx> commit 3b876c8f2a361ceeed3fed894980c69066f903a0 Author: Jeff Liu <jeff.liu@xxxxxxxxxx> Date: Thu Jun 7 15:44:32 2012 +0800 xfs: fix debug_object WARN at xfs_alloc_vextent() Fengguang reports: [ 780.529603] XFS (vdd): Ending clean mount [ 781.454590] ODEBUG: object is on stack, but not annotated [ 781.455433] ------------[ cut here ]------------ [ 781.455433] WARNING: at /c/kernel-tests/sound/lib/debugobjects.c:301 __debug_object_init+0x173/0x1f1() [ 781.455433] Hardware name: Bochs [ 781.455433] Modules linked in: [ 781.455433] Pid: 26910, comm: kworker/0:2 Not tainted 3.4.0+ #51 [ 781.455433] Call Trace: [ 781.455433] [<ffffffff8106bc84>] warn_slowpath_common+0x83/0x9b [ 781.455433] [<ffffffff8106bcb6>] warn_slowpath_null+0x1a/0x1c [ 781.455433] [<ffffffff814919a5>] __debug_object_init+0x173/0x1f1 [ 781.455433] [<ffffffff81491c65>] debug_object_init+0x14/0x16 [ 781.455433] [<ffffffff8108842a>] __init_work+0x20/0x22 [ 781.455433] [<ffffffff8134ea56>] xfs_alloc_vextent+0x6c/0xd5 Use INIT_WORK_ONSTACK in xfs_alloc_vextent instead of INIT_WORK. Reported-by: Wu Fengguang <wfg@xxxxxxxxxxxxxxx> Signed-off-by: Jie Liu <jeff.liu@xxxxxxxxxx> Signed-off-by: Ben Myers <bpm@xxxxxxx> commit 66f9311381b4772003d595fb6c518f1647450db0 Author: Alain Renaud <arenaud@xxxxxxx> Date: Fri Jun 8 15:34:46 2012 -0400 xfs: xfs_vm_writepage clear iomap_valid when !buffer_uptodate (REV2) On filesytems with a block size smaller than PAGE_SIZE we currently have a problem with unwritten extents. If a we have multi-block page for which an unwritten extent has been allocated, and only some of the buffers have been written to, and they are not contiguous, we can expose stale data from disk in the blocks between the writes after extent conversion. Example of a page with unwritten and real data. buffer content 0 empty b_state = 0 1 DATA b_state = 0x1023 Uptodate,Dirty,Mapped,Unwritten 2 DATA b_state = 0x1023 Uptodate,Dirty,Mapped,Unwritten 3 empty b_state = 0 4 empty b_state = 0 5 DATA b_state = 0x1023 Uptodate,Dirty,Mapped,Unwritten 6 DATA b_state = 0x1023 Uptodate,Dirty,Mapped,Unwritten 7 empty b_state = 0 Buffers 1, 2, 5, and 6 have been written to, leaving 0, 3, 4, and 7 empty. Currently buffers 1, 2, 5, and 6 are added to a single ioend, and when IO has completed, extent conversion creates a real extent from block 1 through block 6, leaving 0 and 7 unwritten. However buffers 3 and 4 were not written to disk, so stale data is exposed from those blocks on a subsequent read. Fix this by setting iomap_valid = 0 when we find a buffer that is not Uptodate. This ensures that buffers 5 and 6 are not added to the same ioend as buffers 1 and 2. Later these blocks will be converted into two separate real extents, leaving the blocks in between unwritten. Signed-off-by: Alain Renaud <arenaud@xxxxxxx> Reviewed-by: Dave Chinner <dchinner@xxxxxxxxxx> Signed-off-by: Ben Myers <bpm@xxxxxxx> ----------------------------------------------------------------------- Summary of changes: fs/xfs/Makefile | 2 +- fs/xfs/kmem.c | 10 +- fs/xfs/kmem.h | 21 +- fs/xfs/xfs_ag.h | 18 - fs/xfs/xfs_alloc.c | 607 ++----------------------------- fs/xfs/xfs_alloc.h | 35 +- fs/xfs/xfs_alloc_btree.c | 9 +- fs/xfs/xfs_alloc_btree.h | 14 - fs/xfs/xfs_aops.c | 318 +++++++++++----- fs/xfs/xfs_aops.h | 14 +- fs/xfs/xfs_attr.c | 119 +++--- fs/xfs/xfs_attr_leaf.c | 298 ++++++++------- fs/xfs/xfs_attr_leaf.h | 21 +- fs/xfs/xfs_bmap.c | 34 +- fs/xfs/xfs_bmap.h | 3 + fs/xfs/xfs_bmap_btree.c | 1 - fs/xfs/xfs_btree.c | 1 - fs/xfs/xfs_buf.c | 828 +++++++++++++++++++++--------------------- fs/xfs/xfs_buf.h | 190 ++++++---- fs/xfs/xfs_buf_item.c | 462 +++++++++++++++--------- fs/xfs/xfs_buf_item.h | 38 +- fs/xfs/xfs_da_btree.c | 856 +++++++++++++++++++------------------------- fs/xfs/xfs_da_btree.h | 38 +- fs/xfs/xfs_dfrag.c | 2 - fs/xfs/xfs_dinode.h | 2 +- fs/xfs/xfs_dir2.c | 5 +- fs/xfs/xfs_dir2_block.c | 119 +++--- fs/xfs/xfs_dir2_data.c | 51 ++- fs/xfs/xfs_dir2_leaf.c | 622 ++++++++++++++++---------------- fs/xfs/xfs_dir2_node.c | 237 ++++++------ fs/xfs/xfs_dir2_priv.h | 46 +-- fs/xfs/xfs_dir2_sf.c | 5 +- fs/xfs/xfs_discard.c | 67 ++-- fs/xfs/xfs_dquot.c | 91 ++--- fs/xfs/xfs_dquot.h | 3 +- fs/xfs/xfs_dquot_item.c | 162 +++------ fs/xfs/xfs_error.c | 1 - fs/xfs/xfs_export.c | 24 +- fs/xfs/xfs_extent_busy.c | 603 +++++++++++++++++++++++++++++++ fs/xfs/xfs_extent_busy.h | 69 ++++ fs/xfs/xfs_extfree_item.c | 59 +-- fs/xfs/xfs_file.c | 363 ++++++++++++------- fs/xfs/xfs_fsops.c | 82 ++++- fs/xfs/xfs_ialloc.c | 442 +++++++++++------------ fs/xfs/xfs_ialloc.h | 11 - fs/xfs/xfs_ialloc_btree.c | 1 - fs/xfs/xfs_iget.c | 47 +-- fs/xfs/xfs_inode.c | 326 ++++++----------- fs/xfs/xfs_inode.h | 22 +- fs/xfs/xfs_inode_item.c | 183 +++------- fs/xfs/xfs_inode_item.h | 2 +- fs/xfs/xfs_inum.h | 5 - fs/xfs/xfs_ioctl.c | 64 +++- fs/xfs/xfs_ioctl32.c | 14 +- fs/xfs/xfs_iomap.c | 65 ++-- fs/xfs/xfs_iops.c | 66 +++- fs/xfs/xfs_itable.c | 6 +- fs/xfs/xfs_log.c | 348 +++++++++++------- fs/xfs/xfs_log.h | 1 + fs/xfs/xfs_log_cil.c | 265 ++++++++------ fs/xfs/xfs_log_priv.h | 64 +++- fs/xfs/xfs_log_recover.c | 306 ++++++++-------- fs/xfs/xfs_message.c | 1 - fs/xfs/xfs_mount.c | 90 ++--- fs/xfs/xfs_mount.h | 12 +- fs/xfs/xfs_qm.c | 198 +++++----- fs/xfs/xfs_qm_bhv.c | 2 - fs/xfs/xfs_qm_syscalls.c | 1 - fs/xfs/xfs_quotaops.c | 1 - fs/xfs/xfs_rename.c | 12 - fs/xfs/xfs_rtalloc.c | 10 +- fs/xfs/xfs_rw.c | 156 -------- fs/xfs/xfs_rw.h | 47 --- fs/xfs/xfs_super.c | 161 +++------ fs/xfs/xfs_sync.c | 278 +++++--------- fs/xfs/xfs_trace.c | 2 - fs/xfs/xfs_trace.h | 151 ++++++-- fs/xfs/xfs_trans.c | 26 +- fs/xfs/xfs_trans.h | 72 +++- fs/xfs/xfs_trans_ail.c | 238 ++++++------ fs/xfs/xfs_trans_buf.c | 184 ++++------ fs/xfs/xfs_trans_dquot.c | 2 - fs/xfs/xfs_trans_extfree.c | 1 - fs/xfs/xfs_trans_inode.c | 2 - fs/xfs/xfs_trans_priv.h | 13 +- fs/xfs/xfs_types.h | 19 + fs/xfs/xfs_utils.c | 21 +- fs/xfs/xfs_vnodeops.c | 332 ++++++----------- 88 files changed, 5370 insertions(+), 5450 deletions(-) create mode 100644 fs/xfs/xfs_extent_busy.c create mode 100644 fs/xfs/xfs_extent_busy.h delete mode 100644 fs/xfs/xfs_rw.c delete mode 100644 fs/xfs/xfs_rw.h hooks/post-receive -- XFS development tree _______________________________________________ xfs mailing list xfs@xxxxxxxxxxx http://oss.sgi.com/mailman/listinfo/xfs