]> sourceware.org Git - lvm2.git/commitdiff
devices: simpler bcache invalidation of PVs on LVs 1353285574
authorDavid Teigland <teigland@redhat.com>
Fri, 28 Jun 2024 23:04:25 +0000 (18:04 -0500)
committerDavid Teigland <teigland@redhat.com>
Fri, 28 Jun 2024 23:19:15 +0000 (18:19 -0500)
When a PV is stacked on an LV, the PV needs to be
dropped from bcache before the LV is processed.
The LV can be found in dev-cache using its name
rather than the devno.

lib/device/dev-cache.c
lib/label/label.c

index 8dc27697bedab5bb02d34176ed4fe8ece437e623..f4176b728c06b02c46d6e10038c9a0eb965ee995 100644 (file)
@@ -1366,17 +1366,13 @@ int dev_cache_update_dm_uuids(void)
                return 1;
        }
 
-       /* _cache.dm_devs entries are referenced by radix trees */
-
-       /* TODO: if _cache.dm_devs list is small, then skip the
-          overhead of radix trees and just do list searches on dm_devs */
-
        if (!(_cache.dm_devnos = radix_tree_create(NULL, NULL)) ||
            !(_cache.dm_uuids = radix_tree_create(NULL, NULL))) {
                return_0; // FIXME
        }
 
        /* Insert every active DM device into radix trees */
+       /* _cache.dm_devs entries are referenced by radix trees */
        dm_list_iterate_items(dm_dev, _cache.dm_devs) {
                d = _shuffle_devno(dm_dev->devno);
 
index 6fda88dc7b8d208421c62e5e25a05978e33867cb..52ff9a39577693e0e0e5eb01b66943272f3c0a97 100644 (file)
@@ -1642,19 +1642,10 @@ void label_scan_invalidate(struct device *dev)
 
 void label_scan_invalidate_lv(struct cmd_context *cmd, struct logical_volume *lv)
 {
-       struct lvinfo lvinfo;
        struct device *dev;
-       dev_t devt;
 
-       /* FIXME: use dev_cache_get_existing() with the lv name,
-          which allow us to skip the getting devno from lv_info. */
-
-       if (lv_info(cmd, lv, 0, &lvinfo, 0, 0) && lvinfo.exists) {
-               /* FIXME: Still unclear what is it supposed to find */
-               devt = MKDEV(lvinfo.major, lvinfo.minor);
-               if ((dev = dev_cache_get_by_devt(cmd, devt)))
-                       label_scan_invalidate(dev);
-       }
+       if ((dev = dev_cache_get_existing(cmd, display_lvname(lv), NULL)))
+               label_scan_invalidate(dev);
 }
 
 void label_scan_invalidate_lvs(struct cmd_context *cmd, struct dm_list *lvs)
This page took 0.094974 seconds and 5 git commands to generate.