From: Jeff Mahoney This is hopefully the last fix for the disaster that is the reiserfs bitmap patch set. If a bitmap block was full, first_zero_hint would end up at zero since it would never be changed from it's zeroed out value. This just sets it beyond the end of the bitmap block. If any bits are freed, it will be reset to a valid bit. When info->free_count = 0, then we already know it's full. Signed-off-by: Andrew Morton --- fs/reiserfs/bitmap.c | 2 ++ 1 file changed, 2 insertions(+) diff -puN fs/reiserfs/bitmap.c~reiserfs-reorganize-bitmap-loading-functions-fix2 fs/reiserfs/bitmap.c --- a/fs/reiserfs/bitmap.c~reiserfs-reorganize-bitmap-loading-functions-fix2 +++ a/fs/reiserfs/bitmap.c @@ -1294,6 +1294,8 @@ void reiserfs_cache_bitmap_metadata(stru { unsigned long *cur = (unsigned long *)(bh->b_data + bh->b_size); + info->first_zero_hint = 1 << (sb->s_blocksize_bits + 3); + while (--cur >= (unsigned long *)bh->b_data) { int base = ((char *)cur - bh->b_data) << 3; _