summary refs log tree commit diff
path: root/fs/jfs
diff options
context:
space:
mode:
authorDave Kleikamp <shaggy@linux.vnet.ibm.com>2009-06-16 13:43:22 -0500
committerDave Kleikamp <shaggy@linux.vnet.ibm.com>2009-06-16 13:43:22 -0500
commitf7c52fd17a7dda42fc9e88c2b2678403419bfe63 (patch)
tree51164a3c40bcee5cc43682e945bd7b773a784bc3 /fs/jfs
parenta525890cb6a2949b644d212ae290b658967d3919 (diff)
downloadlinux-f7c52fd17a7dda42fc9e88c2b2678403419bfe63.tar.gz
jfs: fix regression preventing coalescing of extents
Commit fec1878fe952b994125a3be7c94b1322db586f3b caused a regression in
which contiguous blocks being allocated to the end of an extent were
getting a new extent created.  This typically results in files entirely
made up of 1-block extents even though the blocks are contiguous on
disk.

Apparently grub doesn't handle a jfs file being fragmented into too many
extents, since it refuses to boot a kernel from jfs that was created by
the 2.6.30 kernel.

Signed-off-by: Dave Kleikamp <shaggy@linux.vnet.ibm.com>
Reported-by: Alex <alevkovich@tut.by>
Diffstat (limited to 'fs/jfs')
-rw-r--r--fs/jfs/jfs_extent.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/fs/jfs/jfs_extent.c b/fs/jfs/jfs_extent.c
index bbbd5f202e37..41d6045dbeb0 100644
--- a/fs/jfs/jfs_extent.c
+++ b/fs/jfs/jfs_extent.c
@@ -391,6 +391,7 @@ int extHint(struct inode *ip, s64 offset, xad_t * xp)
 		}
 		XADaddress(xp, xaddr);
 		XADlength(xp, xlen);
+		XADoffset(xp, prev);
 		/*
 		 * only preserve the abnr flag within the xad flags
 		 * of the returned hint.