diff options
Diffstat (limited to '')
-rw-r--r-- | src/mds/DamageTable.h | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/src/mds/DamageTable.h b/src/mds/DamageTable.h index a1b96fe2218..a8182491a9f 100644 --- a/src/mds/DamageTable.h +++ b/src/mds/DamageTable.h @@ -30,7 +30,8 @@ typedef enum { DAMAGE_ENTRY_DIRFRAG, DAMAGE_ENTRY_DENTRY, - DAMAGE_ENTRY_BACKTRACE + DAMAGE_ENTRY_BACKTRACE, + DAMAGE_ENTRY_UNINLINE_FILE } damage_entry_type_t; @@ -162,6 +163,16 @@ class DamageTable void remove_backtrace_damage_entry(inodeno_t ino); + /** + * Indicate that there was some error when attempting to unline data of + * the file. + * + * @return true if fatal + */ + bool notify_uninline_failed( + inodeno_t ino, mds_rank_t rank, int32_t failure_errno, + std::string_view scrub_tag, std::string_view path); + bool is_dentry_damaged( const CDir *dir_frag, std::string_view dname, @@ -194,6 +205,9 @@ class DamageTable // (i.e. have probably/possibly missing backtraces) std::map<inodeno_t, DamageEntryRef> remotes; + // Map of all inodes for which Data Uninlining failed + std::map<inodeno_t, DamageEntryRef> uninline_failures; + // All damage, by ID. This is a secondary index // to the dirfrag, dentry, remote maps. It exists // to enable external tools to unambiguously operate |