1
0
mirror of git://sourceware.org/git/lvm2.git synced 2025-08-31 09:49:29 +03:00

Show read-only activation in display tools.

This commit is contained in:
Alasdair Kergon
2012-01-12 16:58:43 +00:00
parent 5d5c80ace7
commit 8f95d94b4f
4 changed files with 22 additions and 4 deletions

View File

@ -1,5 +1,7 @@
Version 2.02.89 - 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. Add activation/read_only_volume_list to override LV permission in metadata.
Give priority to emcpower devices with duplicate PVIDs. Give priority to emcpower devices with duplicate PVIDs.
Add check for error in _adjust_policy_params() (lvextend --use-policies). Add check for error in _adjust_policy_params() (lvextend --use-policies).

View File

@ -485,7 +485,8 @@ void lvdisplay_colons(const struct logical_volume *lv)
lv->vg->name, lv->vg->name,
lv->name, lv->name,
lv->vg->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, */ /* FIXME lv->lv_number, */
inkernel ? info.open_count : 0, lv->size, lv->le_count, inkernel ? info.open_count : 0, lv->size, lv->le_count,
/* FIXME Add num allocated to struct! lv->lv_allocated_le, */ /* FIXME Add num allocated to struct! lv->lv_allocated_le, */
@ -500,6 +501,7 @@ int lvdisplay_full(struct cmd_context *cmd,
struct lvinfo info; struct lvinfo info;
int inkernel, snap_active = 0; int inkernel, snap_active = 0;
char uuid[64] __attribute__((aligned(8))); char uuid[64] __attribute__((aligned(8)));
const char *access_str;
struct lv_segment *snap_seg = NULL, *mirror_seg = NULL; struct lv_segment *snap_seg = NULL, *mirror_seg = NULL;
percent_t snap_percent; percent_t snap_percent;
@ -508,6 +510,13 @@ int lvdisplay_full(struct cmd_context *cmd,
inkernel = lv_info(cmd, lv, 0, &info, 1, 1) && info.exists; 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("--- Logical volume ---");
log_print("LV Name %s%s/%s", lv->vg->cmd->dev_dir, log_print("LV Name %s%s/%s", lv->vg->cmd->dev_dir,
@ -516,8 +525,7 @@ int lvdisplay_full(struct cmd_context *cmd,
log_print("LV UUID %s", uuid); log_print("LV UUID %s", uuid);
log_print("LV Write Access %s", log_print("LV Write Access %s", access_str);
(lv->status & LVM_WRITE) ? "read/write" : "read only");
if (lv_is_origin(lv)) { if (lv_is_origin(lv)) {
log_print("LV snapshot status source of"); log_print("LV snapshot status source of");

View File

@ -431,6 +431,13 @@ char *lv_attr_dup(struct dm_pool *mem, const struct logical_volume *lv)
repstr[4] = 'I'; /* Invalid snapshot */ 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' : '-'; repstr[5] = (info.open_count) ? 'o' : '-';
} else { } else {
repstr[4] = '-'; repstr[4] = '-';

View File

@ -94,7 +94,8 @@ mirror or raid (i)mage, mirror or raid (I)mage out-of-sync, mirror (l)og device,
under (c)onversion, thin (V)olume, (t)hin pool, (T)hin pool data, raid or under (c)onversion, thin (V)olume, (t)hin pool, (T)hin pool data, raid or
thin pool m(e)tadata thin pool m(e)tadata
.IP 2 3 .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 .IP 3 3
Allocation policy: (c)ontiguous, c(l)ing, (n)ormal, (a)nywhere, (i)nherited Allocation policy: (c)ontiguous, c(l)ing, (n)ormal, (a)nywhere, (i)nherited
This is capitalised if the volume is currently locked against allocation This is capitalised if the volume is currently locked against allocation