ext4: Properly update i_disksize.
authorAneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
Sat, 13 Sep 2008 17:06:18 +0000 (13:06 -0400)
committerTheodore Ts'o <tytso@mit.edu>
Sat, 13 Sep 2008 17:06:18 +0000 (13:06 -0400)
commitcf17fea6575cb1739552e1d0cb2b446305ee3d0c
tree319e1044e271aeb31ad14847f369776ac5db74db
parentae4d537211ff250a8c23c4f1227c4276cd2508ab
ext4: Properly update i_disksize.

With delayed allocation we use i_data_sem to update i_disksize.  We need
to update i_disksize only if the new size specified is greater than the
current value and we need to make sure we don't race with other
i_disksize update.  With delayed allocation we will switch to the
write_begin function for non-delayed allocation if we are low on free
blocks.  This means the write_begin function for non-delayed allocation
also needs to use the same locking.

We also need to check and update i_disksize even if the new size is less
that inode.i_size because of delayed allocation.

Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
fs/ext4/ext4.h
fs/ext4/extents.c
fs/ext4/inode.c