Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Changed skip flags when calling _ltfs_search_index_wp #493

Merged
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 10 additions & 4 deletions src/libltfs/ltfs.c
Original file line number Diff line number Diff line change
Expand Up @@ -1658,7 +1658,8 @@ int ltfs_mount(bool force_full, bool deep_recovery, bool recover_extra, bool rec
(unsigned long long)vol->dp_coh.volume_change_ref,
(unsigned long long)volume_change_ref);

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

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

/* Index of IP could be corrupted. So set skip flag */
ret = _ltfs_search_index_wp(recover_symlink, true, &seekpos, vol);
if (vollock == PWE_MAM_BOTH) {
/* Index of IP could be corrupted (because of double write perm). So set skip flag to true */
ret = _ltfs_search_index_wp(recover_symlink, true, &seekpos, vol);
} else {
/* Index of DP could be corrupted. So set skip flag to false */
ret = _ltfs_search_index_wp(recover_symlink, false, &seekpos, vol);
}
if (ret < 0)
goto out_unlock;

Expand Down
Loading