Commit 661074e91b1da1ee262dfde6dd836deacccb9def

Authored by Al Viro
1 parent c6287315cb

Take ->i_bdev/->i_cdev handling out of clear_inode()

All call chains to clear_inode() pass through evict_inode() and
clear_inode() should be called by evict_inode() exactly once.
So we can pull i_bdev/i_cdev detaching up to evict_inode() itself.

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>

Showing 1 changed file with 4 additions and 4 deletions Side-by-side Diff

... ... @@ -313,10 +313,6 @@
313 313 inode_sync_wait(inode);
314 314 if (inode->i_sb->s_op->clear_inode)
315 315 inode->i_sb->s_op->clear_inode(inode);
316   - if (S_ISBLK(inode->i_mode) && inode->i_bdev)
317   - bd_forget(inode);
318   - if (S_ISCHR(inode->i_mode) && inode->i_cdev)
319   - cd_forget(inode);
320 316 inode->i_state = I_FREEING | I_CLEAR;
321 317 }
322 318 EXPORT_SYMBOL(clear_inode);
... ... @@ -334,6 +330,10 @@
334 330 truncate_inode_pages(&inode->i_data, 0);
335 331 clear_inode(inode);
336 332 }
  333 + if (S_ISBLK(inode->i_mode) && inode->i_bdev)
  334 + bd_forget(inode);
  335 + if (S_ISCHR(inode->i_mode) && inode->i_cdev)
  336 + cd_forget(inode);
337 337 }
338 338  
339 339 /*