linux/fs/xfs
David Chinner e4143a1cf5 [XFS] Fix transaction overrun during writeback.
Prevent transaction overrun in xfs_iomap_write_allocate() if we race with
a truncate that overlaps the delalloc range we were planning to allocate.

If we race, we may allocate into a hole and that requires block
allocation. At this point in time we don't have a reservation for block
allocation (apart from metadata blocks) and so allocating into a hole
rather than a delalloc region results in overflowing the transaction block
reservation.

Fix it by only allowing a single extent to be allocated at a time.

SGI-PV: 972757
SGI-Modid: xfs-linux-melb:xfs-kern:30005a

Signed-off-by: David Chinner <dgc@sgi.com>
Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>
2008-02-07 18:15:55 +11:00
..
linux-2.6 [XFS] Fix up sparse warnings. 2008-02-07 18:14:38 +11:00
quota [XFS] Remove spin.h 2008-02-07 16:47:45 +11:00
support [XFS] lose xfs_hex_dump in favor of print_hex_dump 2008-02-07 18:13:05 +11:00
Kbuild
Kconfig
Makefile
Makefile-linux-2.6 [XFS] kill xfs_iocore_t 2008-02-07 16:48:58 +11:00
xfs_acl.c [XFS] simplify xfs_create/mknod/symlink prototype 2007-10-16 14:15:32 +10:00
xfs_acl.h [XFS] simplify xfs_create/mknod/symlink prototype 2007-10-16 14:15:32 +10:00
xfs_ag.h [XFS] Unwrap pagb_lock. 2008-02-07 16:46:39 +11:00
xfs_alloc_btree.c [XFS] Lazy Superblock Counters 2007-07-14 15:28:50 +10:00
xfs_alloc_btree.h [XFS] Remove unused arguments from the XFS_BTREE_*_ADDR macros. 2007-02-10 18:37:33 +11:00
xfs_alloc.c [XFS] Remove spin.h 2008-02-07 16:47:45 +11:00
xfs_alloc.h [XFS] Lazy Superblock Counters 2007-07-14 15:28:50 +10:00
xfs_arch.h
xfs_attr_leaf.c [XFS] Unwrap XFS_SB_LOCK. 2008-02-07 16:47:15 +11:00
xfs_attr_leaf.h
xfs_attr_sf.h
xfs_attr.c [XFS] Fix up sparse warnings. 2008-02-07 18:14:38 +11:00
xfs_attr.h [XFS] kill struct bhv_vnode 2007-10-16 11:40:24 +10:00
xfs_bit.c [XFS] Use the generic bitops rather than implementing them ourselves. 2008-02-07 18:14:22 +11:00
xfs_bit.h [XFS] Use the generic bitops rather than implementing them ourselves. 2008-02-07 18:14:22 +11:00
xfs_bmap_btree.c [XFS] Fix build regression from mod/commit which did cleanup of xfs_bmbt_*set_allf 2007-10-15 16:47:32 +10:00
xfs_bmap_btree.h [XFS] endianess annotations for xfs_bmbt_rec_t 2007-10-15 16:26:44 +10:00
xfs_bmap.c [XFS] Fix up sparse warnings. 2008-02-07 18:14:38 +11:00
xfs_bmap.h [XFS] Fix up sparse warnings. 2008-02-07 18:14:38 +11:00
xfs_btree.c
xfs_btree.h [XFS] Fix up sparse warnings. 2008-02-07 18:14:38 +11:00
xfs_buf_item.c [XFS] Unwrap AIL_LOCK 2008-02-07 16:44:23 +11:00
xfs_buf_item.h [XFS] Fix up sparse warnings. 2008-02-07 18:14:38 +11:00
xfs_clnt.h [XFS] Radix tree based inode caching 2007-10-15 16:50:50 +10:00
xfs_da_btree.c [XFS] Unwrap xfs_dabuf_global_lock 2008-02-07 16:46:48 +11:00
xfs_da_btree.h [XFS] Fix up sparse warnings. 2008-02-07 18:14:38 +11:00
xfs_dfrag.c [XFS] kill xfs_iocore_t 2008-02-07 16:48:58 +11:00
xfs_dfrag.h
xfs_dinode.h [XFS] dinode endianess annotations 2007-10-15 16:48:30 +10:00
xfs_dir2_block.c [XFS] Put the correct offset in dirent d_off 2007-12-18 17:16:23 +11:00
xfs_dir2_block.h [XFS] use filldir internally 2007-10-15 16:49:49 +10:00
xfs_dir2_data.c [XFS] Radix tree based inode caching 2007-10-15 16:50:50 +10:00
xfs_dir2_data.h [XFS] Reduce shouting by removing unnecessary macros from dir2 code. 2007-07-14 15:37:02 +10:00
xfs_dir2_leaf.c [XFS] Put the correct offset in dirent d_off 2007-12-18 17:16:23 +11:00
xfs_dir2_leaf.h [XFS] use filldir internally 2007-10-15 16:49:49 +10:00
xfs_dir2_node.c [XFS] Radix tree based inode caching 2007-10-15 16:50:50 +10:00
xfs_dir2_node.h [XFS] Reduce shouting by removing unnecessary macros from dir2 code. 2007-07-14 15:37:02 +10:00
xfs_dir2_sf.c [XFS] Put the correct offset in dirent d_off 2007-12-18 17:16:23 +11:00
xfs_dir2_sf.h [XFS] use filldir internally 2007-10-15 16:49:49 +10:00
xfs_dir2_trace.c
xfs_dir2_trace.h
xfs_dir2.c [XFS] Fix up sparse warnings. 2008-02-07 18:14:38 +11:00
xfs_dir2.h [XFS] decontaminate vnode operations from behavior details 2007-10-15 16:54:29 +10:00
xfs_dmapi.h [XFS] kill the vfs_flags member in struct bhv_vfs 2007-10-16 11:45:57 +10:00
xfs_dmops.c [XFS] fixups after behavior removal merge into mainline git 2007-10-19 17:14:45 +10:00
xfs_error.c [XFS] lose xfs_hex_dump in favor of print_hex_dump 2008-02-07 18:13:05 +11:00
xfs_error.h [XFS] lose xfs_hex_dump in favor of print_hex_dump 2008-02-07 18:13:05 +11:00
xfs_extfree_item.c [XFS] Unwrap AIL_LOCK 2008-02-07 16:44:23 +11:00
xfs_extfree_item.h
xfs_filestream.c [XFS] Fix up sparse warnings. 2008-02-07 18:14:38 +11:00
xfs_filestream.h [XFS] Concurrent Multi-File Data Streams 2007-07-14 15:40:53 +10:00
xfs_fs.h [XFS] fix 32-bit compat ioctls for GETXFLAGS, SETXFLAGS, GETVERSION 2008-02-07 18:13:17 +11:00
xfs_fsops.c [XFS] Unwrap XFS_SB_LOCK. 2008-02-07 16:47:15 +11:00
xfs_fsops.h
xfs_ialloc_btree.c
xfs_ialloc_btree.h [XFS] kill XFS_INOBT_IS_FREE_DISK 2008-02-07 18:12:41 +11:00
xfs_ialloc.c [XFS] dinode endianess annotations 2007-10-15 16:48:30 +10:00
xfs_ialloc.h [XFS] Pick a single default inode cluster size. 2007-10-15 16:39:35 +10:00
xfs_iget.c [XFS] cleanup vnode useage in xfs_iget.c 2008-02-07 16:55:46 +11:00
xfs_imap.h
xfs_inode_item.c [XFS] Unwrap AIL_LOCK 2008-02-07 16:44:23 +11:00
xfs_inode_item.h
xfs_inode.c [XFS] Make xfs_bulkstat() to report unlinked but referenced inodes 2008-02-07 18:13:37 +11:00
xfs_inode.h [XFS] cleanup vnode useage in xfs_iget.c 2008-02-07 16:55:46 +11:00
xfs_inum.h
xfs_iomap.c [XFS] Fix transaction overrun during writeback. 2008-02-07 18:15:55 +11:00
xfs_iomap.h [XFS] kill unnessecary ioops indirection 2008-02-07 16:44:14 +11:00
xfs_itable.c [XFS] Make xfs_bulkstat() to report unlinked but referenced inodes 2008-02-07 18:13:37 +11:00
xfs_itable.h [XFS] Fix XFS_IOC_FSBULKSTAT{,_SINGLE} & XFS_IOC_FSINUMBERS in compat mode 2007-07-14 15:42:50 +10:00
xfs_log_priv.h [XFS] xlog_rec_header/xlog_rec_ext_header endianess annotations 2008-02-07 18:11:47 +11:00
xfs_log_recover.c [XFS] Fix sparse warning in xlog_recover_do_efd_trans. 2008-02-07 18:15:29 +11:00
xfs_log_recover.h
xfs_log.c [XFS] Fix up sparse warnings. 2008-02-07 18:14:38 +11:00
xfs_log.h [XFS] xlog_rec_header/xlog_rec_ext_header endianess annotations 2008-02-07 18:11:47 +11:00
xfs_mount.c [XFS] Fix up sparse warnings. 2008-02-07 18:14:38 +11:00
xfs_mount.h [XFS] kill xfs_iocore_t 2008-02-07 16:48:58 +11:00
xfs_mru_cache.c [XFS] Fix up sparse warnings. 2008-02-07 18:14:38 +11:00
xfs_mru_cache.h [XFS] On-demand reaping of the MRU cache 2007-09-17 16:42:02 +10:00
xfs_qmops.c [XFS] Unwrap XFS_SB_LOCK. 2008-02-07 16:47:15 +11:00
xfs_quota.h [XFS] remove dependency of the quota module on behaviors 2007-10-16 11:43:26 +10:00
xfs_refcache.h
xfs_rename.c [XFS] Fix up sparse warnings. 2008-02-07 18:14:38 +11:00
xfs_rtalloc.c [XFS] Use the generic bitops rather than implementing them ourselves. 2008-02-07 18:14:22 +11:00
xfs_rtalloc.h [XFS] Remove a bunch of unused functions from XFS. 2007-02-10 18:37:40 +11:00
xfs_rw.c [XFS] decontaminate vfs operations from behavior details 2007-10-16 11:43:55 +10:00
xfs_rw.h [XFS] kill xfs_iocore_t 2008-02-07 16:48:58 +11:00
xfs_sb.h [XFS] superblock endianess annotations 2007-10-15 16:49:09 +10:00
xfs_trans_ail.c [XFS] Unwrap AIL_LOCK 2008-02-07 16:44:23 +11:00
xfs_trans_buf.c Revert "[XFS] Avoid replaying inode buffer initialisation log items if on-disk version is newer." 2007-10-01 07:59:03 -07:00
xfs_trans_extfree.c [XFS] Radix tree based inode caching 2007-10-15 16:50:50 +10:00
xfs_trans_inode.c
xfs_trans_item.c [XFS] Fix up sparse warnings. 2008-02-07 18:14:38 +11:00
xfs_trans_priv.h [XFS] Unwrap AIL_LOCK 2008-02-07 16:44:23 +11:00
xfs_trans_space.h
xfs_trans.c [XFS] Unwrap AIL_LOCK 2008-02-07 16:44:23 +11:00
xfs_trans.h [XFS] Fix up sparse warnings. 2008-02-07 18:14:38 +11:00
xfs_types.h [XFS] use filldir internally 2007-10-15 16:49:49 +10:00
xfs_utils.c [XFS] Unwrap XFS_SB_LOCK. 2008-02-07 16:47:15 +11:00
xfs_utils.h [XFS] clean up vnode/inode tracing 2008-02-07 16:42:19 +11:00
xfs_vfsops.c [XFS] Show all mount args in /proc/mounts 2008-02-07 18:15:43 +11:00
xfs_vfsops.h [XFS] kill xfs_freeze. 2008-02-07 18:09:56 +11:00
xfs_vnodeops.c [XFS] kill xfs_iocore_t 2008-02-07 16:48:58 +11:00
xfs_vnodeops.h [XFS] cleanup fid types mess 2007-10-19 18:02:55 +10:00
xfs.h [XFS] clean up vnode/inode tracing 2008-02-07 16:42:19 +11:00