]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
crimson/seastore: fix reactor stalled and rbd_open failed 41940/head
authorchunmei-liu <chunmei.liu@intel.com>
Mon, 21 Jun 2021 21:52:54 +0000 (14:52 -0700)
committerchunmei-liu <chunmei.liu@intel.com>
Tue, 22 Jun 2021 20:47:26 +0000 (13:47 -0700)
omap manger use keys' reference, so the keys' string set should
be kept alive during omap operation. use value capture instead of
reference capture.

otherwise, during omap operation, the keys contents will be changed
and cause logger insert_iterator very long time to stall reactor.
omap_get_value also failed, rbd_open failed.

Signed-off-by: chunmei-liu <chunmei.liu@intel.com>
src/crimson/os/seastore/seastore.cc

index 901e20128f51659ae3eed728716e4213b3329867..f2d2783e3b4ae0ba34484990a2dd86f7e720d1fc 100644 (file)
@@ -351,7 +351,7 @@ SeaStore::omap_get_values(
   return repeat_with_onode<omap_values_t>(
     c,
     oid,
-    [this, &keys](auto &t, auto &onode) {
+    [this, keys](auto &t, auto &onode) {
       omap_root_t omap_root = onode.get_layout().omap_root.get();
       return _omap_get_values(
        t,