[SCM] Samba Shared Repository - branch v4-20-test updated

Jule Anger janger at samba.org
Tue Jul 9 09:44:01 UTC 2024


The branch, v4-20-test has been updated
       via  63b47dc0edc Fix starvation of pending writes in CTDB queues
       via  95058b97865 build: --vendor-suffix instead of --vendor-patch-revision --vendor-name
       via  5531ef4d2b0 buildtools: sanitise strange characters in vendor strings
      from  bff728a842f third_party/heimdal: Import lorikeet-heimdal-202406240121 (commit 4315286377278234be2f3b6d52225a17b6116d54)

https://git.samba.org/?p=samba.git;a=shortlog;h=v4-20-test


- Log -----------------------------------------------------------------
commit 63b47dc0edcd0a1ffe53dd083249d3e9029f4e62
Author: Xavi Hernandez <xhernandez at redhat.com>
Date:   Thu Jun 27 15:41:19 2024 +0200

    Fix starvation of pending writes in CTDB queues
    
    CTDB uses a queue to receive requests and send answers. It works
    asynchronously using the tevent framework. However there was an issue
    that gave priority to the receiving side so, when a request was
    processed and the answer posted to the queue, if another incoming
    request arrived, it was served before sending the previous answer.
    
    This scenario could repeat for long periods of time if the frequency of
    incoming requests was high enough.
    
    Eventually, a small time gap between incoming request gave a chance to
    process the pending output queue, sending many answers in a burst.
    
    This patch makes sure that both queues (input and output) are processed
    if the event contains the appropriate flag.
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=15678
    RN: Fix unnecessary delays in CTDB while processing requests under high
    load.
    
    Signed-off-by: Xavi Hernandez <xhernandez at redhat.com>
    Reviewed-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Martin Schwenke <martin at meltin.net>
    
    Autobuild-User(master): Volker Lendecke <vl at samba.org>
    Autobuild-Date(master): Mon Jul  1 09:17:43 UTC 2024 on atb-devel-224
    
    (cherry picked from commit 60550fbe184a5cefa55a8f0bab508f70def7a684)
    
    Autobuild-User(v4-20-test): Jule Anger <janger at samba.org>
    Autobuild-Date(v4-20-test): Tue Jul  9 09:43:01 UTC 2024 on atb-devel-224

commit 95058b97865cf179467e6d85a2f92ad8c27c0513
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Fri Jun 21 10:40:59 2024 +1200

    build: --vendor-suffix instead of --vendor-patch-revision --vendor-name
    
    In practice there isn't a use for two options, and neither quite
    matched what people thought they were doing.
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=15673
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Jo Sutton <josutton at catalyst.net.nz>
    (cherry picked from commit 673c8e6ca5994973e4887641c3599707a66a608c)

commit 5531ef4d2b0569ded5f9be4396c84acc5042ce55
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Fri Jun 21 10:38:40 2024 +1200

    buildtools: sanitise strange characters in vendor strings
    
    There is no reason to think '-' and '+' are the only characters that
    might sneak into a vendor string; Debian habitually use '~'.
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=15673
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Jo Sutton <josutton at catalyst.net.nz>
    (cherry picked from commit 0bc5b6f29307ce758774c1b2f48ce62315fdc7f9)

-----------------------------------------------------------------------

Summary of changes:
 buildtools/wafsamba/samba_abi.py |  6 +++---
 ctdb/common/ctdb_io.c            | 17 +++++++++++------
 script/autobuild.py              |  4 ++--
 wscript                          | 12 +-----------
 4 files changed, 17 insertions(+), 22 deletions(-)


Changeset truncated at 500 lines:

diff --git a/buildtools/wafsamba/samba_abi.py b/buildtools/wafsamba/samba_abi.py
index 2d9505d255c..c82ba3424f9 100644
--- a/buildtools/wafsamba/samba_abi.py
+++ b/buildtools/wafsamba/samba_abi.py
@@ -286,7 +286,7 @@ def abi_build_vscript(task):
         f.close()
 
 def VSCRIPT_MAP_PRIVATE(bld, libname, orig_vscript, version, private_vscript):
