ext4: Fix discard of inode prealloc space with delayed allocation.
[safe/jmp/linux-2.6] / fs / ext4 / file.c
index 06df827..588af8c 100644 (file)
@@ -39,7 +39,8 @@ static int ext4_release_file(struct inode *inode, struct file *filp)
        }
        /* if we are the last writer on the inode, drop the block reservation */
        if ((filp->f_mode & FMODE_WRITE) &&
-                       (atomic_read(&inode->i_writecount) == 1))
+                       (atomic_read(&inode->i_writecount) == 1) &&
+                       !EXT4_I(inode)->i_reserved_data_blocks)
        {
                down_write(&EXT4_I(inode)->i_data_sem);
                ext4_discard_preallocations(inode);