]> sourceware.org Git - lvm2.git/commitdiff
writecache: allow attaching to thin pool data
authorDavid Teigland <teigland@redhat.com>
Thu, 6 May 2021 21:18:50 +0000 (16:18 -0500)
committerDavid Teigland <teigland@redhat.com>
Thu, 6 May 2021 21:23:03 +0000 (16:23 -0500)
tools/command-lines.in
tools/lvconvert.c

index 164516a2e0606cf87f7bb8154605026316dcb6ce..1107c1e026e133608beb322f8446943f9b324cc3 100644 (file)
@@ -493,7 +493,7 @@ AUTOTYPE: cache
 
 ---
 
-lvconvert --type writecache --cachevol LV LV_linear_striped_raid
+lvconvert --type writecache --cachevol LV LV_linear_striped_raid_thinpool
 OO: OO_LVCONVERT, --cachesettings String
 ID: lvconvert_to_writecache
 DESC: Attach a writecache to an LV, converts the LV to type writecache.
@@ -520,7 +520,7 @@ FLAGS: SECONDARY_SYNTAX
 
 ---
 
-lvconvert --type writecache --cachedevice PV LV_linear_striped_raid
+lvconvert --type writecache --cachedevice PV LV_linear_striped_raid_thinpool
 OO: OO_LVCONVERT, --cachesize SizeMB, --cachesettings String
 ID: lvconvert_to_writecache_with_device
 DESC: Add a writecache to an LV, using a specified cache device.
index 990a723b656bc1d3ea6677aa988def3f5b30ac19..8dd8a15c40544f3387cbc747825649e96c2f3add 100644 (file)
@@ -6106,6 +6106,7 @@ int lvconvert_writecache_attach_single(struct cmd_context *cmd,
                                        struct processing_handle *handle)
 {
        struct volume_group *vg = lv->vg;
+       struct logical_volume *lv_update;
        struct logical_volume *lv_wcorig;
        struct logical_volume *lv_fast;
        struct writecache_settings settings = { 0 };
@@ -6228,6 +6229,15 @@ int lvconvert_writecache_attach_single(struct cmd_context *cmd,
 
        lv_fast->status |= LV_CACHE_VOL;
 
+       /* When the lv arg is a thinpool, redirect update to data sub lv. */
+
+       if (lv_is_thin_pool(lv)) {
+               lv_update = seg_lv(first_seg(lv), 0);
+               log_verbose("Redirecting operation to data sub LV %s.", display_lvname(lv_update));
+       } else {
+               lv_update = lv;
+       }
+
        /*
         * Changes the vg struct to match the desired state.
         *
@@ -6240,7 +6250,7 @@ int lvconvert_writecache_attach_single(struct cmd_context *cmd,
         *   gets new id, becomes hidden, gets segments from lv.
         */
 
-       if (!(lv_wcorig = _lv_writecache_create(cmd, lv, lv_fast, block_size_sectors, &settings)))
+       if (!(lv_wcorig = _lv_writecache_create(cmd, lv_update, lv_fast, block_size_sectors, &settings)))
                goto_bad;
 
        /*
@@ -6248,7 +6258,7 @@ int lvconvert_writecache_attach_single(struct cmd_context *cmd,
         * where the old LV is suspended and the new LV is resumed.
         */
 
-       if (!lv_update_and_reload(lv))
+       if (!lv_update_and_reload(lv_update))
                goto_bad;
 
        lockd_lv(cmd, lv, "un", 0);
This page took 0.048258 seconds and 5 git commands to generate.