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:
@ -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).
|
||||||
|
@ -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");
|
||||||
|
@ -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] = '-';
|
||||||
|
@ -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
|
||||||
|
Reference in New Issue
Block a user