mirror of
https://github.com/scylladb/scylladb.git
synced 2026-05-22 15:52:13 +00:00
Currently, we determine the live vs. total snapshot size by listing all files in the snapshot directory, and for each name, look it up in the base table directory and see if it exists there, and if so, if it's the same file as in the snapshot by looking to the fstat data for the dev id and inode number. However, we do not look the names in the staging directory so staging sstable would skew the results as the will falsely contribute to the live size, since they wouldn't be found in the base directory. This change processes both the staging directory and base table directory and keeps the file capacity in a map, indexed by the files inode number, allowing us to easily detect hard links and be resilient against concurrent move of files from the staging sub-directory back into the base table directory. Fixes #27635 * Minor issue, no backport required Closes scylladb/scylladb#27636 * github.com:scylladb/scylladb: table: get_snapshot_details: add FIXME comments table: get_snapshot_details: lookup entries also in the staging directory table: get_snapshot_details: optimize using the entry number_of_links table: get_snapshot_details: continue loop for manifest and schema entries table: get_snapshot_details: use directory_lister