From mboxrd@z Thu Jan 1 00:00:00 1970 From: Wei Fang Subject: [PATCH] bfs: fix i_blocks accounting Date: Mon, 2 Nov 2015 17:03:35 +0800 Message-ID: <1446455015-26888-1-git-send-email-fangwei1@huawei.com> Mime-Version: 1.0 Content-Type: text/plain Cc: , , Wei Fang To: Return-path: Received: from szxga02-in.huawei.com ([119.145.14.65]:55892 "EHLO szxga02-in.huawei.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752337AbbKBJFZ (ORCPT ); Mon, 2 Nov 2015 04:05:25 -0500 Sender: linux-fsdevel-owner@vger.kernel.org List-ID: Update inode->i_blocks if succeed to get block, otherwise we'll get wrong number of blocks. Signed-off-by: Wei Fang --- fs/bfs/file.c | 4 +++- 1 files changed, 3 insertions(+), 1 deletions(-) diff --git a/fs/bfs/file.c b/fs/bfs/file.c index 97f1b51..f89abdb 100644 --- a/fs/bfs/file.c +++ b/fs/bfs/file.c @@ -108,6 +108,7 @@ static int bfs_get_block(struct inode *inode, sector_t block, map_bh(bh_result, sb, phys); info->si_freeb -= phys - bi->i_eblock; info->si_lf_eblk = bi->i_eblock = phys; + inode->i_blocks = block + 1; mark_inode_dirty(inode); err = 0; goto out; @@ -141,7 +142,8 @@ static int bfs_get_block(struct inode *inode, sector_t block, * This assumes nothing can write the inode back while we are here * and thus update inode->i_blocks! (XXX) */ - info->si_freeb -= bi->i_eblock - bi->i_sblock + 1 - inode->i_blocks; + info->si_freeb -= block + 1 - inode->i_blocks; + inode->i_blocks = block + 1; mark_inode_dirty(inode); map_bh(bh_result, sb, phys); out: -- 1.7.1