[XFS] Fix transaction overrun during writeback.
authorDavid Chinner <dgc@sgi.com>
Fri, 23 Nov 2007 05:29:11 +0000 (16:29 +1100)
committerLachlan McIlroy <lachlan@redback.melbourne.sgi.com>
Thu, 7 Feb 2008 07:15:55 +0000 (18:15 +1100)
commite4143a1cf5973e3443c0650fc4c35292d3b7baa8
tree320e3fcd98e8a17e250272c01c4518524ce255b0
parent786f486f8154b94b36182d2b53df3bf2b40d85e7
[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>
fs/xfs/xfs_iomap.c