patch-2.4.19 linux-2.4.19/fs/ext3/balloc.c
Next file: linux-2.4.19/fs/ext3/inode.c
Previous file: linux-2.4.19/fs/ext2/inode.c
Back to the patch index
Back to the overall index
- Lines: 38
- Date:
Fri Aug 2 17:39:45 2002
- Orig file:
linux-2.4.18/fs/ext3/balloc.c
- Orig date:
Mon Feb 25 11:38:08 2002
diff -urN linux-2.4.18/fs/ext3/balloc.c linux-2.4.19/fs/ext3/balloc.c
@@ -542,6 +542,7 @@
int i, j, k, tmp, alloctmp;
int bitmap_nr;
int fatal = 0, err;
+ int performed_allocation = 0;
struct super_block * sb;
struct ext3_group_desc * gdp;
struct ext3_super_block * es;
@@ -644,8 +645,7 @@
}
/* No space left on the device */
- unlock_super (sb);
- return 0;
+ goto out;
search_back:
/*
@@ -694,6 +694,7 @@
J_ASSERT_BH(bh, !ext3_test_bit(j, bh->b_data));
BUFFER_TRACE(bh, "setting bitmap bit");
ext3_set_bit(j, bh->b_data);
+ performed_allocation = 1;
#ifdef CONFIG_JBD_DEBUG
{
@@ -815,6 +816,11 @@
ext3_std_error(sb, fatal);
}
unlock_super (sb);
+ /*
+ * Undo the block allocation
+ */
+ if (!performed_allocation)
+ DQUOT_FREE_BLOCK(inode, 1);
return 0;
}
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)