diff --git a/fs/minix/bitmap.c b/fs/minix/bitmap.c index 7da66ca18..18c6fe544 100644 --- a/fs/minix/bitmap.c +++ b/fs/minix/bitmap.c @@ -60,11 +60,15 @@ void minix_free_block(struct inode *inode, unsigned long block) } bh = sbi->s_zmap[zone]; spin_lock(&bitmap_lock); - if (!minix_test_and_clear_bit(bit, bh->b_data)) + if (minix_test_and_clear_bit(bit, bh->b_data)) { + /* Proceed only if the bit was set */ + mark_buffer_dirty(bh); + } else { printk("minix_free_block (%s:%lu): bit already cleared\n", sb->s_id, block); + } + spin_unlock(&bitmap_lock); - mark_buffer_dirty(bh); return; }