]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
f2fs: add common iget in add_fsync_inode
authorJaegeuk Kim <jaegeuk@kernel.org>
Fri, 9 Sep 2016 23:48:15 +0000 (16:48 -0700)
committerJaegeuk Kim <jaegeuk@kernel.org>
Mon, 12 Sep 2016 20:55:11 +0000 (13:55 -0700)
There is no functional change.

Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
fs/f2fs/recovery.c

index ba0fc2ec7caf2152864fbdbe4ef5a7ea8b5b7a61..1269277773f53f1e8eccebfbb2cb969ce3deb14b 100644 (file)
@@ -68,14 +68,20 @@ static struct fsync_inode_entry *get_fsync_inode(struct list_head *head,
        return NULL;
 }
 
-static struct fsync_inode_entry *add_fsync_inode(struct list_head *head,
-                                                       struct inode *inode)
+static struct fsync_inode_entry *add_fsync_inode(struct f2fs_sb_info *sbi,
+                                       struct list_head *head, nid_t ino)
 {
+       struct inode *inode = f2fs_iget(sbi->sb, ino);
        struct fsync_inode_entry *entry;
 
+       if (IS_ERR(inode))
+               return ERR_CAST(inode);
+
        entry = kmem_cache_alloc(fsync_entry_slab, GFP_F2FS_ZERO);
-       if (!entry)
-               return NULL;
+       if (!entry) {
+               iput(inode);
+               return ERR_PTR(-ENOMEM);
+       }
 
        entry->inode = inode;
        list_add_tail(&entry->list, head);
@@ -105,16 +111,10 @@ static int recover_dentry(struct inode *inode, struct page *ipage,
 
        entry = get_fsync_inode(dir_list, pino);
        if (!entry) {
-               dir = f2fs_iget(inode->i_sb, pino);
-               if (IS_ERR(dir)) {
-                       err = PTR_ERR(dir);
-                       goto out;
-               }
-
-               entry = add_fsync_inode(dir_list, dir);
-               if (!entry) {
-                       err = -ENOMEM;
-                       iput(dir);
+               entry = add_fsync_inode(F2FS_I_SB(inode), dir_list, pino);
+               if (IS_ERR(entry)) {
+                       dir = ERR_CAST(entry);
+                       err = PTR_ERR(entry);
                        goto out;
                }
        }
@@ -228,7 +228,6 @@ static int find_fsync_dnodes(struct f2fs_sb_info *sbi, struct list_head *head)
 {
        unsigned long long cp_ver = cur_cp_version(F2FS_CKPT(sbi));
        struct curseg_info *curseg;
-       struct inode *inode;
        struct page *page = NULL;
        block_t blkaddr;
        int err = 0;
@@ -266,23 +265,15 @@ static int find_fsync_dnodes(struct f2fs_sb_info *sbi, struct list_head *head)
                         * CP | dnode(F) | inode(DF)
                         * For this case, we should not give up now.
                         */
-                       inode = f2fs_iget(sbi->sb, ino_of_node(page));
-                       if (IS_ERR(inode)) {
-                               err = PTR_ERR(inode);
+                       entry = add_fsync_inode(sbi, head, ino_of_node(page));
+                       if (IS_ERR(entry)) {
+                               err = PTR_ERR(entry);
                                if (err == -ENOENT) {
                                        err = 0;
                                        goto next;
                                }
                                break;
                        }
-
-                       /* add this fsync inode to the list */
-                       entry = add_fsync_inode(head, inode);
-                       if (!entry) {
-                               err = -ENOMEM;
-                               iput(inode);
-                               break;
-                       }
                }
                entry->blkaddr = blkaddr;