This fixes the "i_blocks went wrong when the disk filled up"
authorAndrew Morton <akpm@zip.com.au>
Thu, 4 Apr 2002 00:39:51 +0000 (19:39 -0500)
committerJeff Garzik <jgarzik@mandrakesoft.com>
Thu, 4 Apr 2002 00:39:51 +0000 (19:39 -0500)
commitb1a5f6420971b910f690f521bfc6a27620b342af
treee19ab66c9bcfdeb0f07027330fb9d864ee5742cb
parent5e4b50795ee8c7659a1181cea4c98712e02ea63e
This fixes the "i_blocks went wrong when the disk filled up"
problem.

In ext3_new_block() we increment i_blocks early, so the
quota operation can be performed outside lock_super().
But if the block allocation ends up failing, we forget to
undo the allocation.

This is not a serious bug, and probably does not warrant
an upgrade for production machines.  Its effects are:

1) errors are generated from e2fsck and

2) users could appear to be over quota when they really aren't.

The patch undoes the accounting operation if the allocation
ends up failing.
fs/ext3/balloc.c