[2.5] reiserfs: fix problem when fs is out of space
Hello!
This patch fixes various bad stuff that happens when you write to full or almost full reiserfs filesystem.
===== fs/reiserfs/bitmap.c 1.27 vs edited =====
fs/reiserfs/bitmap.c +2 -2
@@ -910,11 +910,11 @@int reiserfs_can_fit_pages (struct super_block *sb/* superblock of filesystem to estimate space */ ) { -b_blocknr_t space; +int space;spin_lock (&REISERFS_SB (sb)->bitmap_lock); space = (SB_FREE_BLOCKS (sb) -REISERFS_SB (sb)->reserved_blocks) >> (PAGE_CACHE_SHIFT - sb->s_blocksize_bits);spin_unlock (&REISERFS_SB (sb)->bitmap_lock); -return space; +return space>0 ?space:0 ; }
===== fs/reiserfs/file.c 1.20 vs edited =====
fs/reiserfs/file.c +2 -0
@@ -1085,6 +1085,8 @@// 100% of disk space anyway. write_bytes =min_t (int, count, inode->i_sb->s_blocksize - (pos & (inode->i_sb->s_blocksize -1 ))); num_pages =1 ; +// No blocks were claimed before, so do it now. +reiserfs_claim_blocks_to_be_allocated (inode->i_sb,1 << (PAGE_CACHE_SHIFT - inode->i_blkbits)); }/* Prepare for writing into the region, read in all the