summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlasdair Kergon <agk@redhat.com>2006-04-07 17:41:56 +0000
committerAlasdair Kergon <agk@redhat.com>2006-04-07 17:41:56 +0000
commitace652e673e8f97cd5f2c24925a6e0d1dd9b4c15 (patch)
tree707ff1c71081228302cb15a12d4453f20fd8e035
parentd79e9d0d61a092d40dcb2ca03540c87c5b457485 (diff)
downloadlvm2-ace652e673e8f97cd5f2c24925a6e0d1dd9b4c15.tar.gz
lvm2-ace652e673e8f97cd5f2c24925a6e0d1dd9b4c15.tar.xz
lvm2-ace652e673e8f97cd5f2c24925a6e0d1dd9b4c15.zip
lv_is_visible()
-rw-r--r--WHATS_NEW2
-rw-r--r--lib/metadata/metadata.h1
-rw-r--r--lib/metadata/snapshot_manip.c8
-rw-r--r--lib/report/report.c3
-rw-r--r--tools/lvdisplay.c3
-rw-r--r--tools/lvscan.c4
-rw-r--r--tools/reporter.c8
7 files changed, 15 insertions, 14 deletions
diff --git a/WHATS_NEW b/WHATS_NEW
index a136f5f8..91e88b4a 100644
--- a/WHATS_NEW
+++ b/WHATS_NEW
@@ -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);