diff options
author | Alasdair Kergon <agk@redhat.com> | 2006-04-07 17:41:56 +0000 |
---|---|---|
committer | Alasdair Kergon <agk@redhat.com> | 2006-04-07 17:41:56 +0000 |
commit | ace652e673e8f97cd5f2c24925a6e0d1dd9b4c15 (patch) | |
tree | 707ff1c71081228302cb15a12d4453f20fd8e035 | |
parent | d79e9d0d61a092d40dcb2ca03540c87c5b457485 (diff) | |
download | lvm2-ace652e673e8f97cd5f2c24925a6e0d1dd9b4c15.tar.gz lvm2-ace652e673e8f97cd5f2c24925a6e0d1dd9b4c15.tar.xz lvm2-ace652e673e8f97cd5f2c24925a6e0d1dd9b4c15.zip |
lv_is_visible()
-rw-r--r-- | WHATS_NEW | 2 | ||||
-rw-r--r-- | lib/metadata/metadata.h | 1 | ||||
-rw-r--r-- | lib/metadata/snapshot_manip.c | 8 | ||||
-rw-r--r-- | lib/report/report.c | 3 | ||||
-rw-r--r-- | tools/lvdisplay.c | 3 | ||||
-rw-r--r-- | tools/lvscan.c | 4 | ||||
-rw-r--r-- | tools/reporter.c | 8 |
7 files changed, 15 insertions, 14 deletions
@@ -1,7 +1,7 @@ Version 2.02.03 - =================================== Update extent size information in vgchange and vgcreate man pages. - Introduce origin_from_cow(). + Introduce origin_from_cow() and lv_is_visible(). pvremove without -f now fails if there's no PV label. Support lvconvert -s. Suppress locking library load failure message if --ignorelockingfailure. diff --git a/lib/metadata/metadata.h b/lib/metadata/metadata.h index b80afbbf..20459f04 100644 --- a/lib/metadata/metadata.h +++ b/lib/metadata/metadata.h @@ -535,6 +535,7 @@ int lv_split_segment(struct logical_volume *lv, uint32_t le); */ int lv_is_origin(const struct logical_volume *lv); int lv_is_cow(const struct logical_volume *lv); +int lv_is_visible(const struct logical_volume *lv); int pv_is_in_vg(struct volume_group *vg, struct physical_volume *pv); diff --git a/lib/metadata/snapshot_manip.c b/lib/metadata/snapshot_manip.c index 792bc741..cb2e6411 100644 --- a/lib/metadata/snapshot_manip.c +++ b/lib/metadata/snapshot_manip.c @@ -28,6 +28,14 @@ int lv_is_cow(const struct logical_volume *lv) return lv->snapshot ? 1 : 0; } +int lv_is_visible(const struct logical_volume *lv) +{ + if (lv_is_cow(lv)) + return lv_is_visible(find_cow(lv)->lv); + + return lv->status & VISIBLE_LV ? 1 : 0; +} + /* Given a cow LV, return the snapshot lv_segment that uses it */ struct lv_segment *find_cow(const struct logical_volume *lv) { diff --git a/lib/report/report.c b/lib/report/report.c index 3ba1fcda..6218d204 100644 --- a/lib/report/report.c +++ b/lib/report/report.c @@ -525,8 +525,7 @@ static int _lvname_disp(struct report_handle *rh, struct field *field, char *repstr; size_t len; - /* FIXME Remove need for snapshot special case */ - if (lv->status & VISIBLE_LV || lv_is_cow(lv)) { + if (lv_is_visible(lv)) { repstr = lv->name; return _string_disp(rh, field, &repstr); } diff --git a/tools/lvdisplay.c b/tools/lvdisplay.c index 0dd2a140..165f8515 100644 --- a/tools/lvdisplay.c +++ b/tools/lvdisplay.c @@ -18,8 +18,7 @@ static int _lvdisplay_single(struct cmd_context *cmd, struct logical_volume *lv, void *handle) { - if (!arg_count(cmd, all_ARG) && !(lv->status & VISIBLE_LV) && - !(lv_is_cow(lv))) + if (!arg_count(cmd, all_ARG) && !lv_is_visible(lv)) return ECMD_PROCESSED; if (arg_count(cmd, colon_ARG)) diff --git a/tools/lvscan.c b/tools/lvscan.c index 1bd467d3..2faeac7d 100644 --- a/tools/lvscan.c +++ b/tools/lvscan.c @@ -27,9 +27,7 @@ static int lvscan_single(struct cmd_context *cmd, struct logical_volume *lv, const char *active_str, *snapshot_str; - /* FIXME Avoid snapshot special-case */ - if (!arg_count(cmd, all_ARG) && !(lv->status & VISIBLE_LV) && - !(lv_is_cow(lv))) + if (!arg_count(cmd, all_ARG) && !lv_is_visible(lv)) return ECMD_PROCESSED; inkernel = lv_info(cmd, lv, &info, 1) && info.exists; diff --git a/tools/reporter.c b/tools/reporter.c index 5f3775e9..f478c06e 100644 --- a/tools/reporter.c +++ b/tools/reporter.c @@ -35,9 +35,7 @@ static int _vgs_single(struct cmd_context *cmd, const char *vg_name, static int _lvs_single(struct cmd_context *cmd, struct logical_volume *lv, void *handle) { - /* FIXME Avoid snapshot special-case */ - if (!arg_count(cmd, all_ARG) && !(lv->status & VISIBLE_LV) && - !(lv_is_cow(lv))) + if (!arg_count(cmd, all_ARG) && !lv_is_visible(lv)) return ECMD_PROCESSED; if (!report_object(handle, lv->vg, lv, NULL, NULL, NULL)) @@ -83,9 +81,7 @@ static int _pvsegs_sub_single(struct cmd_context *cmd, struct volume_group *vg, static int _lvsegs_single(struct cmd_context *cmd, struct logical_volume *lv, void *handle) { - /* FIXME Avoid snapshot special-case */ - if (!arg_count(cmd, all_ARG) && !(lv->status & VISIBLE_LV) && - !(lv_is_cow(lv))) + if (!arg_count(cmd, all_ARG) && !lv_is_visible(lv)) return ECMD_PROCESSED; return process_each_segment_in_lv(cmd, lv, handle, _segs_single); |