[lvm-devel] LVM2 ./WHATS_NEW lib/metadata/lv.c lib/display ...
agk at sourceware.org
agk at sourceware.org
Thu Jan 12 16:58:45 UTC 2012
CVSROOT: /cvs/lvm2
Module name: LVM2
Changes by: agk at sourceware.org 2012-01-12 16:58:45
Modified files:
. : WHATS_NEW
lib/metadata : lv.c
lib/display : display.c
man : lvs.8.in
Log message:
Show read-only activation in display tools.
Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/WHATS_NEW.diff?cvsroot=lvm2&r1=1.2220&r2=1.2221
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/metadata/lv.c.diff?cvsroot=lvm2&r1=1.29&r2=1.30
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/display/display.c.diff?cvsroot=lvm2&r1=1.122&r2=1.123
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/man/lvs.8.in.diff?cvsroot=lvm2&r1=1.18&r2=1.19
--- LVM2/WHATS_NEW 2012/01/12 01:51:56 1.2220
+++ LVM2/WHATS_NEW 2012/01/12 16:58:43 1.2221
@@ -1,5 +1,7 @@
Version 2.02.89 -
==================================
+ Use R lv_attr to indicate read-only activation of non-read-only device in lvs.
+ Show read-only activation override in lvdisplay & add 4 to perms in -c.
Add activation/read_only_volume_list to override LV permission in metadata.
Give priority to emcpower devices with duplicate PVIDs.
Add check for error in _adjust_policy_params() (lvextend --use-policies).
--- LVM2/lib/metadata/lv.c 2011/09/23 15:17:54 1.29
+++ LVM2/lib/metadata/lv.c 2012/01/12 16:58:44 1.30
@@ -431,6 +431,13 @@
repstr[4] = 'I'; /* Invalid snapshot */
}
+ /*
+ * 'R' indicates read-only activation of a device that
+ * does not have metadata flagging it as read-only.
+ */
+ if (repstr[1] != 'r' && info.read_only)
+ repstr[1] = 'R';
+
repstr[5] = (info.open_count) ? 'o' : '-';
} else {
repstr[4] = '-';
--- LVM2/lib/display/display.c 2011/11/23 01:34:38 1.122
+++ LVM2/lib/display/display.c 2012/01/12 16:58:44 1.123
@@ -485,7 +485,8 @@
lv->vg->name,
lv->name,
lv->vg->name,
- (lv->status & (LVM_READ | LVM_WRITE)) >> 8, inkernel ? 1 : 0,
+ ((lv->status & (LVM_READ | LVM_WRITE)) >> 8) |
+ ((inkernel & info.read_only) ? 4 : 0), inkernel ? 1 : 0,
/* FIXME lv->lv_number, */
inkernel ? info.open_count : 0, lv->size, lv->le_count,
/* FIXME Add num allocated to struct! lv->lv_allocated_le, */
@@ -500,6 +501,7 @@
struct lvinfo info;
int inkernel, snap_active = 0;
char uuid[64] __attribute__((aligned(8)));
+ const char *access_str;
struct lv_segment *snap_seg = NULL, *mirror_seg = NULL;
percent_t snap_percent;
@@ -508,6 +510,13 @@
inkernel = lv_info(cmd, lv, 0, &info, 1, 1) && info.exists;
+ if ((lv->status & LVM_WRITE) && inkernel && info.read_only)
+ access_str = "read/write (activated read only)";
+ else if (lv->status & LVM_WRITE)
+ access_str = "read/write";
+ else
+ access_str = "read only";
+
log_print("--- Logical volume ---");
log_print("LV Name %s%s/%s", lv->vg->cmd->dev_dir,
@@ -516,8 +525,7 @@
log_print("LV UUID %s", uuid);
- log_print("LV Write Access %s",
- (lv->status & LVM_WRITE) ? "read/write" : "read only");
+ log_print("LV Write Access %s", access_str);
if (lv_is_origin(lv)) {
log_print("LV snapshot status source of");
--- LVM2/man/lvs.8.in 2011/11/08 12:16:53 1.18
+++ LVM2/man/lvs.8.in 2012/01/12 16:58:44 1.19
@@ -94,7 +94,8 @@
under (c)onversion, thin (V)olume, (t)hin pool, (T)hin pool data, raid or
thin pool m(e)tadata
.IP 2 3
-Permissions: (w)riteable, (r)ead-only
+Permissions: (w)riteable, (r)ead-only, (R)ead-only activation of non-read-only
+volume
.IP 3 3
Allocation policy: (c)ontiguous, c(l)ing, (n)ormal, (a)nywhere, (i)nherited
This is capitalised if the volume is currently locked against allocation
More information about the lvm-devel
mailing list