]> sourceware.org Git - lvm2.git/commitdiff
cache: properly translate DM_THIN_DISCARDS
authorZdenek Kabelac <zkabelac@redhat.com>
Tue, 7 Mar 2017 22:55:08 +0000 (23:55 +0100)
committerZdenek Kabelac <zkabelac@redhat.com>
Fri, 10 Mar 2017 18:33:00 +0000 (19:33 +0100)
DM status uses DM defines which need to be translated to LVM enum.

lib/metadata/lv.c

index a7e1dcd980bbd15699266c1c416380a09f004826..8c33a5e52f2a3d53317fdb33e326830854a677b6 100644 (file)
@@ -227,12 +227,23 @@ char *lvseg_kernel_discards_dup_with_info_and_seg_status(struct dm_pool *mem, co
 {
        const char *s = "";
        char *ret;
+       thin_discards_t d;
 
-       if (lvdm->seg_status.type == SEG_STATUS_THIN_POOL)
-               s = get_pool_discards_name(lvdm->seg_status.thin_pool->discards);
+       if (lvdm->seg_status.type == SEG_STATUS_THIN_POOL) {
+               switch (lvdm->seg_status.thin_pool->discards) {
+               case DM_THIN_DISCARDS_IGNORE: d = THIN_DISCARDS_IGNORE; break;
+               case DM_THIN_DISCARDS_NO_PASSDOWN: d = THIN_DISCARDS_NO_PASSDOWN; break;
+               case DM_THIN_DISCARDS_PASSDOWN: d = THIN_DISCARDS_PASSDOWN; break;
+               default:
+                       log_error("Kernel reports unknown discards status %u.",
+                                 lvdm->seg_status.thin_pool->discards);
+                       return 0;
+               }
+               s = get_pool_discards_name(d);
+       }
 
        if (!(ret = dm_pool_strdup(mem, s))) {
-               log_error("lvseg_kernel_discards_dup_with_info_and_seg_status: dm_pool_strdup failed");
+               log_error("lvseg_kernel_discards_dup_with_info_and_seg_status: dm_pool_strdup failed.");
                return NULL;
        }
 
This page took 0.041542 seconds and 5 git commands to generate.