X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=fs%2Fhfsplus%2Fextents.c;h=bfc8657a8ae296fd59708ace29e5f61ffa594e17;hb=6a77f38946aaee1cd85eeec6cf4229b204c15071;hp=51d4b1255d11e364b86d478f2c598561e46186c0;hpb=87fc8d1bb10cd459024a742c6a10961fefcef18f;p=linux-2.6.git diff --git a/fs/hfsplus/extents.c b/fs/hfsplus/extents.c index 51d4b1255..bfc8657a8 100644 --- a/fs/hfsplus/extents.c +++ b/fs/hfsplus/extents.c @@ -183,8 +183,8 @@ int hfsplus_get_block(struct inode *inode, sector_t iblock, shift = HFSPLUS_SB(sb).alloc_blksz_shift - sb->s_blocksize_bits; ablock = iblock >> HFSPLUS_SB(sb).fs_shift; - if (iblock >= inode->i_blocks) { - if (iblock > inode->i_blocks || !create) + if (iblock >= HFSPLUS_I(inode).fs_blocks) { + if (iblock > HFSPLUS_I(inode).fs_blocks || !create) return -EIO; if (ablock >= HFSPLUS_I(inode).alloc_blocks) { res = hfsplus_file_extend(inode); @@ -217,7 +217,8 @@ done: if (create) { set_buffer_new(bh_result); HFSPLUS_I(inode).phys_size += sb->s_blocksize; - inode->i_blocks++; + HFSPLUS_I(inode).fs_blocks++; + inode_add_bytes(inode, sb->s_blocksize); mark_inode_dirty(inode); } return 0; @@ -497,6 +498,7 @@ void hfsplus_file_truncate(struct inode *inode) HFSPLUS_I(inode).alloc_blocks = blk_cnt; out: HFSPLUS_I(inode).phys_size = inode->i_size; + HFSPLUS_I(inode).fs_blocks = (inode->i_size + sb->s_blocksize - 1) >> sb->s_blocksize_bits; + inode_set_bytes(inode, HFSPLUS_I(inode).fs_blocks << sb->s_blocksize_bits); mark_inode_dirty(inode); - inode->i_blocks = (inode->i_size + sb->s_blocksize - 1) >> sb->s_blocksize_bits; }