Commit b32714ba29358a688ef337d5297bf4bdc9f596dc
1 parent
7c51d57e9d
partial revert of asynchronous inode delete
let the core of this one bake in -next as well, but leave some of the infrastructure in place. Signed-off-by: Arjan van de Ven <arjan@linux.intel.com>
Showing 1 changed file with 7 additions and 12 deletions Side-by-side Diff
fs/inode.c
... | ... | @@ -1139,11 +1139,16 @@ |
1139 | 1139 | * I_FREEING is set so that no-one will take a new reference to the inode while |
1140 | 1140 | * it is being deleted. |
1141 | 1141 | */ |
1142 | -static void generic_delete_inode_async(void *data, async_cookie_t cookie) | |
1142 | +void generic_delete_inode(struct inode *inode) | |
1143 | 1143 | { |
1144 | - struct inode *inode = data; | |
1145 | 1144 | const struct super_operations *op = inode->i_sb->s_op; |
1146 | 1145 | |
1146 | + list_del_init(&inode->i_list); | |
1147 | + list_del_init(&inode->i_sb_list); | |
1148 | + inode->i_state |= I_FREEING; | |
1149 | + inodes_stat.nr_inodes--; | |
1150 | + spin_unlock(&inode_lock); | |
1151 | + | |
1147 | 1152 | security_inode_delete(inode); |
1148 | 1153 | |
1149 | 1154 | if (op->delete_inode) { |
... | ... | @@ -1165,16 +1170,6 @@ |
1165 | 1170 | wake_up_inode(inode); |
1166 | 1171 | BUG_ON(inode->i_state != I_CLEAR); |
1167 | 1172 | destroy_inode(inode); |
1168 | -} | |
1169 | - | |
1170 | -void generic_delete_inode(struct inode *inode) | |
1171 | -{ | |
1172 | - list_del_init(&inode->i_list); | |
1173 | - list_del_init(&inode->i_sb_list); | |
1174 | - inode->i_state |= I_FREEING; | |
1175 | - inodes_stat.nr_inodes--; | |
1176 | - spin_unlock(&inode_lock); | |
1177 | - async_schedule_special(generic_delete_inode_async, inode, &inode->i_sb->s_async_list); | |
1178 | 1173 | } |
1179 | 1174 | |
1180 | 1175 | EXPORT_SYMBOL(generic_delete_inode); |