-    version = version.replace("-", "_").replace("+","_").upper()
+    version = re.sub(r'\W', '_', version).upper()
     t = bld.SAMBA_GENERATOR(private_vscript,
                             rule=abi_build_vscript,
                             source=orig_vscript,
@@ -314,8 +314,8 @@ def ABI_VSCRIPT(bld, libname, abi_directory, version, vscript, abi_match=None, p
 
     libname = os.path.basename(libname)
     version = os.path.basename(version)
-    libname = libname.replace("-", "_").replace("+","_").upper()
-    version = version.replace("-", "_").replace("+","_").upper()
+    libname = re.sub(r'\W', '_', libname).upper()
+    version = re.sub(r'\W', '_', version).upper()
 
     t = bld.SAMBA_GENERATOR(vscript,
                             rule=abi_build_vscript,
diff --git a/ctdb/common/ctdb_io.c b/ctdb/common/ctdb_io.c
index bf8bc73b77d..9ac9b84a7fb 100644
--- a/ctdb/common/ctdb_io.c
+++ b/ctdb/common/ctdb_io.c
@@ -272,7 +272,7 @@ static void queue_dead(struct tevent_context *ev, struct tevent_immediate *im,
 /*
   called when an incoming connection is writeable
 */
-static void queue_io_write(struct ctdb_queue *queue)
+static bool queue_io_write(struct ctdb_queue *queue)
 {
 	while (queue->out_queue) {
 		struct ctdb_queue_pkt *pkt = queue->out_queue;
@@ -294,14 +294,14 @@ static void queue_io_write(struct ctdb_queue *queue)
 			queue->fd = -1;
 			tevent_schedule_immediate(queue->im, queue->ctdb->ev,
 						  queue_dead, queue);
-			return;
+			return false;
 		}
-		if (n <= 0) return;
+		if (n <= 0) return true;
 		
 		if (n != pkt->length) {
 			pkt->length -= n;
 			pkt->data += n;
-			return;
+			return true;
 		}
 
 		DLIST_REMOVE(queue->out_queue, pkt);
@@ -310,6 +310,8 @@ static void queue_io_write(struct ctdb_queue *queue)
 	}
 
 	TEVENT_FD_NOT_WRITEABLE(queue->fde);
+
+	return true;
 }
 
 /*
@@ -320,10 +322,13 @@ static void queue_io_handler(struct tevent_context *ev, struct tevent_fd *fde,
 {
 	struct ctdb_queue *queue = talloc_get_type(private_data, struct ctdb_queue);
 
+	if (flags & TEVENT_FD_WRITE) {
+		if (!queue_io_write(queue)) {
+			return;
+		}
+	}
 	if (flags & TEVENT_FD_READ) {
 		queue_io_read(queue);
-	} else {
-		queue_io_write(queue);
 	}
 }
 
diff --git a/script/autobuild.py b/script/autobuild.py
index 7291522c26d..0388342bc23 100755
--- a/script/autobuild.py
+++ b/script/autobuild.py
@@ -892,10 +892,10 @@ tasks = {
             ("ldb-make", "cd lib/ldb && make"),
             ("ldb-install", "cd lib/ldb && make install"),
 
-            ("nondevel-configure", samba_libs_envvars + " ./configure --vendor-name=autobuild-TEST-STRING --vendor-patch-revision=5 ${PREFIX}"),
+            ("nondevel-configure", samba_libs_envvars + " ./configure --vendor-suffix=TEST-STRING~5.1.2 ${PREFIX}"),
             ("nondevel-make", "make -j"),
             ("nondevel-check", "./bin/smbd -b | grep WITH_NTVFS_FILESERVER && exit 1; exit 0"),
-            ("nondevel-check", "./bin/smbd --version | grep -e '-autobuild-TEST-STRING-5' && exit 0; exit 1"),
+            ("nondevel-check", "./bin/smbd --version | grep -F 'TEST-STRING~5.1.2' && exit 0; exit 1"),
             ("nondevel-no-libtalloc", "find ./bin | grep -v 'libtalloc-report' | grep 'libtalloc' && exit 1; exit 0"),
             ("nondevel-no-libtdb", "find ./bin | grep -v 'libtdb-wrap' | grep 'libtdb' && exit 1; exit 0"),
             ("nondevel-no-libtevent", "find ./bin | grep -v 'libtevent-util' | grep 'libtevent' && exit 1; exit 0"),
diff --git a/wscript b/wscript
index 167a3a7e79d..b9e7786ed18 100644
--- a/wscript
+++ b/wscript
@@ -140,27 +140,17 @@ def options(opt):
                                dest='with_smb1server',
                                help=("Build smbd with SMB1 support (default=yes)."))
 
-    opt.add_option('--vendor-name',
+    opt.add_option('--vendor-suffix',
                    help=('Specify a vendor (or packager) name to include in the version string'),
                    type="string",
                    dest='SAMBA_VERSION_VENDOR_SUFFIX',
                    default=None)
 
-    opt.add_option('--vendor-patch-revision',
-                   help=('Specify a vendor (or packager) patch revision number include in the version string (requires --vendor-name)'),
-                   type="int",
-                   dest='SAMBA_VERSION_VENDOR_PATCH',
-                   default=None)
 
 def configure(conf):
     if Options.options.SAMBA_VERSION_VENDOR_SUFFIX:
         conf.env.SAMBA_VERSION_VENDOR_SUFFIX = Options.options.SAMBA_VERSION_VENDOR_SUFFIX
 
-    if Options.options.SAMBA_VERSION_VENDOR_PATCH:
-        if not Options.options.SAMBA_VERSION_VENDOR_SUFFIX:
-            raise conf.fatal('--vendor-patch-revision requires --vendor-version')
-        conf.env.SAMBA_VERSION_VENDOR_PATCH = Options.options.SAMBA_VERSION_VENDOR_PATCH
-
     version = samba_version.load_version(env=conf.env)
 
     conf.DEFINE('CONFIG_H_IS_FROM_SAMBA', 1)


-- 
Samba Shared Repository



More information about the samba-cvs mailing list