From: Mingming Cao Date: Mon, 28 Sep 2009 19:49:52 +0000 (-0400) Subject: ext4: release reserved quota when block reservation for delalloc retry X-Git-Tag: v2.6.31.8~50 X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=f26ac96224871adf0647496e4154eabdee3689a6;p=karo-tx-linux.git ext4: release reserved quota when block reservation for delalloc retry (cherry picked from commit 9f0ccfd8e07d61b413e6536ffa02fbf60d2e20d8) ext4_da_reserve_space() can reserve quota blocks multiple times if ext4_claim_free_blocks() fail and we retry the allocation. We should release the quota reservation before restarting. Bug found by Jan Kara. Signed-off-by: Mingming Cao Signed-off-by: "Theodore Ts'o" Signed-off-by: Greg Kroah-Hartman --- diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c index 81fe02da87ed..f507ca7991ce 100644 --- a/fs/ext4/inode.c +++ b/fs/ext4/inode.c @@ -1855,11 +1855,11 @@ repeat: if (ext4_claim_free_blocks(sbi, total)) { spin_unlock(&EXT4_I(inode)->i_block_reservation_lock); + vfs_dq_release_reservation_block(inode, total); if (ext4_should_retry_alloc(inode->i_sb, &retries)) { yield(); goto repeat; } - vfs_dq_release_reservation_block(inode, total); return -ENOSPC; } EXT4_I(inode)->i_reserved_data_blocks += nrblocks;