Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=7e46aa5c8cb1347853de9ec86f3fa440f9dc9d77
Commit:     7e46aa5c8cb1347853de9ec86f3fa440f9dc9d77
Parent:     3c50b3683a8efbf3b4b314209d86aed1a0c44d5b
Author:     Al Viro <[EMAIL PROTECTED]>
AuthorDate: Wed Dec 5 08:32:52 2007 +0000
Committer:  Linus Torvalds <[EMAIL PROTECTED]>
CommitDate: Wed Dec 5 09:25:20 2007 -0800

    regression: bfs endianness bug
    
    BFS_FILEBLOCKS() expects struct bfs_inode * (on-disk data, with little-
    endian fields), not struct bfs_inode_info * (in-core stuff, with host-
    endian ones).
    
    It's a macro and fields with the right names are present in
    bfs_inode_info, so it compiles, but on big-endian host it gives bogus
    results.
    
    Introduced in commit f433dc56344cb72cc3de5ba0819021cec3aef807 ("Fixes to
    the BFS filesystem driver").
    
    Signed-off-by: Al Viro <[EMAIL PROTECTED]>
    Signed-off-by: Linus Torvalds <[EMAIL PROTECTED]>
---
 fs/bfs/inode.c |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/fs/bfs/inode.c b/fs/bfs/inode.c
index 294c41b..a64a71d 100644
--- a/fs/bfs/inode.c
+++ b/fs/bfs/inode.c
@@ -178,7 +178,8 @@ static void bfs_delete_inode(struct inode *inode)
        brelse(bh);
 
         if (bi->i_dsk_ino) {
-               info->si_freeb += BFS_FILEBLOCKS(bi);
+               if (bi->i_sblock)
+                       info->si_freeb += bi->i_eblock + 1 - bi->i_sblock;
                info->si_freei++;
                clear_bit(ino, info->si_imap);
                dump_imap("delete_inode", s);
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to