Skip to content

Commit 666a9f4

Browse files
authored
Changed skip flags when calling _ltfs_search_index_wp (#493)
1 parent 7271446 commit 666a9f4

File tree

1 file changed

+10
-4
lines changed

1 file changed

+10
-4
lines changed

src/libltfs/ltfs.c

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1658,7 +1658,8 @@ int ltfs_mount(bool force_full, bool deep_recovery, bool recover_extra, bool rec
16581658
(unsigned long long)vol->dp_coh.volume_change_ref,
16591659
(unsigned long long)volume_change_ref);
16601660

1661-
ret = _ltfs_search_index_wp(recover_symlink, false, &seekpos, vol);
1661+
/* Index of IP could be corrupted. So set skip flag to true */
1662+
ret = _ltfs_search_index_wp(recover_symlink, true, &seekpos, vol);
16621663
if (ret < 0)
16631664
goto out_unlock;
16641665

@@ -1668,7 +1669,7 @@ int ltfs_mount(bool force_full, bool deep_recovery, bool recover_extra, bool rec
16681669
seekpos.block = vol->dp_coh.set_id;
16691670
}
16701671
} else {
1671-
if (vollock != PWE_MAM_DP && vollock != PWE_MAM) {
1672+
if (vol->ip_coh.count > vol->dp_coh.count && vollock != PWE_MAM_DP && vollock != PWE_MAM) {
16721673
/*
16731674
* The index on IP is newer but MAM shows write perm doesn't happen in DP.
16741675
* LTFS already have written an index on DP when it is writing an index on IP,
@@ -1687,8 +1688,13 @@ int ltfs_mount(bool force_full, bool deep_recovery, bool recover_extra, bool rec
16871688
(unsigned long long)vol->dp_coh.volume_change_ref,
16881689
(unsigned long long)volume_change_ref);
16891690

1690-
/* Index of IP could be corrupted. So set skip flag */
1691-
ret = _ltfs_search_index_wp(recover_symlink, true, &seekpos, vol);
1691+
if (vollock == PWE_MAM_BOTH) {
1692+
/* Index of IP could be corrupted (because of double write perm). So set skip flag to true */
1693+
ret = _ltfs_search_index_wp(recover_symlink, true, &seekpos, vol);
1694+
} else {
1695+
/* Index of DP could be corrupted. So set skip flag to false */
1696+
ret = _ltfs_search_index_wp(recover_symlink, false, &seekpos, vol);
1697+
}
16921698
if (ret < 0)
16931699
goto out_unlock;
16941700

0 commit comments

Comments
 (0)