From: Niu Yawei Date: Tue, 8 Oct 2013 03:30:10 +0000 (+0800) Subject: libext2fs: update i_size in ext2fs_file_write() X-Git-Tag: v1.42.9~132 X-Git-Url: https://git.whamcloud.com/gitweb?a=commitdiff_plain;h=470ca046b1e682c419d50efc8d4941db1b8601d9;p=tools%2Fe2fsprogs.git libext2fs: update i_size in ext2fs_file_write() ext2fs_file_write() needs to update i_size on successful write, otherwise, ext2fs_file_read() in same open/close cycle will not be able to read the just written data. This fixes a bug which results in the the problem of quotacheck triggered on 'tune2fs -O quota' failed to write back multiple users/groups accounting information. Signed-off-by: Niu Yawei Signed-off-by: "Theodore Ts'o" --- diff --git a/lib/ext2fs/fileio.c b/lib/ext2fs/fileio.c index e6bc60a..059bda2 100644 --- a/lib/ext2fs/fileio.c +++ b/lib/ext2fs/fileio.c @@ -307,6 +307,15 @@ errcode_t ext2fs_file_write(ext2_file_t file, const void *buf, } fail: + /* Update inode size */ + if (count != 0 && EXT2_I_SIZE(&file->inode) < file->pos) { + errcode_t rc; + + rc = ext2fs_file_set_size2(file, file->pos); + if (retval == 0) + retval = rc; + } + if (written) *written = count; return retval;