diff options
author | Milan Broz <mbroz@redhat.com> | 2009-05-13 21:25:45 +0000 |
---|---|---|
committer | Milan Broz <mbroz@redhat.com> | 2009-05-13 21:25:45 +0000 |
commit | b14c5af76d0c3f6017f825981b9749324ed70fd8 (patch) | |
tree | f0bedbb91e6398d0801b65dc87148341cd0df1e7 /lib/metadata/snapshot_manip.c | |
parent | 0b706ac672bb86437b9361a9d53f6aae02f49039 (diff) | |
download | lvm2-b14c5af76d0c3f6017f825981b9749324ed70fd8.tar.gz lvm2-b14c5af76d0c3f6017f825981b9749324ed70fd8.tar.xz lvm2-b14c5af76d0c3f6017f825981b9749324ed70fd8.zip |
Fix lv_is_visible to handle virtual origin.
Snapshot is visible if its origin is marked visible,
or if the origin is virtual.
Diffstat (limited to 'lib/metadata/snapshot_manip.c')
-rw-r--r-- | lib/metadata/snapshot_manip.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/lib/metadata/snapshot_manip.c b/lib/metadata/snapshot_manip.c index e186dffb..0509fe0a 100644 --- a/lib/metadata/snapshot_manip.c +++ b/lib/metadata/snapshot_manip.c @@ -30,8 +30,15 @@ int lv_is_cow(const struct logical_volume *lv) int lv_is_visible(const struct logical_volume *lv) { - if (lv_is_cow(lv)) - return lv_is_visible(find_cow(lv)->lv); + if (lv->status & SNAPSHOT) + return 0; + + if (lv_is_cow(lv)) { + if (lv_is_virtual_origin(origin_from_cow(lv))) + return 1; + + return lv_is_visible(origin_from_cow(lv)); + } return lv->status & VISIBLE_LV ? 1 : 0; } |