]> git.karo-electronics.de Git - karo-tx-linux.git/commit
ocfs2: fix issue that ocfs2_setattr() does not deal with new_i_size==i_size
authorYounger Liu <younger.liu@huawei.com>
Mon, 16 Dec 2013 23:44:58 +0000 (10:44 +1100)
committerStephen Rothwell <sfr@canb.auug.org.au>
Mon, 16 Dec 2013 23:44:58 +0000 (10:44 +1100)
commit0d1ed1a8e56769a0b7feea322a6c5ddb3598dda7
tree52d6ec72a2322c9df49140a6f65c26cf2be98a42
parent6f7ad7d94125b9a2f1f4c5200d1708a7217d8e5d
ocfs2: fix issue that ocfs2_setattr() does not deal with new_i_size==i_size

The issue scenario is as following:

- Create a small file and fallocate a large disk space for a file with
  FALLOC_FL_KEEP_SIZE option.

- ftruncate the file back to the original size again.  but the disk free
  space is not changed back.  This is a real bug that be fixed in this
  patch.

In order to solve the issue above, we modified ocfs2_setattr(), if
attr->ia_size != i_size_read(inode), It calls ocfs2_truncate_file(), and
truncate disk space to attr->ia_size.

Signed-off-by: Younger Liu <younger.liu@huawei.com>
Reviewed-by: Jie Liu <jeff.liu@oracle.com>
Tested-by: Jie Liu <jeff.liu@oracle.com>
Cc: Joel Becker <jlbec@evilplan.org>
Cc: Mark Fasheh <mfasheh@suse.com>
Cc: Sunil Mushran <sunil.mushran@gmail.com>
Reviewed-by: Jensen <shencanquan@huawei.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
fs/ocfs2/alloc.c
fs/ocfs2/file.c