diff options
author | Zdenek Kabelac <zkabelac@redhat.com> | 2022-08-19 14:48:01 +0200 |
---|---|---|
committer | Zdenek Kabelac <zkabelac@redhat.com> | 2022-08-19 14:56:55 +0200 |
commit | e26c21cb8d5841141dcfdfc77f46da1108a81255 (patch) | |
tree | 79aad462a3ea246344930713396cc6e97222a1a4 /lib | |
parent | 309df239e3ee474f3a5337f8fa3c0a1f7b0a89e5 (diff) | |
download | lvm2-e26c21cb8d5841141dcfdfc77f46da1108a81255.tar.gz |
vdo: extend volume and pool without flush
When the volume size is extended, there is no need to flush
IO operations (nothing can be targeting new space yet).
VDO target is supported as target that can safely work with
this condition.
Such support is also needed, when extending VDOPOOL size
while the pool is reaching its capacity - since this allows
to continue working without reaching 'out-of-space' condition
due to flushing of all in flight IO.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/activate/activate.c | 6 | ||||
-rw-r--r-- | lib/activate/dev_manager.c | 2 |
2 files changed, 7 insertions, 1 deletions
diff --git a/lib/activate/activate.c b/lib/activate/activate.c index db5f08b11..a92fbb8e1 100644 --- a/lib/activate/activate.c +++ b/lib/activate/activate.c @@ -2141,7 +2141,11 @@ static int _lv_suspend(struct cmd_context *cmd, const char *lvid_s, * TODO: Relax this limiting condition further */ if (!flush_required && (lv_is_pvmove(lv) || pvmove_lv || - (!lv_is_mirror(lv) && !lv_is_thin_pool(lv) && !lv_is_thin_volume(lv)))) { + (!lv_is_mirror(lv) && + !lv_is_thin_volume(lv) && + !lv_is_thin_pool(lv) && + !lv_is_vdo(lv) && + !lv_is_vdo_pool(lv)))) { log_debug("Requiring flush for LV %s.", display_lvname(lv)); flush_required = 1; } diff --git a/lib/activate/dev_manager.c b/lib/activate/dev_manager.c index 8cb31008e..2bfd275fd 100644 --- a/lib/activate/dev_manager.c +++ b/lib/activate/dev_manager.c @@ -3908,6 +3908,8 @@ static int _tree_action(struct dev_manager *dm, const struct logical_volume *lv, * non 'thin pool/volume' and size increase */ else if (!lv_is_thin_volume(lv) && !lv_is_thin_pool(lv) && + !lv_is_vdo(lv) && + !lv_is_vdo_pool(lv) && dm_tree_node_size_changed(root)) dm->flush_required = 1; |