GFS2: Update i_size properly on fallocate
authorAndrew Price <anprice@redhat.com>
Wed, 12 Nov 2014 17:24:04 +0000 (17:24 +0000)
committerSteven Whitehouse <swhiteho@redhat.com>
Fri, 14 Nov 2014 14:15:04 +0000 (14:15 +0000)
commit1885867b84d58e3704ed175e0abac2f38889f34d
treed4b37a4e65553290d4c2323f14f10f8d9a621e5e
parent9c9f1159a54c6163dd0b9d2085985d3c98dad11f
GFS2: Update i_size properly on fallocate

This addresses an issue caught by fsx where the inode size was not being
updated to the expected value after fallocate(2) with mode 0.

The problem was caused by the offset and len parameters being converted
to multiples of the file system's block size, so i_size would be rounded
up to the nearest block size multiple instead of the requested size.

This replaces the per-chunk i_size updates with a single i_size_write on
successful completion of the operation.  With this patch gfs2 gets
through a complete run of fsx.

For clarity, the check for (error == 0) following the loop is removed as
all failures before that point jump to out_* labels or return.

Signed-off-by: Andrew Price <anprice@redhat.com>
Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
fs/gfs2/file.c