Whamcloud - gitweb
LU-15163 osd: osd_obj_map_recover() to restart transaction 68/45368/8
authorAlex Zhuravlev <bzzz@whamcloud.com>
Tue, 26 Oct 2021 08:38:50 +0000 (11:38 +0300)
committerOleg Drokin <green@whamcloud.com>
Thu, 19 Jan 2023 15:29:30 +0000 (15:29 +0000)
osd_obj_map_recover() stops transaction when need to call
vfs_link() and it has to start a new transaction to modify
filesystem.

Signed-off-by: Alex Zhuravlev <bzzz@whamcloud.com>
Change-Id: I6efe5444ddc959b19092bebc6e3c7dc25a29cea1
Reviewed-on: https://review.whamcloud.com/c/fs/lustre-release/+/45368
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Reviewed-by: Li Dongyang <dongyangli@ddn.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
lustre/osd-ldiskfs/osd_compat.c

index 0ca9fde..a67533e 100644 (file)
@@ -1311,6 +1311,14 @@ int osd_obj_map_recover(struct osd_thread_info *info,
                }
                if (rc)
                        RETURN(rc);
+
+               jh = osd_journal_start_sb(osd_sb(osd), LDISKFS_HT_MISC,
+                               osd_dto_credits_noquota[DTO_INDEX_DELETE] +
+                               osd_dto_credits_noquota[DTO_INDEX_INSERT] +
+                               osd_dto_credits_noquota[DTO_OBJECT_DELETE]);
+               if (IS_ERR(jh))
+                       RETURN(PTR_ERR(jh));
+               inode_lock(dir);
        }
 
        bh = osd_ldiskfs_find_entry(src_parent, &src_child->d_name, &de,