diff options
Diffstat (limited to 'lib/snapshot/snapshot.c')
-rw-r--r-- | lib/snapshot/snapshot.c | 16 |
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; |