diff --git a/services/clouddisk_database/src/clouddisk_rdbstore.cpp b/services/clouddisk_database/src/clouddisk_rdbstore.cpp index 571f95b20f31dfc0360c0a23fbe6d67f15431d81..9b663091ef07067e95765d886cb7e9b1b10b799a 100644 --- a/services/clouddisk_database/src/clouddisk_rdbstore.cpp +++ b/services/clouddisk_database/src/clouddisk_rdbstore.cpp @@ -1060,7 +1060,8 @@ int32_t CloudDiskRdbStore::HandleRecycleXattr(const string &name, const string & LOGE("set xAttr location fail, ret %{public}d", ret); return E_RDB; } - ret = MetaFileMgr::GetInstance().MoveIntoRecycleDentryfile(userId_, bundleName_, name, parentCloudId, rowId); + struct RestoreInfo restoreInfo = {name, parentCloudId, name, rowId}; + ret = MetaFileMgr::GetInstance().MoveIntoRecycleDentryfile(userId_, bundleName_, restoreInfo); if (ret != E_OK) { LOGE("recycle set dentryfile failed, ret = %{public}d", ret); return ret; diff --git a/test/unittests/clouddisk_database/mock/meta_file_clouddisk_mock.cpp b/test/unittests/clouddisk_database/mock/meta_file_clouddisk_mock.cpp index 8d18ad39a6f1cba5c2be1ed473229c73a26c9ad2..07ee2929514c188a1b342e3aa339e7f5b84f3f14 100644 --- a/test/unittests/clouddisk_database/mock/meta_file_clouddisk_mock.cpp +++ b/test/unittests/clouddisk_database/mock/meta_file_clouddisk_mock.cpp @@ -553,10 +553,10 @@ int32_t MetaFileMgr::CreateRecycleDentry(uint32_t userId, const std::string &bun return E_OK; } -int32_t MetaFileMgr::MoveIntoRecycleDentryfile(uint32_t userId, const std::string &bundleName, const std::string &name, - const std::string &parentCloudId, int64_t rowId) +int32_t MetaFileMgr::MoveIntoRecycleDentryfile(uint32_t userId, const std::string &bundleName, + const struct RestoreInfo &restoreInfo) { - if (parentCloudId == "mock") { + if (restoreInfo.parentCloudId == "mock") { return E_RDB; } return E_OK; diff --git a/test/unittests/cloudsync_sa/dentry/dentry_meta_file_clouddisk_test.cpp b/test/unittests/cloudsync_sa/dentry/dentry_meta_file_clouddisk_test.cpp index 7df2f1a46629134f1d718d5fab8365ff4ecfd2e7..eaeb78fb4c14847771e6b4e208da72a085cce404 100644 --- a/test/unittests/cloudsync_sa/dentry/dentry_meta_file_clouddisk_test.cpp +++ b/test/unittests/cloudsync_sa/dentry/dentry_meta_file_clouddisk_test.cpp @@ -284,8 +284,9 @@ HWTEST_F(CloudDiskDentryMetaFileTest, MoveIntoRecycleDentryfileTest001, TestSize string name = ".trash"; string parentCloudId = "rootId"; int64_t rowId = 0; + struct RestoreInfo restoreInfo = {name, parentCloudId, name, rowId}; int32_t ret = MetaFileMgr::GetInstance().MoveIntoRecycleDentryfile(userId, bundleName, - name, parentCloudId, rowId); + restoreInfo); EXPECT_EQ(ret, 0); MetaFileMgr::GetInstance().CloudDiskClearAll(); } catch (...) { diff --git a/utils/dentry/include/meta_file.h b/utils/dentry/include/meta_file.h index efad14bc05a0dc3aad2f08d3dde2e86d1be9b763..f1476dfb6c09ad5fbd9920b43e710d3f1d7a6aa6 100644 --- a/utils/dentry/include/meta_file.h +++ b/utils/dentry/include/meta_file.h @@ -145,7 +145,7 @@ public: void Clear(uint32_t userId, const std::string &bundleName, const std::string &cloudId); int32_t CreateRecycleDentry(uint32_t userId, const std::string &bundleName); int32_t MoveIntoRecycleDentryfile(uint32_t userId, const std::string &bundleName, - const std::string &name, const std::string &parentCloudId, int64_t rowId); + const struct RestoreInfo &restoreInfo); int32_t RemoveFromRecycleDentryfile(uint32_t userId, const std::string &bundleName, const struct RestoreInfo &restoreinfo); int32_t GetNewName(std::shared_ptr metaFile, diff --git a/utils/dentry/src/meta_file_clouddisk.cpp b/utils/dentry/src/meta_file_clouddisk.cpp index 6381662c5c02c003f30c14830306668f5a16cfc8..19a4109f24debfeb74bffc4ec839d43b5f72b745 100644 --- a/utils/dentry/src/meta_file_clouddisk.cpp +++ b/utils/dentry/src/meta_file_clouddisk.cpp @@ -750,13 +750,13 @@ int32_t MetaFileMgr::CreateRecycleDentry(uint32_t userId, const std::string &bun return 0; } -int32_t MetaFileMgr::MoveIntoRecycleDentryfile(uint32_t userId, const std::string &bundleName, const std::string &name, - const std::string &parentCloudId, int64_t rowId) +int32_t MetaFileMgr::MoveIntoRecycleDentryfile(uint32_t userId, const std::string &bundleName, + const struct RestoreInfo &restoreInfo) { - MetaBase metaBase(name); - auto srcMetaFile = MetaFileMgr::GetInstance().GetCloudDiskMetaFile(userId, bundleName, parentCloudId); + MetaBase metaBase(restoreInfo.oldName); + auto srcMetaFile = MetaFileMgr::GetInstance().GetCloudDiskMetaFile(userId, bundleName, restoreInfo.parentCloudId); auto dstMetaFile = MetaFileMgr::GetInstance().GetCloudDiskMetaFile(userId, bundleName, RECYCLE_CLOUD_ID); - std::string uniqueName = name + "_" + std::to_string(rowId); + std::string uniqueName = restoreInfo.newName + "_" + std::to_string(restoreInfo.rowId); int32_t ret = srcMetaFile->DoLookup(metaBase); if (ret != E_OK) { LOGE("lookup src metafile failed, ret = %{public}d", ret); @@ -765,10 +765,10 @@ int32_t MetaFileMgr::MoveIntoRecycleDentryfile(uint32_t userId, const std::strin metaBase.name = uniqueName; ret = dstMetaFile->DoCreate(metaBase); if (ret != E_OK) { - LOGE("lookup and remove dentry failed, ret = %{public}d", ret); + LOGE("DoCreate dst metafile failed, ret = %{public}d", ret); return ret; } - metaBase.name = name; + metaBase.name = restoreInfo.oldName; ret = srcMetaFile->DoLookupAndRemove(metaBase); if (ret != E_OK) { LOGE("lookup and remove dentry failed, ret = %{public}d", ret); @@ -794,7 +794,7 @@ int32_t MetaFileMgr::RemoveFromRecycleDentryfile(uint32_t userId, const std::str metaBase.name = restoreInfo.newName; ret = dstMetaFile->DoCreate(metaBase); if (ret != E_OK) { - LOGE("lookup and remove dentry failed, ret = %{public}d", ret); + LOGE("DoCreate dst metafile failed, ret = %{public}d", ret); return ret; } metaBase.name = uniqueName;