summaryrefslogtreecommitdiff
path: root/lib/snapshot/snapshot.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/snapshot/snapshot.c')
-rw-r--r--lib/snapshot/snapshot.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/lib/snapshot/snapshot.c b/lib/snapshot/snapshot.c
index 4a8f00512..91c55a9c9 100644
--- a/lib/snapshot/snapshot.c
+++ b/lib/snapshot/snapshot.c
@@ -145,13 +145,17 @@ static int _snap_target_present(struct cmd_context *cmd,
static unsigned _snap_attrs = 0;
uint32_t maj, min, patchlevel;
+ if (!activation())
+ return 0;
+
if (!_snap_checked) {
_snap_checked = 1;
- _snap_present = target_present(cmd, "snapshot", 1) &&
- target_present(cmd, "snapshot-origin", 0);
- if (_snap_present &&
- target_version("snapshot", &maj, &min, &patchlevel) &&
+ if (!(_snap_present = target_present(cmd, "snapshot", 1) &&
+ target_present(cmd, "snapshot-origin", 0)))
+ return 0;
+
+ if (target_version("snapshot", &maj, &min, &patchlevel) &&
(maj > 1 ||
(maj == 1 && (min >= 12 || (min == 10 && patchlevel >= 2)))))
_snap_attrs |= SNAPSHOT_FEATURE_FIXED_LEAK;
@@ -163,12 +167,12 @@ static int _snap_target_present(struct cmd_context *cmd,
*attributes = _snap_attrs;
/* TODO: test everything at once */
- if (seg && (seg->status & MERGING)) {
+ if (_snap_present && seg && (seg->status & MERGING)) {
if (!_snap_merge_checked) {
_snap_merge_present = target_present(cmd, "snapshot-merge", 0);
_snap_merge_checked = 1;
}
- return _snap_present && _snap_merge_present;
+ return _snap_merge_present;
}
return _snap_present;