covert fatfs to ->evict_inode()
Al Viro [Sat, 5 Jun 2010 23:28:32 +0000 (19:28 -0400)]
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>

fs/fat/inode.c

index ec6a699..8300580 100644 (file)
@@ -263,7 +263,7 @@ static const struct address_space_operations fat_aops = {
  *                     check if the location is still valid and retry if it
  *                     isn't. Otherwise we do changes.
  *             5. Spinlock is used to protect hash/unhash/location check/lookup
- *             6. fat_clear_inode() unhashes the F-d-c entry.
+ *             6. fat_evict_inode() unhashes the F-d-c entry.
  *             7. lookup() and readdir() do igrab() if they find a F-d-c entry
  *                     and consider negative result as cache miss.
  */
@@ -448,16 +448,15 @@ out:
 
 EXPORT_SYMBOL_GPL(fat_build_inode);
 
-static void fat_delete_inode(struct inode *inode)
+static void fat_evict_inode(struct inode *inode)
 {
        truncate_inode_pages(&inode->i_data, 0);
-       inode->i_size = 0;
-       fat_truncate_blocks(inode, 0);
-       clear_inode(inode);
-}
-
-static void fat_clear_inode(struct inode *inode)
-{
+       if (!inode->i_nlink) {
+               inode->i_size = 0;
+               fat_truncate_blocks(inode, 0);
+       }
+       invalidate_inode_buffers(inode);
+       end_writeback(inode);
        fat_cache_inval_inode(inode);
        fat_detach(inode);
 }
@@ -674,12 +673,11 @@ static const struct super_operations fat_sops = {
        .alloc_inode    = fat_alloc_inode,
        .destroy_inode  = fat_destroy_inode,
        .write_inode    = fat_write_inode,
-       .delete_inode   = fat_delete_inode,
+       .evict_inode    = fat_evict_inode,
        .put_super      = fat_put_super,
        .write_super    = fat_write_super,
        .sync_fs        = fat_sync_fs,
        .statfs         = fat_statfs,
-       .clear_inode    = fat_clear_inode,
        .remount_fs     = fat_remount,
 
        .show_options   = fat_show_options,