diff -ur linux-source-3.2/fs/ufs/balloc.c /home/phcoder/projects/ufs/balloc.c --- linux-source-3.2/fs/ufs/balloc.c 2012-04-23 00:31:32.000000000 +0200 +++ /home/phcoder/projects/ufs/balloc.c 2012-05-02 18:24:25.444822068 +0200 @@ -147,6 +147,8 @@ UFSD("ENTER, fragment %llu, count %u\n", (unsigned long long)fragment, count); + + inode->i_blocks -= count; if ((fragment & uspi->s_fpbmask) || (count & uspi->s_fpbmask)) { ufs_error (sb, "ufs_free_blocks", "internal error, " @@ -423,6 +425,7 @@ if (result) { ufs_cpu_to_data_ptr(sb, p, result); *err = 0; + inode->i_blocks += count; UFS_I(inode)->i_lastfrag = max(UFS_I(inode)->i_lastfrag, fragment + count); ufs_clear_frags(inode, result + oldcount,