2007-06-21 01:55:39

by Takashi Sato

[permalink] [raw]
Subject: [RFC][PATCH 8/10] Release reserved block

- Release reserved blocks if defrag failed.

Signed-off-by: Takashi Sato <[email protected]>
Signed-off-by: Akira Fujita <[email protected]>
---
diff -X Online-Defrag_linux-2.6.19-rc6-git/Documentation/dontdiff -upNr Online-Defrag_linux-2.6.19-rc6-git-BLOCK_RELEASE/fs/ext4/extents.c Online-Defrag_linux-2.6.19-rc6-git-lg-mballoc-bugfix/fs/ext4/extents.c
--- Online-Defrag_linux-2.6.19-rc6-git-BLOCK_RELEASE/fs/ext4/extents.c 2007-06-19 20:19:14.000000000 +0900
+++ Online-Defrag_linux-2.6.19-rc6-git-lg-mballoc-bugfix/fs/ext4/extents.c 2007-06-18 14:23:07.000000000 +0900
@@ -3066,6 +3066,10 @@ int ext4_ext_ioctl(struct inode *inode,

err = ext4_ext_defrag_victim(filp, &ext_info);

+ } else if (cmd == EXT4_IOC_BLOCK_RELEASE) {
+ mutex_lock(&EXT4_I(inode)->truncate_mutex);
+ ext4_discard_reservation(inode);
+ mutex_unlock(&EXT4_I(inode)->truncate_mutex);
} else if (cmd == EXT4_IOC_DEFRAG) {
struct ext4_ext_defrag_data defrag;