]> sourceware.org Git - lvm2.git/commitdiff
lvmlockd: disable lvb for sanlock
authorDavid Teigland <teigland@redhat.com>
Fri, 14 Jun 2024 15:59:35 +0000 (10:59 -0500)
committerDavid Teigland <teigland@redhat.com>
Thu, 27 Jun 2024 18:29:03 +0000 (13:29 -0500)
The lvb is used to hold lock versions, but lock verions are
no longer used (since the removal of lvmetad), so the lvb
is not actually useful.  Disable their use for sanlock to
avoid the extra i/o required to maintain the lvb.

daemons/lvmlockd/lvmlockd-client.h
daemons/lvmlockd/lvmlockd-core.c
daemons/lvmlockd/lvmlockd-sanlock.c
lib/locking/lvmlockd.c

index 3a6406564dd475f5379eb736102ce2a0a0cb272f..187c07f03b5318dcaf66a3d7d633f026bfbfb5ec 100644 (file)
@@ -16,6 +16,8 @@
 #define LVMLOCKD_SOCKET DEFAULT_RUN_DIR "/lvmlockd.socket"
 #define LVMLOCKD_ADOPT_FILE DEFAULT_RUN_DIR "/lvmlockd.adopt"
 
+#define LVMLOCKD_USE_SANLOCK_LVB 0
+
 /* Wrappers to open/close connection */
 
 static inline __attribute__((always_inline))
index 327311b2fe90b76ee2f05fb0ed86e5f6c182a168..6f0500689c40815bb936b2cf3a1b3e164d266c2c 100644 (file)
@@ -1320,7 +1320,9 @@ static int res_lock(struct lockspace *ls, struct resource *r, struct action *act
                 * once someone uses the lock and writes a new lvb value.
                 * Do nothing.
                 */
+               /*
                log_debug("S %s R %s res_lock version_zero_valid still zero", ls->name, r->name);
+               */
 
        } else if (r->version_zero_valid && vb.r_version) {
                /*
index b7bc7804ec713a4c77d508d106f8d317a714534e..b1f60ee05a3dfd8b36144a3d63d9c33f5422d8de 100644 (file)
@@ -1610,12 +1610,17 @@ static int lm_add_resource_sanlock(struct lockspace *ls, struct resource *r)
 
        /* LD_RT_LV offset is set in each lm_lock call from lv_args. */
 
+       /*
+        * Disable sanlock lvb since lock versions are not currently used for
+        * anything, and it's nice to avoid the extra i/o used for lvb's.
+        */
+#if LVMLOCKD_USE_SANLOCK_LVB
        if (r->type == LD_RT_GL || r->type == LD_RT_VG) {
                rds->vb = zalloc(sizeof(struct val_blk));
                if (!rds->vb)
                        return -ENOMEM;
        }
-
+#endif
        return 0;
 }
 
@@ -1624,9 +1629,9 @@ int lm_rem_resource_sanlock(struct lockspace *ls, struct resource *r)
        struct rd_sanlock *rds = (struct rd_sanlock *)r->lm_data;
 
        /* FIXME: assert r->mode == UN or unlock if it's not? */
-
+#ifdef LVMLOCKD_USE_SANLOCK_LVB
        free(rds->vb);
-
+#endif
        memset(rds, 0, sizeof(struct rd_sanlock));
        r->lm_init = 0;
        return 0;
index 7a10e0a31c6f7432a5f3ddb012ddfe98f4f767d1..2443c979455f10bceeeb879b1f113f2d30ee9fe6 100644 (file)
@@ -2301,12 +2301,22 @@ int lockd_vg_update(struct volume_group *vg)
        int result;
        int ret;
 
-       if (!vg_is_shared(vg))
-               return 1;
        if (!_use_lvmlockd)
                return 0;
        if (!_lvmlockd_connected)
                return 0;
+       if (!vg_is_shared(vg))
+               return 1;
+
+#if !LVMLOCKD_USE_SANLOCK_LVB
+       /*
+        * lvb (for lock version) is disabled for sanlock since
+        * lock versions are not used any more, and it's more
+        * costly for sanlock to implement (extra i/o.)
+        */
+       if (!strcmp(vg->lock_type, "sanlock"))
+               return 1;
+#endif
 
        reply = _lockd_send("vg_update",
                                "pid = " FMTd64, (int64_t) getpid(),
This page took 0.0463 seconds and 5 git commands to generate.