mirror of
git://sourceware.org/git/lvm2.git
synced 2024-12-21 13:34:40 +03:00
Support for read-only.
This commit is contained in:
parent
75e5ea90c2
commit
2bc25b546a
@ -73,6 +73,21 @@ int lv_active(struct logical_volume *lv)
|
||||
return info.exists;
|
||||
}
|
||||
|
||||
int lv_suspended(struct logical_volume *lv)
|
||||
{
|
||||
int r = -1;
|
||||
struct dm_info info;
|
||||
|
||||
if (!lv_info(lv, &info)) {
|
||||
stack;
|
||||
return r;
|
||||
}
|
||||
|
||||
log_very_verbose("%s is%s suspended", lv->name,
|
||||
info.suspended ? "":" not");
|
||||
return info.suspended;
|
||||
}
|
||||
|
||||
int lv_open_count(struct logical_volume *lv)
|
||||
{
|
||||
int r = -1;
|
||||
@ -163,6 +178,11 @@ int _load(struct logical_volume *lv, int task)
|
||||
}
|
||||
}
|
||||
|
||||
if (!(lv->status & LVM_WRITE) && !dm_task_set_ro(dmt))
|
||||
log_error("Failed to set %s read-only during activation.",
|
||||
lv->name);
|
||||
|
||||
|
||||
if (!(r = dm_task_run(dmt)))
|
||||
stack;
|
||||
|
||||
@ -211,7 +231,7 @@ int lv_reactivate(struct logical_volume *lv)
|
||||
if (test_mode())
|
||||
return 0;
|
||||
|
||||
if (!_suspend(lv, 1)) {
|
||||
if (!lv_suspended(lv) && !_suspend(lv, 1)) {
|
||||
stack;
|
||||
return 0;
|
||||
}
|
||||
@ -267,7 +287,18 @@ int activate_lvs_in_vg(struct volume_group *vg)
|
||||
|
||||
int lv_update_write_access(struct logical_volume *lv)
|
||||
{
|
||||
struct dm_info info;
|
||||
|
||||
if (!lv_info(lv, &info)) {
|
||||
stack;
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (!info.exists || info.suspended)
|
||||
/* Noop */
|
||||
return 1;
|
||||
|
||||
return lv_reactivate(lv);
|
||||
}
|
||||
|
||||
int deactivate_lvs_in_vg(struct volume_group *vg)
|
||||
|
@ -12,6 +12,7 @@
|
||||
/* FIXME Snapshot handling? */
|
||||
|
||||
int lv_active(struct logical_volume *lv);
|
||||
int lv_suspended(struct logical_volume *lv);
|
||||
int lv_open_count(struct logical_volume *lv);
|
||||
int lv_info(struct logical_volume *lv, struct dm_info *info);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user