[SCM] Samba Shared Repository - branch v4-19-test updated
Jule Anger
janger at samba.org
Tue Jul 9 08:47:01 UTC 2024
The branch, v4-19-test has been updated
via 6107f663046 Fix starvation of pending writes in CTDB queues
via a65eda03caa build: --vendor-suffix instead of --vendor-patch-revision --vendor-name
via fe5f703e428 buildtools: sanitise strange characters in vendor strings
from 2cf809bb1f3 third_party/heimdal: Import lorikeet-heimdal-202406240121 (commit 4315286377278234be2f3b6d52225a17b6116d54)
https://git.samba.org/?p=samba.git;a=shortlog;h=v4-19-test
- Log -----------------------------------------------------------------
commit 6107f663046a7a762d1c35beeaae0c1b46582f2e
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-19-test): Jule Anger <janger at samba.org>
Autobuild-Date(v4-19-test): Tue Jul 9 08:46:54 UTC 2024 on atb-devel-224
commit a65eda03caa4e22c40893333f05f75d3208098dc
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 fe5f703e4280eea502a5dbb3ca854c345b499aa6
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 682f4e897b5..22c25b8da35 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 7777c35cf12..2408bb38db6 100755
--- a/script/autobuild.py
+++ b/script/autobuild.py
@@ -888,10 +888,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 4b183fd375c..dab97d13c24 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