From 30417d57a56f7b041cf7e2bd87c9babd5d170277 Mon Sep 17 00:00:00 2001 From: Andrea Mazzoleni Date: Fri, 14 Aug 2026 09:47:12 +0200 Subject: [PATCH] Exclude snapshot directory only when snapshot mode is enabled --- cmdline/elem.c | 5 ++++- cmdline/elem.h | 2 +- cmdline/scan.c | 2 +- cmdline/search.c | 2 +- 4 files changed, 7 insertions(+), 4 deletions(-) diff --git a/cmdline/elem.c b/cmdline/elem.c index cbd0b609..0bbcba20 100644 --- a/cmdline/elem.c +++ b/cmdline/elem.c @@ -389,8 +389,11 @@ int filter_content(tommy_list* contentlist, const char* mount_point, size_t moun return 0; } -int filter_snapshot(const char* sub, const char* name) +int filter_snapshot(int enable, const char* sub, const char* name) { + if (!enable) + return 0; + if (*sub == 0 && pathcmp(name, SNAPSHOT_CONTAINER) == 0) return -1; diff --git a/cmdline/elem.h b/cmdline/elem.h index 7a1c8018..08199edf 100644 --- a/cmdline/elem.h +++ b/cmdline/elem.h @@ -649,7 +649,7 @@ int filter_content(tommy_list* contentlist, const char* mount_point, size_t moun * Filter a path that is in a snapshot * Return !=0 if should be excluded. */ -int filter_snapshot(const char* sub, const char* name); +int filter_snapshot(int enable, const char* sub, const char* name); /** * Check if the specified hash is invalid. diff --git a/cmdline/scan.c b/cmdline/scan.c index b51aec64..ca976c18 100644 --- a/cmdline/scan.c +++ b/cmdline/scan.c @@ -1437,7 +1437,7 @@ static int scan_sub(struct snapraid_scan* scan, int level, int is_diff, char* pa } /* exclude snapshot container even before calling lstat() */ - if (filter_snapshot(sub_next, name) != 0) { + if (filter_snapshot(state->snapshot, sub_next, name) != 0) { msg_verbose("Excluding snapshots directory '%s'\n", path_next); continue; } diff --git a/cmdline/search.c b/cmdline/search.c index 8adc58ec..d3b9a515 100644 --- a/cmdline/search.c +++ b/cmdline/search.c @@ -192,7 +192,7 @@ static void search_dir(struct snapraid_state* state, struct snapraid_disk* disk, } /* exclude snapshot container even before calling lstat() */ - if (disk != 0 && filter_snapshot(sub, name) != 0) { + if (disk != 0 && filter_snapshot(state->snapshot, sub, name) != 0) { msg_verbose("Excluding snapshots directory '%s'\n", path_next); continue; }