diff -Npur samba-4.20.7/VERSION samba-4.20.8/VERSION
--- samba-4.20.7/VERSION	2025-01-21 14:45:28.000000000 +0100
+++ samba-4.20.8/VERSION	2025-03-25 15:40:16.000000000 +0100
@@ -27,7 +27,7 @@ SAMBA_COPYRIGHT_STRING="Copyright Andrew
 ########################################################
 SAMBA_VERSION_MAJOR=4
 SAMBA_VERSION_MINOR=20
-SAMBA_VERSION_RELEASE=7
+SAMBA_VERSION_RELEASE=8
 
 ########################################################
 # If a official release has a serious bug              #
diff -Npur samba-4.20.7/WHATSNEW.txt samba-4.20.8/WHATSNEW.txt
--- samba-4.20.7/WHATSNEW.txt	2025-01-21 14:45:28.000000000 +0100
+++ samba-4.20.8/WHATSNEW.txt	2025-03-25 15:40:16.000000000 +0100
@@ -1,4 +1,86 @@
                    ==============================
+                   Release Notes for Samba 4.20.8
+                           March 25, 2025
+                   ==============================
+
+
+This is the latest stable release of the Samba 4.20 release series.
+
+
+Changes since 4.20.7
+--------------------
+
+o  Jeremy Allison <jra@samba.org>
+   * BUG 15782: winbindd shows memleak in kerberos_decode_pac.
+
+o  Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
+   * BUG 15738: Creation of GPOs applicable to more than one group is impossible
+     with Samba 4.20.0 and later.
+   * BUG 15795: ldb index cache is too small on known large transactions
+     (schemaupgrade, provision).
+
+o  Ralph Boehme <slow@samba.org>
+   * BUG 15151: vfs_gpfs silently garbles timestamps > year 2106.
+   * BUG 15796: Spotlight search results don't show file size and creation date.
+
+o  Guenther Deschner <gd@samba.org>
+   * BUG 15703: General improvements for vfs_ceph_new module.
+
+o  Andréas Leroux <aleroux@tranquil.it>
+   * BUG 15795: ldb index cache is too small on known large transactions
+     (schemaupgrade, provision).
+
+o  Stefan Metzmacher <metze@samba.org>
+   * BUG 14213: Windows Explorer crashes on S-1-22-* Unix-SIDs when accessing
+     security tab.
+   * BUG 15783: NETLOGON_NTLMV2_ENABLED is missing in the SamLogon* user_flags
+     field.
+
+o  Anoop C S <anoopcs@samba.org>
+   * BUG 15703: General improvements for vfs_ceph_new module.
+   * BUG 15797: Unable to connect to CephFS subvolume shares with
+     vfs_shadow_copy2.
+
+o  Martin Schwenke <mschwenke@ddn.com>
+   * BUG 15820: Incorrect FSF address in ctdb pcp scripts.
+
+o  Shachar Sharon <ssharon@redhat.com>
+   * BUG 15703: General improvements for vfs_ceph_new module.
+
+o  Shweta Sodani <ssodani@redhat.com>
+   * BUG 15703: General improvements for vfs_ceph_new module.
+
+o  Jo Sutton <josutton@catalyst.net.nz>
+   * BUG 15634: unicodePwd cannot be modified over ldapi.
+
+o  Andrea Venturoli <ml@netfence.it>
+   * BUG 15804: "samba-tool domain backup offline" hangs.
+
+
+#######################################
+Reporting bugs & Development Discussion
+#######################################
+
+Please discuss this release on the samba-technical mailing list or by
+joining the #samba-technical:matrix.org matrix room, or
+#samba-technical IRC channel on irc.libera.chat.
+
+If you do report problems then please try to send high quality
+feedback. If you don't provide vital information to help us track down
+the problem then you will probably be ignored.  All bug reports should
+be filed under the Samba 4.1 and newer product in the project's Bugzilla
+database (https://bugzilla.samba.org/).
+
+
+======================================================================
+== Our Code, Our Bugs, Our Responsibility.
+== The Samba Team
+======================================================================
+
+
+Release notes for older releases follow:
+----------------------------------------
+                   ==============================
                    Release Notes for Samba 4.20.7
                           January 21, 2025
                    ==============================
@@ -65,8 +147,7 @@ database (https://bugzilla.samba.org/).
 ======================================================================
 
 
-Release notes for older releases follow:
-----------------------------------------
+----------------------------------------------------------------------
                    ==============================
                    Release Notes for Samba 4.20.6
                          November 19, 2024
diff -Npur samba-4.20.7/auth/kerberos/kerberos_pac.c samba-4.20.8/auth/kerberos/kerberos_pac.c
--- samba-4.20.7/auth/kerberos/kerberos_pac.c	2024-05-08 10:04:06.000000000 +0200
+++ samba-4.20.8/auth/kerberos/kerberos_pac.c	2025-03-25 15:40:16.000000000 +0100
@@ -137,7 +137,7 @@ NTSTATUS kerberos_decode_pac(TALLOC_CTX
 			     time_t tgs_authtime,
 			     struct PAC_DATA **pac_data_out)
 {
-	NTSTATUS status;
+	NTSTATUS status = NT_STATUS_NO_MEMORY;
 	enum ndr_err_code ndr_err;
 	krb5_error_code ret;
 	DATA_BLOB modified_pac_blob;
@@ -173,8 +173,8 @@ NTSTATUS kerberos_decode_pac(TALLOC_CTX
 	kdc_sig_wipe = talloc(tmp_ctx, struct PAC_SIGNATURE_DATA);
 	srv_sig_wipe = talloc(tmp_ctx, struct PAC_SIGNATURE_DATA);
 	if (!pac_data_raw || !pac_data || !kdc_sig_wipe || !srv_sig_wipe) {
-		talloc_free(tmp_ctx);
-		return NT_STATUS_NO_MEMORY;
+		status = NT_STATUS_NO_MEMORY;
+		goto out;
 	}
 
 	ndr_err = ndr_pull_struct_blob(&pac_data_blob, pac_data, pac_data,
@@ -183,15 +183,14 @@ NTSTATUS kerberos_decode_pac(TALLOC_CTX
 		status = ndr_map_error2ntstatus(ndr_err);
 		DEBUG(0,("can't parse the PAC: %s\n",
 			nt_errstr(status)));
-		talloc_free(tmp_ctx);
-		return status;
+		goto out;
 	}
 
 	if (pac_data->num_buffers < 4) {
 		/* we need logon_info, service_key and kdc_key */
 		DEBUG(0,("less than 4 PAC buffers\n"));
-		talloc_free(tmp_ctx);
-		return NT_STATUS_INVALID_PARAMETER;
+		status = NT_STATUS_INVALID_PARAMETER;
+		goto out;
 	}
 
 	ndr_err = ndr_pull_struct_blob(
@@ -201,15 +200,14 @@ NTSTATUS kerberos_decode_pac(TALLOC_CTX
 		status = ndr_map_error2ntstatus(ndr_err);
 		DEBUG(0,("can't parse the PAC: %s\n",
 			nt_errstr(status)));
-		talloc_free(tmp_ctx);
-		return status;
+		goto out;
 	}
 
 	if (pac_data_raw->num_buffers < 4) {
 		/* we need logon_info, service_key and kdc_key */
 		DEBUG(0,("less than 4 PAC buffers\n"));
-		talloc_free(tmp_ctx);
-		return NT_STATUS_INVALID_PARAMETER;
+		status = NT_STATUS_INVALID_PARAMETER;
+		goto out;
 	}
 
 	if (pac_data->num_buffers != pac_data_raw->num_buffers) {
@@ -217,8 +215,8 @@ NTSTATUS kerberos_decode_pac(TALLOC_CTX
 		DEBUG(0, ("misparse! PAC_DATA has %d buffers while "
 			  "PAC_DATA_RAW has %d\n", pac_data->num_buffers,
 			  pac_data_raw->num_buffers));
-		talloc_free(tmp_ctx);
-		return NT_STATUS_INVALID_PARAMETER;
+		status = NT_STATUS_INVALID_PARAMETER;
+		goto out;
 	}
 
 	for (i=0; i < pac_data->num_buffers; i++) {
@@ -229,8 +227,8 @@ NTSTATUS kerberos_decode_pac(TALLOC_CTX
 			DEBUG(0, ("misparse! PAC_DATA buffer %d has type "
 				  "%d while PAC_DATA_RAW has %d\n", i,
 				  data_buf->type, raw_buf->type));
-			talloc_free(tmp_ctx);
-			return NT_STATUS_INVALID_PARAMETER;
+			status = NT_STATUS_INVALID_PARAMETER;
+			goto out;
 		}
 		switch (data_buf->type) {
 		case PAC_TYPE_LOGON_INFO:
@@ -263,26 +261,26 @@ NTSTATUS kerberos_decode_pac(TALLOC_CTX
 
 	if (!logon_info) {
 		DEBUG(0,("PAC no logon_info\n"));
-		talloc_free(tmp_ctx);
-		return NT_STATUS_INVALID_PARAMETER;
+		status = NT_STATUS_INVALID_PARAMETER;
+		goto out;
 	}
 
 	if (!logon_name) {
 		DEBUG(0,("PAC no logon_name\n"));
-		talloc_free(tmp_ctx);
-		return NT_STATUS_INVALID_PARAMETER;
+		status = NT_STATUS_INVALID_PARAMETER;
+		goto out;
 	}
 
 	if (!srv_sig_ptr || !srv_sig_blob) {
 		DEBUG(0,("PAC no srv_key\n"));
-		talloc_free(tmp_ctx);
-		return NT_STATUS_INVALID_PARAMETER;
+		status = NT_STATUS_INVALID_PARAMETER;
+		goto out;
 	}
 
 	if (!kdc_sig_ptr || !kdc_sig_blob) {
 		DEBUG(0,("PAC no kdc_key\n"));
-		talloc_free(tmp_ctx);
-		return NT_STATUS_INVALID_PARAMETER;
+		status = NT_STATUS_INVALID_PARAMETER;
+		goto out;
 	}
 
 	/* Find and zero out the signatures,
@@ -297,8 +295,7 @@ NTSTATUS kerberos_decode_pac(TALLOC_CTX
 		status = ndr_map_error2ntstatus(ndr_err);
 		DEBUG(0,("can't parse the KDC signature: %s\n",
 			nt_errstr(status)));
-		talloc_free(tmp_ctx);
-		return status;
+		goto out;
 	}
 
 	ndr_err = ndr_pull_struct_blob(
@@ -308,8 +305,7 @@ NTSTATUS kerberos_decode_pac(TALLOC_CTX
 		status = ndr_map_error2ntstatus(ndr_err);
 		DEBUG(0,("can't parse the SRV signature: %s\n",
 			nt_errstr(status)));
-		talloc_free(tmp_ctx);
-		return status;
+		goto out;
 	}
 
 	/* Now zero the decoded structure */
@@ -326,8 +322,7 @@ NTSTATUS kerberos_decode_pac(TALLOC_CTX
 		status = ndr_map_error2ntstatus(ndr_err);
 		DEBUG(0,("can't repack the KDC signature: %s\n",
 			nt_errstr(status)));
-		talloc_free(tmp_ctx);
-		return status;
+		goto out;
 	}
 	ndr_err = ndr_push_struct_blob(
 			srv_sig_blob, pac_data_raw, srv_sig_wipe,
@@ -336,8 +331,7 @@ NTSTATUS kerberos_decode_pac(TALLOC_CTX
 		status = ndr_map_error2ntstatus(ndr_err);
 		DEBUG(0,("can't repack the SRV signature: %s\n",
 			nt_errstr(status)));
-		talloc_free(tmp_ctx);
-		return status;
+		goto out;
 	}
 
 	/* push out the whole structure, but now with zero'ed signatures */
@@ -348,8 +342,7 @@ NTSTATUS kerberos_decode_pac(TALLOC_CTX
 		status = ndr_map_error2ntstatus(ndr_err);
 		DEBUG(0,("can't repack the RAW PAC: %s\n",
 			nt_errstr(status)));
-		talloc_free(tmp_ctx);
-		return status;
+		goto out;
 	}
 
 	if (service_keyblock) {
@@ -360,7 +353,8 @@ NTSTATUS kerberos_decode_pac(TALLOC_CTX
 		if (ret) {
 			DEBUG(5, ("PAC Decode: Failed to verify the service "
 				  "signature: %s\n", error_message(ret)));
-			return NT_STATUS_ACCESS_DENIED;
+			status = NT_STATUS_ACCESS_DENIED;
+			goto out;
 		}
 
 		if (krbtgt_keyblock) {
@@ -370,8 +364,8 @@ NTSTATUS kerberos_decode_pac(TALLOC_CTX
 			if (ret) {
 				DEBUG(1, ("PAC Decode: Failed to verify the KDC signature: %s\n",
 					  smb_get_krb5_error_message(context, ret, tmp_ctx)));
-				talloc_free(tmp_ctx);
-				return NT_STATUS_ACCESS_DENIED;
+				status = NT_STATUS_ACCESS_DENIED;
+				goto out;
 			}
 		}
 	}
@@ -387,8 +381,8 @@ NTSTATUS kerberos_decode_pac(TALLOC_CTX
 				  nt_time_string(tmp_ctx, logon_name->logon_time)));
 			DEBUG(2, ("PAC Decode: Ticket: %s\n",
 				  nt_time_string(tmp_ctx, tgs_authtime_nttime)));
-			talloc_free(tmp_ctx);
-			return NT_STATUS_ACCESS_DENIED;
+			status = NT_STATUS_ACCESS_DENIED;
+			goto out;
 		}
 	}
 
@@ -400,8 +394,8 @@ NTSTATUS kerberos_decode_pac(TALLOC_CTX
 		if (ret) {
 			DEBUG(2, ("Could not unparse name from ticket to match with name from PAC: [%s]:%s\n",
 				  logon_name->account_name, error_message(ret)));
-			talloc_free(tmp_ctx);
-			return NT_STATUS_INVALID_PARAMETER;
+			status = NT_STATUS_INVALID_PARAMETER;
+			goto out;
 		}
 
 		bool_ret = strcmp(client_principal_string, logon_name->account_name) == 0;
@@ -412,8 +406,8 @@ NTSTATUS kerberos_decode_pac(TALLOC_CTX
 				  logon_name->account_name,
 				  client_principal_string));
 			SAFE_FREE(client_principal_string);
-			talloc_free(tmp_ctx);
-			return NT_STATUS_ACCESS_DENIED;
+			status = NT_STATUS_ACCESS_DENIED;
+			goto out;
 		}
 		SAFE_FREE(client_principal_string);
 
@@ -434,10 +428,15 @@ NTSTATUS kerberos_decode_pac(TALLOC_CTX
 	}
 
 	if (pac_data_out) {
-		*pac_data_out = talloc_steal(mem_ctx, pac_data);
+		*pac_data_out = talloc_move(mem_ctx, &pac_data);
 	}
 
-	return NT_STATUS_OK;
+	status = NT_STATUS_OK;
+
+    out:
+
+	TALLOC_FREE(tmp_ctx);
+	return status;
 }
 
 NTSTATUS kerberos_pac_logon_info(TALLOC_CTX *mem_ctx,
diff -Npur samba-4.20.7/ctdb/doc/ctdb-etcd.7 samba-4.20.8/ctdb/doc/ctdb-etcd.7
--- samba-4.20.7/ctdb/doc/ctdb-etcd.7	2025-01-21 14:46:04.000000000 +0100
+++ samba-4.20.8/ctdb/doc/ctdb-etcd.7	2025-03-25 15:40:57.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: ctdb-etcd
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: CTDB - clustered TDB database
 .\"    Source: ctdb
 .\"  Language: English
 .\"
-.TH "CTDB\-ETCD" "7" "01/21/2025" "ctdb" "CTDB \- clustered TDB database"
+.TH "CTDB\-ETCD" "7" "03/25/2025" "ctdb" "CTDB \- clustered TDB database"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
diff -Npur samba-4.20.7/ctdb/doc/ctdb-script.options.5 samba-4.20.8/ctdb/doc/ctdb-script.options.5
--- samba-4.20.7/ctdb/doc/ctdb-script.options.5	2025-01-21 14:46:02.000000000 +0100
+++ samba-4.20.8/ctdb/doc/ctdb-script.options.5	2025-03-25 15:40:55.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: ctdb-script.options
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: CTDB - clustered TDB database
 .\"    Source: ctdb
 .\"  Language: English
 .\"
-.TH "CTDB\-SCRIPT\&.OPTIO" "5" "01/21/2025" "ctdb" "CTDB \- clustered TDB database"
+.TH "CTDB\-SCRIPT\&.OPTIO" "5" "03/25/2025" "ctdb" "CTDB \- clustered TDB database"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
diff -Npur samba-4.20.7/ctdb/doc/ctdb-statistics.7 samba-4.20.8/ctdb/doc/ctdb-statistics.7
--- samba-4.20.7/ctdb/doc/ctdb-statistics.7	2025-01-21 14:46:03.000000000 +0100
+++ samba-4.20.8/ctdb/doc/ctdb-statistics.7	2025-03-25 15:40:56.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: ctdb-statistics
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: CTDB - clustered TDB database
 .\"    Source: ctdb
 .\"  Language: English
 .\"
-.TH "CTDB\-STATISTICS" "7" "01/21/2025" "ctdb" "CTDB \- clustered TDB database"
+.TH "CTDB\-STATISTICS" "7" "03/25/2025" "ctdb" "CTDB \- clustered TDB database"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
diff -Npur samba-4.20.7/ctdb/doc/ctdb-tunables.7 samba-4.20.8/ctdb/doc/ctdb-tunables.7
--- samba-4.20.7/ctdb/doc/ctdb-tunables.7	2025-01-21 14:46:04.000000000 +0100
+++ samba-4.20.8/ctdb/doc/ctdb-tunables.7	2025-03-25 15:40:56.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: ctdb-tunables
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: CTDB - clustered TDB database
 .\"    Source: ctdb
 .\"  Language: English
 .\"
-.TH "CTDB\-TUNABLES" "7" "01/21/2025" "ctdb" "CTDB \- clustered TDB database"
+.TH "CTDB\-TUNABLES" "7" "03/25/2025" "ctdb" "CTDB \- clustered TDB database"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
diff -Npur samba-4.20.7/ctdb/doc/ctdb.1 samba-4.20.8/ctdb/doc/ctdb.1
--- samba-4.20.7/ctdb/doc/ctdb.1	2025-01-21 14:46:00.000000000 +0100
+++ samba-4.20.8/ctdb/doc/ctdb.1	2025-03-25 15:40:52.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: ctdb
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: CTDB - clustered TDB database
 .\"    Source: ctdb
 .\"  Language: English
 .\"
-.TH "CTDB" "1" "01/21/2025" "ctdb" "CTDB \- clustered TDB database"
+.TH "CTDB" "1" "03/25/2025" "ctdb" "CTDB \- clustered TDB database"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
diff -Npur samba-4.20.7/ctdb/doc/ctdb.7 samba-4.20.8/ctdb/doc/ctdb.7
--- samba-4.20.7/ctdb/doc/ctdb.7	2025-01-21 14:46:03.000000000 +0100
+++ samba-4.20.8/ctdb/doc/ctdb.7	2025-03-25 15:40:56.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: ctdb
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: CTDB - clustered TDB database
 .\"    Source: ctdb
 .\"  Language: English
 .\"
-.TH "CTDB" "7" "01/21/2025" "ctdb" "CTDB \- clustered TDB database"
+.TH "CTDB" "7" "03/25/2025" "ctdb" "CTDB \- clustered TDB database"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
diff -Npur samba-4.20.7/ctdb/doc/ctdb.conf.5 samba-4.20.8/ctdb/doc/ctdb.conf.5
--- samba-4.20.7/ctdb/doc/ctdb.conf.5	2025-01-21 14:46:02.000000000 +0100
+++ samba-4.20.8/ctdb/doc/ctdb.conf.5	2025-03-25 15:40:54.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: ctdb.conf
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: CTDB - clustered TDB database
 .\"    Source: ctdb
 .\"  Language: English
 .\"
-.TH "CTDB\&.CONF" "5" "01/21/2025" "ctdb" "CTDB \- clustered TDB database"
+.TH "CTDB\&.CONF" "5" "03/25/2025" "ctdb" "CTDB \- clustered TDB database"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
diff -Npur samba-4.20.7/ctdb/doc/ctdb.sysconfig.5 samba-4.20.8/ctdb/doc/ctdb.sysconfig.5
--- samba-4.20.7/ctdb/doc/ctdb.sysconfig.5	2025-01-21 14:46:03.000000000 +0100
+++ samba-4.20.8/ctdb/doc/ctdb.sysconfig.5	2025-03-25 15:40:55.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: ctdb.sysconfig
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: CTDB - clustered TDB database
 .\"    Source: ctdb
 .\"  Language: English
 .\"
-.TH "CTDB\&.SYSCONFIG" "5" "01/21/2025" "ctdb" "CTDB \- clustered TDB database"
+.TH "CTDB\&.SYSCONFIG" "5" "03/25/2025" "ctdb" "CTDB \- clustered TDB database"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
diff -Npur samba-4.20.7/ctdb/doc/ctdb_diagnostics.1 samba-4.20.8/ctdb/doc/ctdb_diagnostics.1
--- samba-4.20.7/ctdb/doc/ctdb_diagnostics.1	2025-01-21 14:46:01.000000000 +0100
+++ samba-4.20.8/ctdb/doc/ctdb_diagnostics.1	2025-03-25 15:40:54.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: ctdb_diagnostics
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: CTDB - clustered TDB database
 .\"    Source: ctdb
 .\"  Language: English
 .\"
-.TH "CTDB_DIAGNOSTICS" "1" "01/21/2025" "ctdb" "CTDB \- clustered TDB database"
+.TH "CTDB_DIAGNOSTICS" "1" "03/25/2025" "ctdb" "CTDB \- clustered TDB database"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
diff -Npur samba-4.20.7/ctdb/doc/ctdb_mutex_ceph_rados_helper.7 samba-4.20.8/ctdb/doc/ctdb_mutex_ceph_rados_helper.7
--- samba-4.20.7/ctdb/doc/ctdb_mutex_ceph_rados_helper.7	2025-01-21 14:46:04.000000000 +0100
+++ samba-4.20.8/ctdb/doc/ctdb_mutex_ceph_rados_helper.7	2025-03-25 15:40:57.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: Ceph RADOS Mutex
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: CTDB - clustered TDB database
 .\"    Source: ctdb
 .\"  Language: English
 .\"
-.TH "CEPH RADOS MUTEX" "7" "01/21/2025" "ctdb" "CTDB \- clustered TDB database"
+.TH "CEPH RADOS MUTEX" "7" "03/25/2025" "ctdb" "CTDB \- clustered TDB database"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
diff -Npur samba-4.20.7/ctdb/doc/ctdbd.1 samba-4.20.8/ctdb/doc/ctdbd.1
--- samba-4.20.7/ctdb/doc/ctdbd.1	2025-01-21 14:46:00.000000000 +0100
+++ samba-4.20.8/ctdb/doc/ctdbd.1	2025-03-25 15:40:52.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: ctdbd
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: CTDB - clustered TDB database
 .\"    Source: ctdb
 .\"  Language: English
 .\"
-.TH "CTDBD" "1" "01/21/2025" "ctdb" "CTDB \- clustered TDB database"
+.TH "CTDBD" "1" "03/25/2025" "ctdb" "CTDB \- clustered TDB database"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
diff -Npur samba-4.20.7/ctdb/doc/ltdbtool.1 samba-4.20.8/ctdb/doc/ltdbtool.1
--- samba-4.20.7/ctdb/doc/ltdbtool.1	2025-01-21 14:46:00.000000000 +0100
+++ samba-4.20.8/ctdb/doc/ltdbtool.1	2025-03-25 15:40:53.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: ltdbtool
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: CTDB - clustered TDB database
 .\"    Source: ctdb
 .\"  Language: English
 .\"
-.TH "LTDBTOOL" "1" "01/21/2025" "ctdb" "CTDB \- clustered TDB database"
+.TH "LTDBTOOL" "1" "03/25/2025" "ctdb" "CTDB \- clustered TDB database"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
diff -Npur samba-4.20.7/ctdb/doc/onnode.1 samba-4.20.8/ctdb/doc/onnode.1
--- samba-4.20.7/ctdb/doc/onnode.1	2025-01-21 14:46:02.000000000 +0100
+++ samba-4.20.8/ctdb/doc/onnode.1	2025-03-25 15:40:54.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: onnode
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: CTDB - clustered TDB database
 .\"    Source: ctdb
 .\"  Language: English
 .\"
-.TH "ONNODE" "1" "01/21/2025" "ctdb" "CTDB \- clustered TDB database"
+.TH "ONNODE" "1" "03/25/2025" "ctdb" "CTDB \- clustered TDB database"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
diff -Npur samba-4.20.7/ctdb/doc/ping_pong.1 samba-4.20.8/ctdb/doc/ping_pong.1
--- samba-4.20.7/ctdb/doc/ping_pong.1	2025-01-21 14:46:01.000000000 +0100
+++ samba-4.20.8/ctdb/doc/ping_pong.1	2025-03-25 15:40:53.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: ping_pong
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: CTDB - clustered TDB database
 .\"    Source: ctdb
 .\"  Language: English
 .\"
-.TH "PING_PONG" "1" "01/21/2025" "ctdb" "CTDB \- clustered TDB database"
+.TH "PING_PONG" "1" "03/25/2025" "ctdb" "CTDB \- clustered TDB database"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
diff -Npur samba-4.20.7/ctdb/utils/pmda/Install samba-4.20.8/ctdb/utils/pmda/Install
--- samba-4.20.7/ctdb/utils/pmda/Install	2024-01-29 15:41:25.000000000 +0100
+++ samba-4.20.8/ctdb/utils/pmda/Install	2025-03-25 15:40:16.000000000 +0100
@@ -13,8 +13,7 @@
 # for more details.
 #
 # You should have received a copy of the GNU General Public License along
-# with this program; if not, write to the Free Software Foundation, Inc.,
-# 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+# with this program; if not, see <https://www.gnu.org/licenses/>.
 #
 # Install the ctdb PMDA and/or PMNS
 #
diff -Npur samba-4.20.7/ctdb/utils/pmda/Remove samba-4.20.8/ctdb/utils/pmda/Remove
--- samba-4.20.7/ctdb/utils/pmda/Remove	2024-01-29 15:41:25.000000000 +0100
+++ samba-4.20.8/ctdb/utils/pmda/Remove	2025-03-25 15:40:16.000000000 +0100
@@ -13,8 +13,7 @@
 # for more details.
 #
 # You should have received a copy of the GNU General Public License along
-# with this program; if not, write to the Free Software Foundation, Inc.,
-# 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+# with this program; if not, see <https://www.gnu.org/licenses/>.
 #
 # Remove the ctdb PMDA
 #
diff -Npur samba-4.20.7/ctdb/utils/pmda/domain.h samba-4.20.8/ctdb/utils/pmda/domain.h
--- samba-4.20.7/ctdb/utils/pmda/domain.h	2024-01-29 15:41:25.000000000 +0100
+++ samba-4.20.8/ctdb/utils/pmda/domain.h	2025-03-25 15:40:16.000000000 +0100
@@ -13,7 +13,6 @@
  * GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ * along with this program; if not, see <https://www.gnu.org/licenses/>.
  */
 #define CTDB 110
diff -Npur samba-4.20.7/ctdb/utils/pmda/help samba-4.20.8/ctdb/utils/pmda/help
--- samba-4.20.7/ctdb/utils/pmda/help	2024-01-29 15:41:25.000000000 +0100
+++ samba-4.20.8/ctdb/utils/pmda/help	2025-03-25 15:40:16.000000000 +0100
@@ -12,8 +12,7 @@
 # for more details.
 #
 # You should have received a copy of the GNU General Public License along
-# with this program; if not, write to the Free Software Foundation, Inc.,
-# 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+# with this program; if not, see <https://www.gnu.org/licenses/>.
 #
 # ctdb PMDA help file in the ASCII format
 #
diff -Npur samba-4.20.7/ctdb/utils/pmda/pmda_ctdb.c samba-4.20.8/ctdb/utils/pmda/pmda_ctdb.c
--- samba-4.20.7/ctdb/utils/pmda/pmda_ctdb.c	2024-01-29 15:41:25.000000000 +0100
+++ samba-4.20.8/ctdb/utils/pmda/pmda_ctdb.c	2025-03-25 15:40:16.000000000 +0100
@@ -15,8 +15,7 @@
  * for more details.
  *
  * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+ * with this program; if not, see <https://www.gnu.org/licenses/>.
  */
 
 #include "replace.h"
diff -Npur samba-4.20.7/ctdb/utils/pmda/pmns samba-4.20.8/ctdb/utils/pmda/pmns
--- samba-4.20.7/ctdb/utils/pmda/pmns	2024-01-29 15:41:25.000000000 +0100
+++ samba-4.20.8/ctdb/utils/pmda/pmns	2025-03-25 15:40:16.000000000 +0100
@@ -15,8 +15,7 @@
  * for more details.
  *
  * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+ * with this program; if not, see <https://www.gnu.org/licenses/>.
  */
 
 ctdb {
diff -Npur samba-4.20.7/docs/manpages/cifsdd.8 samba-4.20.8/docs/manpages/cifsdd.8
--- samba-4.20.7/docs/manpages/cifsdd.8	2025-01-21 14:46:06.000000000 +0100
+++ samba-4.20.8/docs/manpages/cifsdd.8	2025-03-25 15:40:59.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: cifsdd
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: System Administration tools
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "CIFSDD" "8" "01/21/2025" "Samba 4\&.20\&.7" "System Administration tools"
+.TH "CIFSDD" "8" "03/25/2025" "Samba 4\&.20\&.8" "System Administration tools"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
diff -Npur samba-4.20.7/docs/manpages/dbwrap_tool.1 samba-4.20.8/docs/manpages/dbwrap_tool.1
--- samba-4.20.7/docs/manpages/dbwrap_tool.1	2025-01-21 14:46:06.000000000 +0100
+++ samba-4.20.8/docs/manpages/dbwrap_tool.1	2025-03-25 15:40:59.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: dbwrap_tool
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: System Administration tools
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "DBWRAP_TOOL" "1" "01/21/2025" "Samba 4\&.20\&.7" "System Administration tools"
+.TH "DBWRAP_TOOL" "1" "03/25/2025" "Samba 4\&.20\&.8" "System Administration tools"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -317,7 +317,7 @@ dbwrap_tool
 Use with caution!
 .SH "VERSION"
 .PP
-This man page is part of version 4\&.20\&.7 of the Samba suite\&.
+This man page is part of version 4\&.20\&.8 of the Samba suite\&.
 .SH "SEE ALSO"
 .PP
 \fBsmbd\fR(8),
diff -Npur samba-4.20.7/docs/manpages/eventlogadm.8 samba-4.20.8/docs/manpages/eventlogadm.8
--- samba-4.20.7/docs/manpages/eventlogadm.8	2025-01-21 14:46:06.000000000 +0100
+++ samba-4.20.8/docs/manpages/eventlogadm.8	2025-03-25 15:40:59.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: eventlogadm
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: System Administration tools
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "EVENTLOGADM" "8" "01/21/2025" "Samba 4\&.20\&.7" "System Administration tools"
+.TH "EVENTLOGADM" "8" "03/25/2025" "Samba 4\&.20\&.8" "System Administration tools"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -339,7 +339,7 @@ Filter messages from the system log into
 .\}
 .SH "VERSION"
 .PP
-This man page is part of version 4\&.20\&.7 of the Samba suite\&.
+This man page is part of version 4\&.20\&.8 of the Samba suite\&.
 .SH "AUTHOR"
 .PP
 The original Samba software and related utilities were created by Andrew Tridgell\&. Samba is now developed by the Samba Team as an Open Source project similar to the way the Linux kernel is developed\&.
diff -Npur samba-4.20.7/docs/manpages/idmap_ad.8 samba-4.20.8/docs/manpages/idmap_ad.8
--- samba-4.20.7/docs/manpages/idmap_ad.8	2025-01-21 14:46:06.000000000 +0100
+++ samba-4.20.8/docs/manpages/idmap_ad.8	2025-03-25 15:40:59.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: idmap_ad
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: System Administration tools
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "IDMAP_AD" "8" "01/21/2025" "Samba 4\&.20\&.7" "System Administration tools"
+.TH "IDMAP_AD" "8" "03/25/2025" "Samba 4\&.20\&.8" "System Administration tools"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
diff -Npur samba-4.20.7/docs/manpages/idmap_autorid.8 samba-4.20.8/docs/manpages/idmap_autorid.8
--- samba-4.20.7/docs/manpages/idmap_autorid.8	2025-01-21 14:46:07.000000000 +0100
+++ samba-4.20.8/docs/manpages/idmap_autorid.8	2025-03-25 15:40:59.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: idmap_autorid
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: System Administration tools
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "IDMAP_AUTORID" "8" "01/21/2025" "Samba 4\&.20\&.7" "System Administration tools"
+.TH "IDMAP_AUTORID" "8" "03/25/2025" "Samba 4\&.20\&.8" "System Administration tools"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
diff -Npur samba-4.20.7/docs/manpages/idmap_hash.8 samba-4.20.8/docs/manpages/idmap_hash.8
--- samba-4.20.7/docs/manpages/idmap_hash.8	2025-01-21 14:46:07.000000000 +0100
+++ samba-4.20.8/docs/manpages/idmap_hash.8	2025-03-25 15:40:59.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: idmap_hash
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: System Administration tools
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "IDMAP_HASH" "8" "01/21/2025" "Samba 4\&.20\&.7" "System Administration tools"
+.TH "IDMAP_HASH" "8" "03/25/2025" "Samba 4\&.20\&.8" "System Administration tools"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
diff -Npur samba-4.20.7/docs/manpages/idmap_ldap.8 samba-4.20.8/docs/manpages/idmap_ldap.8
--- samba-4.20.7/docs/manpages/idmap_ldap.8	2025-01-21 14:46:07.000000000 +0100
+++ samba-4.20.8/docs/manpages/idmap_ldap.8	2025-03-25 15:41:00.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: idmap_ldap
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: System Administration tools
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "IDMAP_LDAP" "8" "01/21/2025" "Samba 4\&.20\&.7" "System Administration tools"
+.TH "IDMAP_LDAP" "8" "03/25/2025" "Samba 4\&.20\&.8" "System Administration tools"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
diff -Npur samba-4.20.7/docs/manpages/idmap_nss.8 samba-4.20.8/docs/manpages/idmap_nss.8
--- samba-4.20.7/docs/manpages/idmap_nss.8	2025-01-21 14:46:07.000000000 +0100
+++ samba-4.20.8/docs/manpages/idmap_nss.8	2025-03-25 15:41:00.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: idmap_nss
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: System Administration tools
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "IDMAP_NSS" "8" "01/21/2025" "Samba 4\&.20\&.7" "System Administration tools"
+.TH "IDMAP_NSS" "8" "03/25/2025" "Samba 4\&.20\&.8" "System Administration tools"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
diff -Npur samba-4.20.7/docs/manpages/idmap_rfc2307.8 samba-4.20.8/docs/manpages/idmap_rfc2307.8
--- samba-4.20.7/docs/manpages/idmap_rfc2307.8	2025-01-21 14:46:07.000000000 +0100
+++ samba-4.20.8/docs/manpages/idmap_rfc2307.8	2025-03-25 15:41:00.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: idmap_rfc2307
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: System Administration tools
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "IDMAP_RFC2307" "8" "01/21/2025" "Samba 4\&.20\&.7" "System Administration tools"
+.TH "IDMAP_RFC2307" "8" "03/25/2025" "Samba 4\&.20\&.8" "System Administration tools"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
diff -Npur samba-4.20.7/docs/manpages/idmap_rid.8 samba-4.20.8/docs/manpages/idmap_rid.8
--- samba-4.20.7/docs/manpages/idmap_rid.8	2025-01-21 14:46:07.000000000 +0100
+++ samba-4.20.8/docs/manpages/idmap_rid.8	2025-03-25 15:41:00.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: idmap_rid
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: System Administration tools
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "IDMAP_RID" "8" "01/21/2025" "Samba 4\&.20\&.7" "System Administration tools"
+.TH "IDMAP_RID" "8" "03/25/2025" "Samba 4\&.20\&.8" "System Administration tools"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
diff -Npur samba-4.20.7/docs/manpages/idmap_script.8 samba-4.20.8/docs/manpages/idmap_script.8
--- samba-4.20.7/docs/manpages/idmap_script.8	2025-01-21 14:46:08.000000000 +0100
+++ samba-4.20.8/docs/manpages/idmap_script.8	2025-03-25 15:41:00.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: idmap_script
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: System Administration tools
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "IDMAP_SCRIPT" "8" "01/21/2025" "Samba 4\&.20\&.7" "System Administration tools"
+.TH "IDMAP_SCRIPT" "8" "03/25/2025" "Samba 4\&.20\&.8" "System Administration tools"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
diff -Npur samba-4.20.7/docs/manpages/idmap_tdb.8 samba-4.20.8/docs/manpages/idmap_tdb.8
--- samba-4.20.7/docs/manpages/idmap_tdb.8	2025-01-21 14:46:08.000000000 +0100
+++ samba-4.20.8/docs/manpages/idmap_tdb.8	2025-03-25 15:41:00.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: idmap_tdb
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: System Administration tools
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "IDMAP_TDB" "8" "01/21/2025" "Samba 4\&.20\&.7" "System Administration tools"
+.TH "IDMAP_TDB" "8" "03/25/2025" "Samba 4\&.20\&.8" "System Administration tools"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
diff -Npur samba-4.20.7/docs/manpages/idmap_tdb2.8 samba-4.20.8/docs/manpages/idmap_tdb2.8
--- samba-4.20.7/docs/manpages/idmap_tdb2.8	2025-01-21 14:46:08.000000000 +0100
+++ samba-4.20.8/docs/manpages/idmap_tdb2.8	2025-03-25 15:41:01.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: idmap_tdb2
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: System Administration tools
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "IDMAP_TDB2" "8" "01/21/2025" "Samba 4\&.20\&.7" "System Administration tools"
+.TH "IDMAP_TDB2" "8" "03/25/2025" "Samba 4\&.20\&.8" "System Administration tools"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
diff -Npur samba-4.20.7/docs/manpages/libsmbclient.7 samba-4.20.8/docs/manpages/libsmbclient.7
--- samba-4.20.7/docs/manpages/libsmbclient.7	2025-01-21 14:46:08.000000000 +0100
+++ samba-4.20.8/docs/manpages/libsmbclient.7	2025-03-25 15:41:01.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: libsmbclient
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: 7
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "LIBSMBCLIENT" "7" "01/21/2025" "Samba 4\&.20\&.7" "7"
+.TH "LIBSMBCLIENT" "7" "03/25/2025" "Samba 4\&.20\&.8" "7"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -86,7 +86,7 @@ parameter was not included in the URL\&.
 Watch this space for future updates\&.
 .SH "VERSION"
 .PP
-This man page is part of version 4\&.20\&.7 of the Samba suite\&.
+This man page is part of version 4\&.20\&.8 of the Samba suite\&.
 .SH "AUTHOR"
 .PP
 The original Samba software and related utilities were created by Andrew Tridgell\&. Samba is now developed by the Samba Team as an Open Source project similar to the way the Linux kernel is developed\&.
diff -Npur samba-4.20.7/docs/manpages/lmhosts.5 samba-4.20.8/docs/manpages/lmhosts.5
--- samba-4.20.7/docs/manpages/lmhosts.5	2025-01-21 14:46:08.000000000 +0100
+++ samba-4.20.8/docs/manpages/lmhosts.5	2025-03-25 15:41:01.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: lmhosts
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: File Formats and Conventions
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "LMHOSTS" "5" "01/21/2025" "Samba 4\&.20\&.7" "File Formats and Conventions"
+.TH "LMHOSTS" "5" "03/25/2025" "Samba 4\&.20\&.8" "File Formats and Conventions"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -112,7 +112,7 @@ or
 /usr/local/samba/lib\&.
 .SH "VERSION"
 .PP
-This man page is part of version 4\&.20\&.7 of the Samba suite\&.
+This man page is part of version 4\&.20\&.8 of the Samba suite\&.
 .SH "SEE ALSO"
 .PP
 \fBsmbclient\fR(1),
diff -Npur samba-4.20.7/docs/manpages/log2pcap.1 samba-4.20.8/docs/manpages/log2pcap.1
--- samba-4.20.7/docs/manpages/log2pcap.1	2025-01-21 14:46:08.000000000 +0100
+++ samba-4.20.8/docs/manpages/log2pcap.1	2025-03-25 15:41:01.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: log2pcap
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: User Commands
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "LOG2PCAP" "1" "01/21/2025" "Samba 4\&.20\&.7" "User Commands"
+.TH "LOG2PCAP" "1" "03/25/2025" "Samba 4\&.20\&.8" "User Commands"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -107,7 +107,7 @@ Convert to pcap using text2pcap:
 .\}
 .SH "VERSION"
 .PP
-This man page is part of version 4\&.20\&.7 of the Samba suite\&.
+This man page is part of version 4\&.20\&.8 of the Samba suite\&.
 .SH "BUGS"
 .PP
 Only SMB data is extracted from the samba logs, no LDAP, NetBIOS lookup or other data\&.
diff -Npur samba-4.20.7/docs/manpages/mdsearch.1 samba-4.20.8/docs/manpages/mdsearch.1
--- samba-4.20.7/docs/manpages/mdsearch.1	2025-01-21 14:46:08.000000000 +0100
+++ samba-4.20.8/docs/manpages/mdsearch.1	2025-03-25 15:41:01.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: mdsearch
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: User Commands
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "MDSEARCH" "1" "01/21/2025" "Samba 4\&.20\&.7" "User Commands"
+.TH "MDSEARCH" "1" "03/25/2025" "Samba 4\&.20\&.8" "User Commands"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -349,7 +349,7 @@ File Metadata Search Programming Guide
 https://developer\&.apple\&.com/library/archive/documentation/Carbon/Conceptual/SpotlightQuery/Concepts/Introduction\&.html
 .SH "VERSION"
 .PP
-This man page is part of version 4\&.20\&.7 of the Samba suite\&.
+This man page is part of version 4\&.20\&.8 of the Samba suite\&.
 .SH "AUTHOR"
 .PP
 The original Samba software and related utilities were created by Andrew Tridgell\&. Samba is now developed by the Samba Team as an Open Source project similar to the way the Linux kernel is developed\&.
diff -Npur samba-4.20.7/docs/manpages/mvxattr.1 samba-4.20.8/docs/manpages/mvxattr.1
--- samba-4.20.7/docs/manpages/mvxattr.1	2025-01-21 14:46:09.000000000 +0100
+++ samba-4.20.8/docs/manpages/mvxattr.1	2025-03-25 15:41:01.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: mvxattr
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: User Commands
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "MVXATTR" "1" "01/21/2025" "Samba 4\&.20\&.7" "User Commands"
+.TH "MVXATTR" "1" "03/25/2025" "Samba 4\&.20\&.8" "User Commands"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -76,7 +76,7 @@ Force overwriting of destination xattr\&
 .RE
 .SH "VERSION"
 .PP
-This man page is part of version 4\&.20\&.7 of the Samba suite\&.
+This man page is part of version 4\&.20\&.8 of the Samba suite\&.
 .SH "AUTHOR"
 .PP
 The original Samba software and related utilities were created by Andrew Tridgell\&. Samba is now developed by the Samba Team as an Open Source project similar to the way the Linux kernel is developed\&.
diff -Npur samba-4.20.7/docs/manpages/net.8 samba-4.20.8/docs/manpages/net.8
--- samba-4.20.7/docs/manpages/net.8	2025-01-21 14:46:09.000000000 +0100
+++ samba-4.20.8/docs/manpages/net.8	2025-03-25 15:41:02.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: net
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: System Administration tools
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "NET" "8" "01/21/2025" "Samba 4\&.20\&.7" "System Administration tools"
+.TH "NET" "8" "03/25/2025" "Samba 4\&.20\&.8" "System Administration tools"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
diff -Npur samba-4.20.7/docs/manpages/nmbd.8 samba-4.20.8/docs/manpages/nmbd.8
--- samba-4.20.7/docs/manpages/nmbd.8	2025-01-21 14:46:09.000000000 +0100
+++ samba-4.20.8/docs/manpages/nmbd.8	2025-03-25 15:41:02.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: nmbd
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: System Administration tools
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "NMBD" "8" "01/21/2025" "Samba 4\&.20\&.7" "System Administration tools"
+.TH "NMBD" "8" "03/25/2025" "Samba 4\&.20\&.8" "System Administration tools"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -288,7 +288,7 @@ The debug log level of nmbd may be raise
 (SIGUSR[1|2] signals are no longer used since Samba 2\&.2)\&. This is to allow transient problems to be diagnosed, whilst still running at a normally low log level\&.
 .SH "VERSION"
 .PP
-This man page is part of version 4\&.20\&.7 of the Samba suite\&.
+This man page is part of version 4\&.20\&.8 of the Samba suite\&.
 .SH "SEE ALSO"
 .PP
 \fBinetd\fR(8),
diff -Npur samba-4.20.7/docs/manpages/nmblookup.1 samba-4.20.8/docs/manpages/nmblookup.1
--- samba-4.20.7/docs/manpages/nmblookup.1	2025-01-21 14:46:09.000000000 +0100
+++ samba-4.20.8/docs/manpages/nmblookup.1	2025-03-25 15:41:02.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: nmblookup
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: User Commands
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "NMBLOOKUP" "1" "01/21/2025" "Samba 4\&.20\&.7" "User Commands"
+.TH "NMBLOOKUP" "1" "03/25/2025" "Samba 4\&.20\&.8" "User Commands"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -330,7 +330,7 @@ nmblookup \-U samba\&.org \-R \*(AqIRIX#
 would query the WINS server samba\&.org for the domain master browser (1B name type) for the IRIX workgroup\&.
 .SH "VERSION"
 .PP
-This man page is part of version 4\&.20\&.7 of the Samba suite\&.
+This man page is part of version 4\&.20\&.8 of the Samba suite\&.
 .SH "SEE ALSO"
 .PP
 \fBnmbd\fR(8),
diff -Npur samba-4.20.7/docs/manpages/ntlm_auth.1 samba-4.20.8/docs/manpages/ntlm_auth.1
--- samba-4.20.7/docs/manpages/ntlm_auth.1	2025-01-21 14:46:10.000000000 +0100
+++ samba-4.20.8/docs/manpages/ntlm_auth.1	2025-03-25 15:41:02.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: ntlm_auth
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: User Commands
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "NTLM_AUTH" "1" "01/21/2025" "Samba 4\&.20\&.7" "User Commands"
+.TH "NTLM_AUTH" "1" "03/25/2025" "Samba 4\&.20\&.8" "User Commands"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -450,7 +450,7 @@ If you\*(Aqre experiencing problems with
 the Microsoft Knowledge Base article #239869 and follow instructions described there\&.
 .SH "VERSION"
 .PP
-This man page is part of version 4\&.20\&.7 of the Samba suite\&.
+This man page is part of version 4\&.20\&.8 of the Samba suite\&.
 .SH "AUTHOR"
 .PP
 The original Samba software and related utilities were created by Andrew Tridgell\&. Samba is now developed by the Samba Team as an Open Source project similar to the way the Linux kernel is developed\&.
diff -Npur samba-4.20.7/docs/manpages/pam_winbind.8 samba-4.20.8/docs/manpages/pam_winbind.8
--- samba-4.20.7/docs/manpages/pam_winbind.8	2025-01-21 14:46:10.000000000 +0100
+++ samba-4.20.8/docs/manpages/pam_winbind.8	2025-03-25 15:41:03.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: pam_winbind
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: 8
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "PAM_WINBIND" "8" "01/21/2025" "Samba 4\&.20\&.7" "8"
+.TH "PAM_WINBIND" "8" "03/25/2025" "Samba 4\&.20\&.8" "8"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -210,7 +210,7 @@ This is the profile path set in the prof
 \fBsmb.conf\fR(5)
 .SH "VERSION"
 .PP
-This man page is part of version 4\&.20\&.7 of Samba\&.
+This man page is part of version 4\&.20\&.8 of Samba\&.
 .SH "AUTHOR"
 .PP
 The original Samba software and related utilities were created by Andrew Tridgell\&. Samba is now developed by the Samba Team as an Open Source project similar to the way the Linux kernel is developed\&.
diff -Npur samba-4.20.7/docs/manpages/pam_winbind.conf.5 samba-4.20.8/docs/manpages/pam_winbind.conf.5
--- samba-4.20.7/docs/manpages/pam_winbind.conf.5	2025-01-21 14:46:10.000000000 +0100
+++ samba-4.20.8/docs/manpages/pam_winbind.conf.5	2025-03-25 15:41:03.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: pam_winbind.conf
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: 5
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "PAM_WINBIND\&.CONF" "5" "01/21/2025" "Samba 4\&.20\&.7" "5"
+.TH "PAM_WINBIND\&.CONF" "5" "03/25/2025" "Samba 4\&.20\&.8" "5"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -153,7 +153,7 @@ Generate prompt for changing an expired
 \fBsmb.conf\fR(5)
 .SH "VERSION"
 .PP
-This man page is part of version 4\&.20\&.7 of Samba\&.
+This man page is part of version 4\&.20\&.8 of Samba\&.
 .SH "AUTHOR"
 .PP
 The original Samba software and related utilities were created by Andrew Tridgell\&. Samba is now developed by the Samba Team as an Open Source project similar to the way the Linux kernel is developed\&.
diff -Npur samba-4.20.7/docs/manpages/pdbedit.8 samba-4.20.8/docs/manpages/pdbedit.8
--- samba-4.20.7/docs/manpages/pdbedit.8	2025-01-21 14:46:10.000000000 +0100
+++ samba-4.20.8/docs/manpages/pdbedit.8	2025-03-25 15:41:03.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: pdbedit
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: System Administration tools
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "PDBEDIT" "8" "01/21/2025" "Samba 4\&.20\&.7" "System Administration tools"
+.TH "PDBEDIT" "8" "03/25/2025" "Samba 4\&.20\&.8" "System Administration tools"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -635,7 +635,7 @@ Prints the program version number\&.
 This command may be used only by root\&.
 .SH "VERSION"
 .PP
-This man page is part of version 4\&.20\&.7 of the Samba suite\&.
+This man page is part of version 4\&.20\&.8 of the Samba suite\&.
 .SH "SEE ALSO"
 .PP
 \fBsmbpasswd\fR(5),
diff -Npur samba-4.20.7/docs/manpages/profiles.1 samba-4.20.8/docs/manpages/profiles.1
--- samba-4.20.7/docs/manpages/profiles.1	2025-01-21 14:46:11.000000000 +0100
+++ samba-4.20.8/docs/manpages/profiles.1	2025-03-25 15:41:03.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: profiles
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: User Commands
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "PROFILES" "1" "01/21/2025" "Samba 4\&.20\&.7" "User Commands"
+.TH "PROFILES" "1" "03/25/2025" "Samba 4\&.20\&.8" "User Commands"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -128,7 +128,7 @@ Display brief usage message\&.
 .RE
 .SH "VERSION"
 .PP
-This man page is part of version 4\&.20\&.7 of the Samba suite\&.
+This man page is part of version 4\&.20\&.8 of the Samba suite\&.
 .SH "AUTHOR"
 .PP
 The original Samba software and related utilities were created by Andrew Tridgell\&. Samba is now developed by the Samba Team as an Open Source project similar to the way the Linux kernel is developed\&.
diff -Npur samba-4.20.7/docs/manpages/rpcclient.1 samba-4.20.8/docs/manpages/rpcclient.1
--- samba-4.20.7/docs/manpages/rpcclient.1	2025-01-21 14:46:11.000000000 +0100
+++ samba-4.20.8/docs/manpages/rpcclient.1	2025-03-25 15:41:03.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: rpcclient
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: User Commands
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "RPCCLIENT" "1" "01/21/2025" "Samba 4\&.20\&.7" "User Commands"
+.TH "RPCCLIENT" "1" "03/25/2025" "Samba 4\&.20\&.8" "User Commands"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -1958,7 +1958,7 @@ and
 that are incompatible for some commands or services\&. Additionally, the developers are sending reports to Microsoft, and problems found or reported to Microsoft are fixed in Service Packs, which may result in incompatibilities\&.
 .SH "VERSION"
 .PP
-This man page is part of version 4\&.20\&.7 of the Samba suite\&.
+This man page is part of version 4\&.20\&.8 of the Samba suite\&.
 .SH "AUTHOR"
 .PP
 The original Samba software and related utilities were created by Andrew Tridgell\&. Samba is now developed by the Samba Team as an Open Source project similar to the way the Linux kernel is developed\&.
diff -Npur samba-4.20.7/docs/manpages/samba-bgqd.8 samba-4.20.8/docs/manpages/samba-bgqd.8
--- samba-4.20.7/docs/manpages/samba-bgqd.8	2025-01-21 14:46:11.000000000 +0100
+++ samba-4.20.8/docs/manpages/samba-bgqd.8	2025-03-25 15:41:04.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: samba-bgqd
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: System Administration tools
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "SAMBA\-BGQD" "8" "01/21/2025" "Samba 4\&.20\&.7" "System Administration tools"
+.TH "SAMBA\-BGQD" "8" "03/25/2025" "Samba 4\&.20\&.8" "System Administration tools"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
diff -Npur samba-4.20.7/docs/manpages/samba-dcerpcd.8 samba-4.20.8/docs/manpages/samba-dcerpcd.8
--- samba-4.20.7/docs/manpages/samba-dcerpcd.8	2025-01-21 14:46:11.000000000 +0100
+++ samba-4.20.8/docs/manpages/samba-dcerpcd.8	2025-03-25 15:41:04.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: samba-dcerpcd
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: System Administration tools
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "SAMBA\-DCERPCD" "8" "01/21/2025" "Samba 4\&.20\&.7" "System Administration tools"
+.TH "SAMBA\-DCERPCD" "8" "03/25/2025" "Samba 4\&.20\&.8" "System Administration tools"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
diff -Npur samba-4.20.7/docs/manpages/samba-log-parser.1 samba-4.20.8/docs/manpages/samba-log-parser.1
--- samba-4.20.7/docs/manpages/samba-log-parser.1	2025-01-21 14:46:11.000000000 +0100
+++ samba-4.20.8/docs/manpages/samba-log-parser.1	2025-03-25 15:41:04.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: samba-log-parser
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: User Commands
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "SAMBA\-LOG\-PARSER" "1" "01/21/2025" "Samba 4\&.20\&.7" "User Commands"
+.TH "SAMBA\-LOG\-PARSER" "1" "03/25/2025" "Samba 4\&.20\&.8" "User Commands"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -144,7 +144,7 @@ Sort traces using the timestamp for log
 .\}
 .SH "VERSION"
 .PP
-This man page is part of version 4\&.20\&.7 of the Samba suite\&.
+This man page is part of version 4\&.20\&.8 of the Samba suite\&.
 .SH "AUTHOR"
 .PP
 The original Samba software and related utilities were created by Andrew Tridgell\&. Samba is now developed by the Samba Team as an Open Source project similar to the way the Linux kernel is developed\&.
diff -Npur samba-4.20.7/docs/manpages/samba-regedit.8 samba-4.20.8/docs/manpages/samba-regedit.8
--- samba-4.20.7/docs/manpages/samba-regedit.8	2025-01-21 14:46:12.000000000 +0100
+++ samba-4.20.8/docs/manpages/samba-regedit.8	2025-03-25 15:41:04.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: samba-regedit
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: System Administration tools
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "SAMBA\-REGEDIT" "8" "01/21/2025" "Samba 4\&.20\&.7" "System Administration tools"
+.TH "SAMBA\-REGEDIT" "8" "03/25/2025" "Samba 4\&.20\&.8" "System Administration tools"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -365,7 +365,7 @@ In case you need more fine grained contr
 .RE
 .SH "VERSION"
 .PP
-This man page is part of version 4\&.20\&.7 of the Samba suite\&.
+This man page is part of version 4\&.20\&.8 of the Samba suite\&.
 .SH "SEE ALSO"
 .PP
 \fBsmbd\fR(8),
diff -Npur samba-4.20.7/docs/manpages/samba-tool.8 samba-4.20.8/docs/manpages/samba-tool.8
--- samba-4.20.7/docs/manpages/samba-tool.8	2025-01-21 14:46:12.000000000 +0100
+++ samba-4.20.8/docs/manpages/samba-tool.8	2025-03-25 15:41:04.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: samba-tool
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: System Administration tools
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "SAMBA\-TOOL" "8" "01/21/2025" "Samba 4\&.20\&.7" "System Administration tools"
+.TH "SAMBA\-TOOL" "8" "03/25/2025" "Samba 4\&.20\&.8" "System Administration tools"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -1951,7 +1951,7 @@ because the repsFrom/To objects are not
 Gives usage information\&.
 .SH "VERSION"
 .PP
-This man page is complete for version 4\&.20\&.7 of the Samba suite\&.
+This man page is complete for version 4\&.20\&.8 of the Samba suite\&.
 .SH "AUTHOR"
 .PP
 The original Samba software and related utilities were created by Andrew Tridgell\&. Samba is now developed by the Samba Team as an Open Source project similar to the way the Linux kernel is developed\&.
diff -Npur samba-4.20.7/docs/manpages/samba.7 samba-4.20.8/docs/manpages/samba.7
--- samba-4.20.7/docs/manpages/samba.7	2025-01-21 14:46:12.000000000 +0100
+++ samba-4.20.8/docs/manpages/samba.7	2025-03-25 15:41:05.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: samba
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: Miscellanea
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "SAMBA" "7" "01/21/2025" "Samba 4\&.20\&.7" "Miscellanea"
+.TH "SAMBA" "7" "03/25/2025" "Samba 4\&.20\&.8" "Miscellanea"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -231,7 +231,7 @@ https://lists\&.samba\&.org
 you can find a lot of information in the archives and you can subscribe to the samba list and ask for help or discuss things\&.
 .SH "VERSION"
 .PP
-This man page is part of version 4\&.20\&.7 of the Samba suite\&.
+This man page is part of version 4\&.20\&.8 of the Samba suite\&.
 .SH "CONTRIBUTIONS"
 .PP
 If you wish to contribute to the Samba project, then I suggest you join the Samba mailing list at
diff -Npur samba-4.20.7/docs/manpages/samba.8 samba-4.20.8/docs/manpages/samba.8
--- samba-4.20.7/docs/manpages/samba.8	2025-01-21 14:46:12.000000000 +0100
+++ samba-4.20.8/docs/manpages/samba.8	2025-03-25 15:41:05.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: samba
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: System Administration tools
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "SAMBA" "8" "01/21/2025" "Samba 4\&.20\&.7" "System Administration tools"
+.TH "SAMBA" "8" "03/25/2025" "Samba 4\&.20\&.8" "System Administration tools"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -239,7 +239,7 @@ The number and nature of diagnostics ava
 Most messages are reasonably self\-explanatory\&. Unfortunately, at the time this man page was created, there are too many diagnostics available in the source code to warrant describing each and every diagnostic\&. At this stage your best bet is still to grep the source code and inspect the conditions that gave rise to the diagnostics you are seeing\&.
 .SH "VERSION"
 .PP
-This man page is part of version 4\&.20\&.7 of the Samba suite\&.
+This man page is part of version 4\&.20\&.8 of the Samba suite\&.
 .SH "SEE ALSO"
 .PP
 \fBhosts_access\fR(5)
diff -Npur samba-4.20.7/docs/manpages/samba_downgrade_db.8 samba-4.20.8/docs/manpages/samba_downgrade_db.8
--- samba-4.20.7/docs/manpages/samba_downgrade_db.8	2025-01-21 14:46:13.000000000 +0100
+++ samba-4.20.8/docs/manpages/samba_downgrade_db.8	2025-03-25 15:41:05.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: samba_downgrade_db
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: User Commands
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "SAMBA_DOWNGRADE_DB" "8" "01/21/2025" "Samba 4\&.20\&.7" "User Commands"
+.TH "SAMBA_DOWNGRADE_DB" "8" "03/25/2025" "Samba 4\&.20\&.8" "User Commands"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -42,7 +42,7 @@ The format of the Samba Active Directory
 \fIbefore\fR
 the Samba packages can be safely downgraded\&.
 .PP
-This tool downgrades a Samba sam\&.ldb database from the format used in version 4\&.20\&.7 to that of version 4\&.7\&. The v4\&.7 database format can safely be read by any version of Samba\&. If necessary, later versions of Samba will repack and reconfigure a v4\&.7\-format database when the samba executable is first started\&.
+This tool downgrades a Samba sam\&.ldb database from the format used in version 4\&.20\&.8 to that of version 4\&.7\&. The v4\&.7 database format can safely be read by any version of Samba\&. If necessary, later versions of Samba will repack and reconfigure a v4\&.7\-format database when the samba executable is first started\&.
 .PP
 Note that all Samba services must be stopped on the DC before running this tool\&. Once the tool has run, do not restart samba or modify the database before the Samba software package has been downgraded\&.
 .SH "OPTIONS"
@@ -58,7 +58,7 @@ Link directly to smb\&.conf file instead
 .RE
 .SH "VERSION"
 .PP
-This man page is complete for version 4\&.20\&.7 of the Samba suite\&.
+This man page is complete for version 4\&.20\&.8 of the Samba suite\&.
 .SH "AUTHOR"
 .PP
 The original Samba software and related utilities were created by Andrew Tridgell\&. Samba is now developed by the Samba Team as an Open Source project similar to the way the Linux kernel is developed\&.
diff -Npur samba-4.20.7/docs/manpages/sharesec.1 samba-4.20.8/docs/manpages/sharesec.1
--- samba-4.20.7/docs/manpages/sharesec.1	2025-01-21 14:46:13.000000000 +0100
+++ samba-4.20.8/docs/manpages/sharesec.1	2025-03-25 15:41:05.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: sharesec
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: User Commands
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "SHARESEC" "1" "01/21/2025" "Samba 4\&.20\&.7" "User Commands"
+.TH "SHARESEC" "1" "03/25/2025" "Samba 4\&.20\&.8" "User Commands"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -358,7 +358,7 @@ List all ACEs for
 .\}
 .SH "VERSION"
 .PP
-This man page is part of version 4\&.20\&.7 of the Samba suite\&.
+This man page is part of version 4\&.20\&.8 of the Samba suite\&.
 .SH "AUTHOR"
 .PP
 The original Samba software and related utilities were created by Andrew Tridgell\&. Samba is now developed by the Samba Team as an Open Source project similar to the way the Linux kernel is developed\&.
diff -Npur samba-4.20.7/docs/manpages/smb.conf.5 samba-4.20.8/docs/manpages/smb.conf.5
--- samba-4.20.7/docs/manpages/smb.conf.5	2025-01-21 14:46:15.000000000 +0100
+++ samba-4.20.8/docs/manpages/smb.conf.5	2025-03-25 15:41:07.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: smb.conf
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: File Formats and Conventions
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "SMB\&.CONF" "5" "01/21/2025" "Samba 4\&.20\&.7" "File Formats and Conventions"
+.TH "SMB\&.CONF" "5" "03/25/2025" "Samba 4\&.20\&.8" "File Formats and Conventions"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -14932,7 +14932,7 @@ and
 special sections make life for an administrator easy, but the various combinations of default attributes can be tricky\&. Take extreme care when designing these sections\&. In particular, ensure that the permissions on spool directories are correct\&.
 .SH "VERSION"
 .PP
-This man page is part of version 4\&.20\&.7 of the Samba suite\&.
+This man page is part of version 4\&.20\&.8 of the Samba suite\&.
 .SH "SEE ALSO"
 .PP
 \fBsamba\fR(7),
diff -Npur samba-4.20.7/docs/manpages/smbcacls.1 samba-4.20.8/docs/manpages/smbcacls.1
--- samba-4.20.7/docs/manpages/smbcacls.1	2025-01-21 14:46:15.000000000 +0100
+++ samba-4.20.8/docs/manpages/smbcacls.1	2025-03-25 15:41:07.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: smbcacls
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: User Commands
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "SMBCACLS" "1" "01/21/2025" "Samba 4\&.20\&.7" "User Commands"
+.TH "SMBCACLS" "1" "03/25/2025" "Samba 4\&.20\&.8" "User Commands"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -1048,7 +1048,7 @@ smbcacls
 couldn\*(Aqt connect to the specified server, or there was an error getting or setting the ACLs, an exit status of 1 is returned\&. If there was an error parsing any command line arguments, an exit status of 2 is returned\&.
 .SH "VERSION"
 .PP
-This man page is part of version 4\&.20\&.7 of the Samba suite\&.
+This man page is part of version 4\&.20\&.8 of the Samba suite\&.
 .SH "AUTHOR"
 .PP
 The original Samba software and related utilities were created by Andrew Tridgell\&. Samba is now developed by the Samba Team as an Open Source project similar to the way the Linux kernel is developed\&.
diff -Npur samba-4.20.7/docs/manpages/smbclient.1 samba-4.20.8/docs/manpages/smbclient.1
--- samba-4.20.7/docs/manpages/smbclient.1	2025-01-21 14:46:15.000000000 +0100
+++ samba-4.20.8/docs/manpages/smbclient.1	2025-03-25 15:41:08.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: smbclient
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: User Commands
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "SMBCLIENT" "1" "01/21/2025" "Samba 4\&.20\&.7" "User Commands"
+.TH "SMBCLIENT" "1" "03/25/2025" "Samba 4\&.20\&.8" "User Commands"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -1247,7 +1247,7 @@ Most diagnostics issued by the client ar
 The number and nature of diagnostics available depends on the debug level used by the client\&. If you have problems, set the debug level to 3 and peruse the log files\&.
 .SH "VERSION"
 .PP
-This man page is part of version 4\&.20\&.7 of the Samba suite\&.
+This man page is part of version 4\&.20\&.8 of the Samba suite\&.
 .SH "AUTHOR"
 .PP
 The original Samba software and related utilities were created by Andrew Tridgell\&. Samba is now developed by the Samba Team as an Open Source project similar to the way the Linux kernel is developed\&.
diff -Npur samba-4.20.7/docs/manpages/smbcontrol.1 samba-4.20.8/docs/manpages/smbcontrol.1
--- samba-4.20.7/docs/manpages/smbcontrol.1	2025-01-21 14:46:16.000000000 +0100
+++ samba-4.20.8/docs/manpages/smbcontrol.1	2025-03-25 15:41:08.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: smbcontrol
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: User Commands
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "SMBCONTROL" "1" "01/21/2025" "Samba 4\&.20\&.7" "User Commands"
+.TH "SMBCONTROL" "1" "03/25/2025" "Samba 4\&.20\&.8" "User Commands"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -338,7 +338,7 @@ Instruct the LDAP server of a Samba AD D
 .RE
 .SH "VERSION"
 .PP
-This man page is part of version 4\&.20\&.7 of the Samba suite\&.
+This man page is part of version 4\&.20\&.8 of the Samba suite\&.
 .SH "SEE ALSO"
 .PP
 \fBnmbd\fR(8)
diff -Npur samba-4.20.7/docs/manpages/smbcquotas.1 samba-4.20.8/docs/manpages/smbcquotas.1
--- samba-4.20.7/docs/manpages/smbcquotas.1	2025-01-21 14:46:16.000000000 +0100
+++ samba-4.20.8/docs/manpages/smbcquotas.1	2025-03-25 15:41:08.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: smbcquotas
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: User Commands
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "SMBCQUOTAS" "1" "01/21/2025" "Samba 4\&.20\&.7" "User Commands"
+.TH "SMBCQUOTAS" "1" "03/25/2025" "Samba 4\&.20\&.8" "User Commands"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -431,7 +431,7 @@ smbcquotas
 couldn\*(Aqt connect to the specified server, or when there was an error getting or setting the quota(s), an exit status of 1 is returned\&. If there was an error parsing any command line arguments, an exit status of 2 is returned\&.
 .SH "VERSION"
 .PP
-This man page is part of version 4\&.20\&.7 of the Samba suite\&.
+This man page is part of version 4\&.20\&.8 of the Samba suite\&.
 .SH "AUTHOR"
 .PP
 The original Samba software and related utilities were created by Andrew Tridgell\&. Samba is now developed by the Samba Team as an Open Source project similar to the way the Linux kernel is developed\&.
diff -Npur samba-4.20.7/docs/manpages/smbd.8 samba-4.20.8/docs/manpages/smbd.8
--- samba-4.20.7/docs/manpages/smbd.8	2025-01-21 14:46:16.000000000 +0100
+++ samba-4.20.8/docs/manpages/smbd.8	2025-03-25 15:41:08.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: smbd
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: System Administration tools
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "SMBD" "8" "01/21/2025" "Samba 4\&.20\&.7" "System Administration tools"
+.TH "SMBD" "8" "03/25/2025" "Samba 4\&.20\&.8" "System Administration tools"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -260,7 +260,7 @@ parameter\&. When this is set, the follo
 .RE
 .SH "VERSION"
 .PP
-This man page is part of version 4\&.20\&.7 of the Samba suite\&.
+This man page is part of version 4\&.20\&.8 of the Samba suite\&.
 .SH "DIAGNOSTICS"
 .PP
 Most diagnostics issued by the server are logged in a specified log file\&. The log file name is specified at compile time, but may be overridden on the command line\&.
diff -Npur samba-4.20.7/docs/manpages/smbget.1 samba-4.20.8/docs/manpages/smbget.1
--- samba-4.20.7/docs/manpages/smbget.1	2025-01-21 14:46:16.000000000 +0100
+++ samba-4.20.8/docs/manpages/smbget.1	2025-03-25 15:41:09.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: smbget
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: User Commands
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "SMBGET" "1" "01/21/2025" "Samba 4\&.20\&.7" "User Commands"
+.TH "SMBGET" "1" "03/25/2025" "Samba 4\&.20\&.8" "User Commands"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -481,7 +481,7 @@ smbget \-\-recursive \-resume smb://rhon
 Permission denied is returned in some cases where the cause of the error is unknown (such as an illegally formatted smb:// url or trying to get a directory without \-\-resursive turned on)\&.
 .SH "VERSION"
 .PP
-This man page is part of version 4\&.20\&.7 of the Samba suite\&.
+This man page is part of version 4\&.20\&.8 of the Samba suite\&.
 .SH "AUTHOR"
 .PP
 The original Samba software and related utilities were created by Andrew Tridgell\&. Samba is now developed by the Samba Team as an Open Source project similar to the way the Linux kernel is developed\&.
diff -Npur samba-4.20.7/docs/manpages/smbpasswd.5 samba-4.20.8/docs/manpages/smbpasswd.5
--- samba-4.20.7/docs/manpages/smbpasswd.5	2025-01-21 14:46:17.000000000 +0100
+++ samba-4.20.8/docs/manpages/smbpasswd.5	2025-03-25 15:41:09.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: smbpasswd
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: File Formats and Conventions
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "SMBPASSWD" "5" "01/21/2025" "Samba 4\&.20\&.7" "File Formats and Conventions"
+.TH "SMBPASSWD" "5" "03/25/2025" "Samba 4\&.20\&.8" "File Formats and Conventions"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -165,7 +165,7 @@ This field consists of the time the acco
 All other colon separated fields are ignored at this time\&.
 .SH "VERSION"
 .PP
-This man page is part of version 4\&.20\&.7 of the Samba suite\&.
+This man page is part of version 4\&.20\&.8 of the Samba suite\&.
 .SH "SEE ALSO"
 .PP
 \fBsmbpasswd\fR(8),
diff -Npur samba-4.20.7/docs/manpages/smbpasswd.8 samba-4.20.8/docs/manpages/smbpasswd.8
--- samba-4.20.7/docs/manpages/smbpasswd.8	2025-01-21 14:46:17.000000000 +0100
+++ samba-4.20.8/docs/manpages/smbpasswd.8	2025-03-25 15:41:09.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: smbpasswd
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: System Administration tools
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "SMBPASSWD" "8" "01/21/2025" "Samba 4\&.20\&.7" "System Administration tools"
+.TH "SMBPASSWD" "8" "03/25/2025" "Samba 4\&.20\&.8" "System Administration tools"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -314,7 +314,7 @@ file and neglecting to allow "localhost"
 In addition, the smbpasswd command is only useful if Samba has been set up to use encrypted passwords\&.
 .SH "VERSION"
 .PP
-This man page is part of version 4\&.20\&.7 of the Samba suite\&.
+This man page is part of version 4\&.20\&.8 of the Samba suite\&.
 .SH "SEE ALSO"
 .PP
 \fBsmbpasswd\fR(5),
diff -Npur samba-4.20.7/docs/manpages/smbspool.8 samba-4.20.8/docs/manpages/smbspool.8
--- samba-4.20.7/docs/manpages/smbspool.8	2025-01-21 14:46:17.000000000 +0100
+++ samba-4.20.8/docs/manpages/smbspool.8	2025-03-25 15:41:09.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: smbspool
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: System Administration tools
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "SMBSPOOL" "8" "01/21/2025" "Samba 4\&.20\&.7" "System Administration tools"
+.TH "SMBSPOOL" "8" "03/25/2025" "Samba 4\&.20\&.8" "System Administration tools"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -173,7 +173,7 @@ The filename argument (argv[6]) contains
 .RE
 .SH "VERSION"
 .PP
-This man page is part of version 4\&.20\&.7 of the Samba suite\&.
+This man page is part of version 4\&.20\&.8 of the Samba suite\&.
 .SH "SEE ALSO"
 .PP
 \fBsmbd\fR(8)
diff -Npur samba-4.20.7/docs/manpages/smbspool_krb5_wrapper.8 samba-4.20.8/docs/manpages/smbspool_krb5_wrapper.8
--- samba-4.20.7/docs/manpages/smbspool_krb5_wrapper.8	2025-01-21 14:46:17.000000000 +0100
+++ samba-4.20.8/docs/manpages/smbspool_krb5_wrapper.8	2025-03-25 15:41:09.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: smbspool_krb5_wrapper
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: System Administration tools
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "SMBSPOOL_KRB5_WRAPPE" "8" "01/21/2025" "Samba 4\&.20\&.7" "System Administration tools"
+.TH "SMBSPOOL_KRB5_WRAPPE" "8" "03/25/2025" "Samba 4\&.20\&.8" "System Administration tools"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
diff -Npur samba-4.20.7/docs/manpages/smbstatus.1 samba-4.20.8/docs/manpages/smbstatus.1
--- samba-4.20.7/docs/manpages/smbstatus.1	2025-01-21 14:46:17.000000000 +0100
+++ samba-4.20.8/docs/manpages/smbstatus.1	2025-03-25 15:41:10.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: smbstatus
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: User Commands
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "SMBSTATUS" "1" "01/21/2025" "Samba 4\&.20\&.7" "User Commands"
+.TH "SMBSTATUS" "1" "03/25/2025" "Samba 4\&.20\&.8" "User Commands"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -483,7 +483,7 @@ Prints the program version number\&.
 .RE
 .SH "VERSION"
 .PP
-This man page is part of version 4\&.20\&.7 of the Samba suite\&.
+This man page is part of version 4\&.20\&.8 of the Samba suite\&.
 .SH "SEE ALSO"
 .PP
 \fBsmbd\fR(8)
diff -Npur samba-4.20.7/docs/manpages/smbtar.1 samba-4.20.8/docs/manpages/smbtar.1
--- samba-4.20.7/docs/manpages/smbtar.1	2025-01-21 14:46:18.000000000 +0100
+++ samba-4.20.8/docs/manpages/smbtar.1	2025-03-25 15:41:10.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: smbtar
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: User Commands
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "SMBTAR" "1" "01/21/2025" "Samba 4\&.20\&.7" "User Commands"
+.TH "SMBTAR" "1" "03/25/2025" "Samba 4\&.20\&.8" "User Commands"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -145,7 +145,7 @@ section for the
 command\&.
 .SH "VERSION"
 .PP
-This man page is part of version 4\&.20\&.7 of the Samba suite\&.
+This man page is part of version 4\&.20\&.8 of the Samba suite\&.
 .SH "SEE ALSO"
 .PP
 \fBsmbd\fR(8),
diff -Npur samba-4.20.7/docs/manpages/smbtree.1 samba-4.20.8/docs/manpages/smbtree.1
--- samba-4.20.7/docs/manpages/smbtree.1	2025-01-21 14:46:18.000000000 +0100
+++ samba-4.20.8/docs/manpages/smbtree.1	2025-03-25 15:41:10.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: smbtree
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: User Commands
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "SMBTREE" "1" "01/21/2025" "Samba 4\&.20\&.7" "User Commands"
+.TH "SMBTREE" "1" "03/25/2025" "Samba 4\&.20\&.8" "User Commands"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -244,7 +244,7 @@ In case you need more fine grained contr
 .RE
 .SH "VERSION"
 .PP
-This man page is part of version 4\&.20\&.7 of the Samba suite\&.
+This man page is part of version 4\&.20\&.8 of the Samba suite\&.
 .SH "AUTHOR"
 .PP
 The original Samba software and related utilities were created by Andrew Tridgell\&. Samba is now developed by the Samba Team as an Open Source project similar to the way the Linux kernel is developed\&.
diff -Npur samba-4.20.7/docs/manpages/testparm.1 samba-4.20.8/docs/manpages/testparm.1
--- samba-4.20.7/docs/manpages/testparm.1	2025-01-21 14:46:18.000000000 +0100
+++ samba-4.20.8/docs/manpages/testparm.1	2025-03-25 15:41:10.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: testparm
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: User Commands
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "TESTPARM" "1" "01/21/2025" "Samba 4\&.20\&.7" "User Commands"
+.TH "TESTPARM" "1" "03/25/2025" "Samba 4\&.20\&.8" "User Commands"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -184,7 +184,7 @@ The program will issue a message saying
 For certain use cases, SMB protocol requires use of cryptographic algorithms which are known to be weak and already broken\&. DES and ARCFOUR (RC4) ciphers and the SHA1 and MD5 hash algorithms are considered weak but they are required for backward compatibility\&. The testparm utility shows whether the Samba tools will fall back to these weak crypto algorithms if it is not possible to use strong cryptography by default\&. In FIPS mode weak crypto cannot be enabled\&.
 .SH "VERSION"
 .PP
-This man page is part of version 4\&.20\&.7 of the Samba suite\&.
+This man page is part of version 4\&.20\&.8 of the Samba suite\&.
 .SH "SEE ALSO"
 .PP
 \fBsmb.conf\fR(5),
diff -Npur samba-4.20.7/docs/manpages/traffic_learner.7 samba-4.20.8/docs/manpages/traffic_learner.7
--- samba-4.20.7/docs/manpages/traffic_learner.7	2025-01-21 14:46:18.000000000 +0100
+++ samba-4.20.8/docs/manpages/traffic_learner.7	2025-03-25 15:41:10.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: traffic_learner
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: User Commands
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "TRAFFIC_LEARNER" "7" "01/21/2025" "Samba 4\&.20\&.7" "User Commands"
+.TH "TRAFFIC_LEARNER" "7" "03/25/2025" "Samba 4\&.20\&.8" "User Commands"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -115,7 +115,7 @@ There are two special packet types here\
 The other special packet is "\-", which represents the limit of the conversation\&. In the example, this indicates that one observed conversation ended after this particular ngram\&. This special opcode is also used at the beginning of conversations, which are indicated by the ngram "\-\et\-"\&.
 .SH "VERSION"
 .PP
-This man page is complete for version 4\&.20\&.7 of the Samba suite\&.
+This man page is complete for version 4\&.20\&.8 of the Samba suite\&.
 .SH "SEE ALSO"
 .PP
 \fBtraffic_replay\fR(7)\&.
diff -Npur samba-4.20.7/docs/manpages/traffic_replay.7 samba-4.20.8/docs/manpages/traffic_replay.7
--- samba-4.20.7/docs/manpages/traffic_replay.7	2025-01-21 14:46:18.000000000 +0100
+++ samba-4.20.8/docs/manpages/traffic_replay.7	2025-03-25 15:41:11.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: traffic_replay
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: User Commands
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "TRAFFIC_REPLAY" "7" "01/21/2025" "Samba 4\&.20\&.7" "User Commands"
+.TH "TRAFFIC_REPLAY" "7" "03/25/2025" "Samba 4\&.20\&.8" "User Commands"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -367,7 +367,7 @@ traffic_replay traffic\-model\&.txt my\-
 The users created by the test will have names like STGU\-0\-xyz\&. The groups generated have names like STGG\-0\-xyz\&.
 .SH "VERSION"
 .PP
-This man page is complete for version 4\&.20\&.7 of the Samba suite\&.
+This man page is complete for version 4\&.20\&.8 of the Samba suite\&.
 .SH "SEE ALSO"
 .PP
 \fBtraffic_learner\fR(7)\&.
diff -Npur samba-4.20.7/docs/manpages/vfs_acl_tdb.8 samba-4.20.8/docs/manpages/vfs_acl_tdb.8
--- samba-4.20.7/docs/manpages/vfs_acl_tdb.8	2025-01-21 14:46:19.000000000 +0100
+++ samba-4.20.8/docs/manpages/vfs_acl_tdb.8	2025-03-25 15:41:11.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: vfs_acl_tdb
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: System Administration tools
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "VFS_ACL_TDB" "8" "01/21/2025" "Samba 4\&.20\&.7" "System Administration tools"
+.TH "VFS_ACL_TDB" "8" "03/25/2025" "Samba 4\&.20\&.8" "System Administration tools"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
diff -Npur samba-4.20.7/docs/manpages/vfs_acl_xattr.8 samba-4.20.8/docs/manpages/vfs_acl_xattr.8
--- samba-4.20.7/docs/manpages/vfs_acl_xattr.8	2025-01-21 14:46:19.000000000 +0100
+++ samba-4.20.8/docs/manpages/vfs_acl_xattr.8	2025-03-25 15:41:11.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: vfs_acl_xattr
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: System Administration tools
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "VFS_ACL_XATTR" "8" "01/21/2025" "Samba 4\&.20\&.7" "System Administration tools"
+.TH "VFS_ACL_XATTR" "8" "03/25/2025" "Samba 4\&.20\&.8" "System Administration tools"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
diff -Npur samba-4.20.7/docs/manpages/vfs_aio_fork.8 samba-4.20.8/docs/manpages/vfs_aio_fork.8
--- samba-4.20.7/docs/manpages/vfs_aio_fork.8	2025-01-21 14:46:19.000000000 +0100
+++ samba-4.20.8/docs/manpages/vfs_aio_fork.8	2025-03-25 15:41:11.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: vfs_aio_fork
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: System Administration tools
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "VFS_AIO_FORK" "8" "01/21/2025" "Samba 4\&.20\&.7" "System Administration tools"
+.TH "VFS_AIO_FORK" "8" "03/25/2025" "Samba 4\&.20\&.8" "System Administration tools"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -62,7 +62,7 @@ Straight forward use:
 .\}
 .SH "VERSION"
 .PP
-This man page is part of version 4\&.20\&.7 of the Samba suite\&.
+This man page is part of version 4\&.20\&.8 of the Samba suite\&.
 .SH "AUTHOR"
 .PP
 The original Samba software and related utilities were created by Andrew Tridgell\&. Samba is now developed by the Samba Team as an Open Source project similar to the way the Linux kernel is developed\&.
diff -Npur samba-4.20.7/docs/manpages/vfs_aio_pthread.8 samba-4.20.8/docs/manpages/vfs_aio_pthread.8
--- samba-4.20.7/docs/manpages/vfs_aio_pthread.8	2025-01-21 14:46:19.000000000 +0100
+++ samba-4.20.8/docs/manpages/vfs_aio_pthread.8	2025-03-25 15:41:11.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: vfs_aio_pthread
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: System Administration tools
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "VFS_AIO_PTHREAD" "8" "01/21/2025" "Samba 4\&.20\&.7" "System Administration tools"
+.TH "VFS_AIO_PTHREAD" "8" "03/25/2025" "Samba 4\&.20\&.8" "System Administration tools"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -75,7 +75,7 @@ The default is \*(Aqno\*(Aq\&.
 .RE
 .SH "VERSION"
 .PP
-This man page is part of version 4\&.20\&.7 of the Samba suite\&.
+This man page is part of version 4\&.20\&.8 of the Samba suite\&.
 .SH "AUTHOR"
 .PP
 The original Samba software and related utilities were created by Andrew Tridgell\&. Samba is now developed by the Samba Team as an Open Source project similar to the way the Linux kernel is developed\&.
diff -Npur samba-4.20.7/docs/manpages/vfs_audit.8 samba-4.20.8/docs/manpages/vfs_audit.8
--- samba-4.20.7/docs/manpages/vfs_audit.8	2025-01-21 14:46:19.000000000 +0100
+++ samba-4.20.8/docs/manpages/vfs_audit.8	2025-03-25 15:41:11.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: vfs_audit
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: System Administration tools
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "VFS_AUDIT" "8" "01/21/2025" "Samba 4\&.20\&.7" "System Administration tools"
+.TH "VFS_AUDIT" "8" "03/25/2025" "Samba 4\&.20\&.8" "System Administration tools"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -112,7 +112,7 @@ Log operations on all shares using the L
 .\}
 .SH "VERSION"
 .PP
-This man page is part of version 4\&.20\&.7 of the Samba suite\&.
+This man page is part of version 4\&.20\&.8 of the Samba suite\&.
 .SH "AUTHOR"
 .PP
 The original Samba software and related utilities were created by Andrew Tridgell\&. Samba is now developed by the Samba Team as an Open Source project similar to the way the Linux kernel is developed\&.
diff -Npur samba-4.20.7/docs/manpages/vfs_btrfs.8 samba-4.20.8/docs/manpages/vfs_btrfs.8
--- samba-4.20.7/docs/manpages/vfs_btrfs.8	2025-01-21 14:46:19.000000000 +0100
+++ samba-4.20.8/docs/manpages/vfs_btrfs.8	2025-03-25 15:41:11.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: vfs_btrfs
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: System Administration tools
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "VFS_BTRFS" "8" "01/21/2025" "Samba 4\&.20\&.7" "System Administration tools"
+.TH "VFS_BTRFS" "8" "03/25/2025" "Samba 4\&.20\&.8" "System Administration tools"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -103,7 +103,7 @@ to Windows Explorer as file / directory
 .\}
 .SH "VERSION"
 .PP
-This man page is part of version 4\&.20\&.7 of the Samba suite\&.
+This man page is part of version 4\&.20\&.8 of the Samba suite\&.
 .SH "AUTHOR"
 .PP
 The original Samba software and related utilities were created by Andrew Tridgell\&. Samba is now developed by the Samba Team as an Open Source project similar to the way the Linux kernel is developed\&.
diff -Npur samba-4.20.7/docs/manpages/vfs_cacheprime.8 samba-4.20.8/docs/manpages/vfs_cacheprime.8
--- samba-4.20.7/docs/manpages/vfs_cacheprime.8	2025-01-21 14:46:20.000000000 +0100
+++ samba-4.20.8/docs/manpages/vfs_cacheprime.8	2025-03-25 15:41:12.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: vfs_cacheprime
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: System Administration tools
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "VFS_CACHEPRIME" "8" "01/21/2025" "Samba 4\&.20\&.7" "System Administration tools"
+.TH "VFS_CACHEPRIME" "8" "03/25/2025" "Samba 4\&.20\&.8" "System Administration tools"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -115,7 +115,7 @@ cacheprime
 is not a substitute for a general\-purpose readahead mechanism\&. It is intended for use only in very specific environments where disk operations must be aligned and sized to known values (as much as that is possible)\&.
 .SH "VERSION"
 .PP
-This man page is part of version 4\&.20\&.7 of the Samba suite\&.
+This man page is part of version 4\&.20\&.8 of the Samba suite\&.
 .SH "AUTHOR"
 .PP
 The original Samba software and related utilities were created by Andrew Tridgell\&. Samba is now developed by the Samba Team as an Open Source project similar to the way the Linux kernel is developed\&.
diff -Npur samba-4.20.7/docs/manpages/vfs_cap.8 samba-4.20.8/docs/manpages/vfs_cap.8
--- samba-4.20.7/docs/manpages/vfs_cap.8	2025-01-21 14:46:20.000000000 +0100
+++ samba-4.20.8/docs/manpages/vfs_cap.8	2025-03-25 15:41:12.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: vfs_cap
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: System Administration tools
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "VFS_CAP" "8" "01/21/2025" "Samba 4\&.20\&.7" "System Administration tools"
+.TH "VFS_CAP" "8" "03/25/2025" "Samba 4\&.20\&.8" "System Administration tools"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -63,7 +63,7 @@ On a system using GNU libiconv, use CAP
 .\}
 .SH "VERSION"
 .PP
-This man page is part of version 4\&.20\&.7 of the Samba suite\&.
+This man page is part of version 4\&.20\&.8 of the Samba suite\&.
 .SH "AUTHOR"
 .PP
 The original Samba software and related utilities were created by Andrew Tridgell\&. Samba is now developed by the Samba Team as an Open Source project similar to the way the Linux kernel is developed\&.
diff -Npur samba-4.20.7/docs/manpages/vfs_catia.8 samba-4.20.8/docs/manpages/vfs_catia.8
--- samba-4.20.7/docs/manpages/vfs_catia.8	2025-01-21 14:46:20.000000000 +0100
+++ samba-4.20.8/docs/manpages/vfs_catia.8	2025-03-25 15:41:12.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: vfs_catia
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: System Administration tools
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "VFS_CATIA" "8" "01/21/2025" "Samba 4\&.20\&.7" "System Administration tools"
+.TH "VFS_CATIA" "8" "03/25/2025" "Samba 4\&.20\&.8" "System Administration tools"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
diff -Npur samba-4.20.7/docs/manpages/vfs_ceph.8 samba-4.20.8/docs/manpages/vfs_ceph.8
--- samba-4.20.7/docs/manpages/vfs_ceph.8	2025-01-21 14:46:20.000000000 +0100
+++ samba-4.20.8/docs/manpages/vfs_ceph.8	2025-03-25 15:41:12.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: vfs_ceph
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: System Administration tools
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "VFS_CEPH" "8" "01/21/2025" "Samba 4\&.20\&.7" "System Administration tools"
+.TH "VFS_CEPH" "8" "03/25/2025" "Samba 4\&.20\&.8" "System Administration tools"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -116,7 +116,7 @@ Example: ceph:filesystem = myfs2
 .RE
 .SH "VERSION"
 .PP
-This man page is part of version 4\&.20\&.7 of the Samba suite\&.
+This man page is part of version 4\&.20\&.8 of the Samba suite\&.
 .SH "AUTHOR"
 .PP
 The original Samba software and related utilities were created by Andrew Tridgell\&. Samba is now developed by the Samba Team as an Open Source project similar to the way the Linux kernel is developed\&.
diff -Npur samba-4.20.7/docs/manpages/vfs_ceph_new.8 samba-4.20.8/docs/manpages/vfs_ceph_new.8
--- samba-4.20.7/docs/manpages/vfs_ceph_new.8	2025-01-21 14:46:20.000000000 +0100
+++ samba-4.20.8/docs/manpages/vfs_ceph_new.8	2025-03-25 15:41:12.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: vfs_ceph_new
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: System Administration tools
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "VFS_CEPH_NEW" "8" "01/21/2025" "Samba 4\&.20\&.7" "System Administration tools"
+.TH "VFS_CEPH_NEW" "8" "03/25/2025" "Samba 4\&.20\&.8" "System Administration tools"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -118,9 +118,58 @@ Allows one to explicitly select the Ceph
 .sp
 Example: ceph_new:filesystem = myfs2
 .RE
+.PP
+ceph_new:proxy = [ yes | no | auto ]
+.RS 4
+Allows one to indicate use of the libcephfs proxy library for optimized resource utilization, allowing more simultaneous client connections\&. Prerequisites include the presence of
+\fIlibcephfs_proxy\&.so\&.X\fR
+shared library file under loadable locations for dynamic linker and an active(running)
+\fIlibcephfsd\fR
+daemon\&.
+.RS
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+\fBno\fR
+(default) \- Do not use the proxy library but regular connection through
+\fIlibcephfs\&.so\&.X\fR\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+\fByes\fR
+\- Always use the proxy library and fail the client connection request if prerequisites are unmet\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+\fBauto\fR
+\- Attempt to use the proxy library but fall back to the regular cephfs connection if prerequisites are unmet\&.
+.RE
+.sp
+.RE
+.RE
 .SH "VERSION"
 .PP
-This man page is part of version 4\&.20\&.7 of the Samba suite\&.
+This man page is part of version 4\&.20\&.8 of the Samba suite\&.
 .SH "AUTHOR"
 .PP
 The original Samba software and related utilities were created by Andrew Tridgell\&. Samba is now developed by the Samba Team as an Open Source project similar to the way the Linux kernel is developed\&.
diff -Npur samba-4.20.7/docs/manpages/vfs_ceph_snapshots.8 samba-4.20.8/docs/manpages/vfs_ceph_snapshots.8
--- samba-4.20.7/docs/manpages/vfs_ceph_snapshots.8	2025-01-21 14:46:20.000000000 +0100
+++ samba-4.20.8/docs/manpages/vfs_ceph_snapshots.8	2025-03-25 15:41:12.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: vfs_ceph_snapshots
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: System Administration tools
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "VFS_CEPH_SNAPSHOTS" "8" "01/21/2025" "Samba 4\&.20\&.7" "System Administration tools"
+.TH "VFS_CEPH_SNAPSHOTS" "8" "03/25/2025" "Samba 4\&.20\&.8" "System Administration tools"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -107,7 +107,7 @@ Example:
 .RE
 .SH "VERSION"
 .PP
-This man page is part of version 4\&.20\&.7 of the Samba suite\&.
+This man page is part of version 4\&.20\&.8 of the Samba suite\&.
 .SH "AUTHOR"
 .PP
 The original Samba software and related utilities were created by Andrew Tridgell\&. Samba is now developed by the Samba Team as an Open Source project similar to the way the Linux kernel is developed\&.
diff -Npur samba-4.20.7/docs/manpages/vfs_commit.8 samba-4.20.8/docs/manpages/vfs_commit.8
--- samba-4.20.7/docs/manpages/vfs_commit.8	2025-01-21 14:46:20.000000000 +0100
+++ samba-4.20.8/docs/manpages/vfs_commit.8	2025-03-25 15:41:13.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: vfs_commit
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: System Administration tools
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "VFS_COMMIT" "8" "01/21/2025" "Samba 4\&.20\&.7" "System Administration tools"
+.TH "VFS_COMMIT" "8" "03/25/2025" "Samba 4\&.20\&.8" "System Administration tools"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -116,7 +116,7 @@ commit
 may reduce performance\&.
 .SH "VERSION"
 .PP
-This man page is part of version 4\&.20\&.7 of the Samba suite\&.
+This man page is part of version 4\&.20\&.8 of the Samba suite\&.
 .SH "AUTHOR"
 .PP
 The original Samba software and related utilities were created by Andrew Tridgell\&. Samba is now developed by the Samba Team as an Open Source project similar to the way the Linux kernel is developed\&.
diff -Npur samba-4.20.7/docs/manpages/vfs_crossrename.8 samba-4.20.8/docs/manpages/vfs_crossrename.8
--- samba-4.20.7/docs/manpages/vfs_crossrename.8	2025-01-21 14:46:21.000000000 +0100
+++ samba-4.20.8/docs/manpages/vfs_crossrename.8	2025-03-25 15:41:13.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: vfs_crossrename
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: System Administration tools
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "VFS_CROSSRENAME" "8" "01/21/2025" "Samba 4\&.20\&.7" "System Administration tools"
+.TH "VFS_CROSSRENAME" "8" "03/25/2025" "Samba 4\&.20\&.8" "System Administration tools"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -91,7 +91,7 @@ To add server\-side cross\-device rename
 .\}
 .SH "VERSION"
 .PP
-This man page is part of version 4\&.20\&.7 of the Samba suite\&.
+This man page is part of version 4\&.20\&.8 of the Samba suite\&.
 .SH "AUTHOR"
 .PP
 The original Samba software and related utilities were created by Andrew Tridgell\&. Samba is now developed by the Samba Team as an Open Source project similar to the way the Linux kernel is developed\&.
diff -Npur samba-4.20.7/docs/manpages/vfs_default_quota.8 samba-4.20.8/docs/manpages/vfs_default_quota.8
--- samba-4.20.7/docs/manpages/vfs_default_quota.8	2025-01-21 14:46:21.000000000 +0100
+++ samba-4.20.8/docs/manpages/vfs_default_quota.8	2025-03-25 15:41:13.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: vfs_default_quota
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: System Administration tools
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "VFS_DEFAULT_QUOTA" "8" "01/21/2025" "Samba 4\&.20\&.7" "System Administration tools"
+.TH "VFS_DEFAULT_QUOTA" "8" "03/25/2025" "Samba 4\&.20\&.8" "System Administration tools"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -86,7 +86,7 @@ Store the default quota record in the qu
 .\}
 .SH "VERSION"
 .PP
-This man page is part of version 4\&.20\&.7 of the Samba suite\&.
+This man page is part of version 4\&.20\&.8 of the Samba suite\&.
 .SH "AUTHOR"
 .PP
 The original Samba software and related utilities were created by Andrew Tridgell\&. Samba is now developed by the Samba Team as an Open Source project similar to the way the Linux kernel is developed\&.
diff -Npur samba-4.20.7/docs/manpages/vfs_dirsort.8 samba-4.20.8/docs/manpages/vfs_dirsort.8
--- samba-4.20.7/docs/manpages/vfs_dirsort.8	2025-01-21 14:46:21.000000000 +0100
+++ samba-4.20.8/docs/manpages/vfs_dirsort.8	2025-03-25 15:41:13.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: vfs_dirsort
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: System Administration tools
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "VFS_DIRSORT" "8" "01/21/2025" "Samba 4\&.20\&.7" "System Administration tools"
+.TH "VFS_DIRSORT" "8" "03/25/2025" "Samba 4\&.20\&.8" "System Administration tools"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -59,7 +59,7 @@ Sort directories for all shares:
 .\}
 .SH "VERSION"
 .PP
-This man page is part of version 4\&.20\&.7 of the Samba suite\&.
+This man page is part of version 4\&.20\&.8 of the Samba suite\&.
 .SH "AUTHOR"
 .PP
 The original Samba software and related utilities were created by Andrew Tridgell\&. Samba is now developed by the Samba Team as an Open Source project similar to the way the Linux kernel is developed\&.
diff -Npur samba-4.20.7/docs/manpages/vfs_expand_msdfs.8 samba-4.20.8/docs/manpages/vfs_expand_msdfs.8
--- samba-4.20.7/docs/manpages/vfs_expand_msdfs.8	2025-01-21 14:46:21.000000000 +0100
+++ samba-4.20.8/docs/manpages/vfs_expand_msdfs.8	2025-03-25 15:41:13.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: vfs_expand_msdfs
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: System Administration tools
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "VFS_EXPAND_MSDFS" "8" "01/21/2025" "Samba 4\&.20\&.7" "System Administration tools"
+.TH "VFS_EXPAND_MSDFS" "8" "03/25/2025" "Samba 4\&.20\&.8" "System Administration tools"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -56,7 +56,7 @@ With this module, the link target is not
 With this, clients from network 192\&.168\&.234/24 are redirected to host local\&.samba\&.org, clients from 192\&.168/16 are redirected to remote\&.samba\&.org and all other clients go to default\&.samba\&.org\&.
 .SH "VERSION"
 .PP
-This man page is part of version 4\&.20\&.7 of the Samba suite\&.
+This man page is part of version 4\&.20\&.8 of the Samba suite\&.
 .SH "AUTHOR"
 .PP
 The original Samba software and related utilities were created by Andrew Tridgell\&. Samba is now developed by the Samba Team as an Open Source project similar to the way the Linux kernel is developed\&.
diff -Npur samba-4.20.7/docs/manpages/vfs_extd_audit.8 samba-4.20.8/docs/manpages/vfs_extd_audit.8
--- samba-4.20.7/docs/manpages/vfs_extd_audit.8	2025-01-21 14:46:21.000000000 +0100
+++ samba-4.20.8/docs/manpages/vfs_extd_audit.8	2025-03-25 15:41:13.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: vfs_extd_audit
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: System Administration tools
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "VFS_EXTD_AUDIT" "8" "01/21/2025" "Samba 4\&.20\&.7" "System Administration tools"
+.TH "VFS_EXTD_AUDIT" "8" "03/25/2025" "Samba 4\&.20\&.8" "System Administration tools"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -55,7 +55,7 @@ is identical to
 This module is stackable\&.
 .SH "VERSION"
 .PP
-This man page is part of version 4\&.20\&.7 of the Samba suite\&.
+This man page is part of version 4\&.20\&.8 of the Samba suite\&.
 .SH "AUTHOR"
 .PP
 The original Samba software and related utilities were created by Andrew Tridgell\&. Samba is now developed by the Samba Team as an Open Source project similar to the way the Linux kernel is developed\&.
diff -Npur samba-4.20.7/docs/manpages/vfs_fake_perms.8 samba-4.20.8/docs/manpages/vfs_fake_perms.8
--- samba-4.20.7/docs/manpages/vfs_fake_perms.8	2025-01-21 14:46:21.000000000 +0100
+++ samba-4.20.8/docs/manpages/vfs_fake_perms.8	2025-03-25 15:41:14.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: vfs_fake_perms
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: System Administration tools
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "VFS_FAKE_PERMS" "8" "01/21/2025" "Samba 4\&.20\&.7" "System Administration tools"
+.TH "VFS_FAKE_PERMS" "8" "03/25/2025" "Samba 4\&.20\&.8" "System Administration tools"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -58,7 +58,7 @@ This module is stackable\&.
 .\}
 .SH "VERSION"
 .PP
-This man page is part of version 4\&.20\&.7 of the Samba suite\&.
+This man page is part of version 4\&.20\&.8 of the Samba suite\&.
 .SH "AUTHOR"
 .PP
 The original Samba software and related utilities were created by Andrew Tridgell\&. Samba is now developed by the Samba Team as an Open Source project similar to the way the Linux kernel is developed\&.
diff -Npur samba-4.20.7/docs/manpages/vfs_fileid.8 samba-4.20.8/docs/manpages/vfs_fileid.8
--- samba-4.20.7/docs/manpages/vfs_fileid.8	2025-01-21 14:46:22.000000000 +0100
+++ samba-4.20.8/docs/manpages/vfs_fileid.8	2025-03-25 15:41:14.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: vfs_fileid
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: System Administration tools
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "VFS_FILEID" "8" "01/21/2025" "Samba 4\&.20\&.7" "System Administration tools"
+.TH "VFS_FILEID" "8" "03/25/2025" "Samba 4\&.20\&.8" "System Administration tools"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -212,7 +212,7 @@ module in order avoid load on heavily co
 .\}
 .SH "VERSION"
 .PP
-This man page is part of version 4\&.20\&.7 of the Samba suite\&.
+This man page is part of version 4\&.20\&.8 of the Samba suite\&.
 .SH "AUTHOR"
 .PP
 The original Samba software and related utilities were created by Andrew Tridgell\&. Samba is now developed by the Samba Team as an Open Source project similar to the way the Linux kernel is developed\&.
diff -Npur samba-4.20.7/docs/manpages/vfs_fruit.8 samba-4.20.8/docs/manpages/vfs_fruit.8
--- samba-4.20.7/docs/manpages/vfs_fruit.8	2025-01-21 14:46:22.000000000 +0100
+++ samba-4.20.8/docs/manpages/vfs_fruit.8	2025-03-25 15:41:14.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: vfs_fruit
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: System Administration tools
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "VFS_FRUIT" "8" "01/21/2025" "Samba 4\&.20\&.7" "System Administration tools"
+.TH "VFS_FRUIT" "8" "03/25/2025" "Samba 4\&.20\&.8" "System Administration tools"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
diff -Npur samba-4.20.7/docs/manpages/vfs_full_audit.8 samba-4.20.8/docs/manpages/vfs_full_audit.8
--- samba-4.20.7/docs/manpages/vfs_full_audit.8	2025-01-21 14:46:22.000000000 +0100
+++ samba-4.20.8/docs/manpages/vfs_full_audit.8	2025-03-25 15:41:14.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: vfs_full_audit
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: System Administration tools
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "VFS_FULL_AUDIT" "8" "01/21/2025" "Samba 4\&.20\&.7" "System Administration tools"
+.TH "VFS_FULL_AUDIT" "8" "03/25/2025" "Samba 4\&.20\&.8" "System Administration tools"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -501,7 +501,7 @@ Log file and directory open operations o
 .\}
 .SH "VERSION"
 .PP
-This man page is part of version 4\&.20\&.7 of the Samba suite\&.
+This man page is part of version 4\&.20\&.8 of the Samba suite\&.
 .SH "AUTHOR"
 .PP
 The original Samba software and related utilities were created by Andrew Tridgell\&. Samba is now developed by the Samba Team as an Open Source project similar to the way the Linux kernel is developed\&.
diff -Npur samba-4.20.7/docs/manpages/vfs_glusterfs.8 samba-4.20.8/docs/manpages/vfs_glusterfs.8
--- samba-4.20.7/docs/manpages/vfs_glusterfs.8	2025-01-21 14:46:22.000000000 +0100
+++ samba-4.20.8/docs/manpages/vfs_glusterfs.8	2025-03-25 15:41:14.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: vfs_glusterfs
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: System Administration tools
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "VFS_GLUSTERFS" "8" "01/21/2025" "Samba 4\&.20\&.7" "System Administration tools"
+.TH "VFS_GLUSTERFS" "8" "03/25/2025" "Samba 4\&.20\&.8" "System Administration tools"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -129,7 +129,7 @@ on the commandline\&.
 With GlusterFS versions >= 9, we silently bypass write\-behind translator during initial connect and failure is avoided\&.
 .SH "VERSION"
 .PP
-This man page is part of version 4\&.20\&.7 of the Samba suite\&.
+This man page is part of version 4\&.20\&.8 of the Samba suite\&.
 .SH "AUTHOR"
 .PP
 The original Samba software and related utilities were created by Andrew Tridgell\&. Samba is now developed by the Samba Team as an Open Source project similar to the way the Linux kernel is developed\&.
diff -Npur samba-4.20.7/docs/manpages/vfs_glusterfs_fuse.8 samba-4.20.8/docs/manpages/vfs_glusterfs_fuse.8
--- samba-4.20.7/docs/manpages/vfs_glusterfs_fuse.8	2025-01-21 14:46:22.000000000 +0100
+++ samba-4.20.8/docs/manpages/vfs_glusterfs_fuse.8	2025-03-25 15:41:15.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: vfs_glusterfs_fuse
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: System Administration tools
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "VFS_GLUSTERFS_FUSE" "8" "01/21/2025" "Samba 4\&.20\&.7" "System Administration tools"
+.TH "VFS_GLUSTERFS_FUSE" "8" "03/25/2025" "Samba 4\&.20\&.8" "System Administration tools"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -78,7 +78,7 @@ module\&.
 This module does currently have no further options\&.
 .SH "VERSION"
 .PP
-This man page is part of version 4\&.20\&.7 of the Samba suite\&.
+This man page is part of version 4\&.20\&.8 of the Samba suite\&.
 .SH "AUTHOR"
 .PP
 The original Samba software and related utilities were created by Andrew Tridgell\&. Samba is now developed by the Samba Team as an Open Source project similar to the way the Linux kernel is developed\&.
diff -Npur samba-4.20.7/docs/manpages/vfs_gpfs.8 samba-4.20.8/docs/manpages/vfs_gpfs.8
--- samba-4.20.7/docs/manpages/vfs_gpfs.8	2025-01-21 14:46:23.000000000 +0100
+++ samba-4.20.8/docs/manpages/vfs_gpfs.8	2025-03-25 15:41:15.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: vfs_gpfs
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: System Administration tools
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "VFS_GPFS" "8" "01/21/2025" "Samba 4\&.20\&.7" "System Administration tools"
+.TH "VFS_GPFS" "8" "03/25/2025" "Samba 4\&.20\&.8" "System Administration tools"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -551,6 +551,38 @@ no
 .RE
 .RE
 .PP
+gpfs:clamp_invalid_times = [ yes | no ]
+.RS 4
+GPFS stores timestamps using 32\-bit unsigned integers for the seconds component\&. When using gpfs:settimes = yes, this module validates times that clients attempt to set are within the supported GPFS range between 0 and UINT32_MAX\&. If a timestamp is outside of this range, the client request is rejected\&. To cope with clients setting eg temporary timestamps outside the valid range, this parameter can be used to clamp the client timestamp to the allowed range\&. Times before Thu Jan 1 12:00:00 AM UTC 1970 (the UNIX epock) are then set to Thu Jan 1 12:00:00 AM UTC 1970, times after Sun Feb 7 06:28:15 AM UTC 2106 will be set to Sun Feb 7 06:28:15 AM UTC 2106\&.
+.RS
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+no(default)
+\- Fail request with invalid time\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+yes
+\- clamp invalid times to 0 or UINT32_MAX\&.
+.RE
+.sp
+.RE
+.RE
+.PP
 gpfs:syncio = [yes|no]
 .RS 4
 This parameter makes Samba open all files with O_SYNC\&. This triggers optimizations in GPFS for workloads that heavily share files\&.
@@ -624,7 +656,7 @@ gpfs\&.h
 in gpfs versions newer than 3\&.2\&.1 PTF8\&.
 .SH "VERSION"
 .PP
-This man page is part of version 4\&.20\&.7 of the Samba suite\&.
+This man page is part of version 4\&.20\&.8 of the Samba suite\&.
 .SH "AUTHOR"
 .PP
 The original Samba software and related utilities were created by Andrew Tridgell\&. Samba is now developed by the Samba Team as an Open Source project similar to the way the Linux kernel is developed\&.
diff -Npur samba-4.20.7/docs/manpages/vfs_io_uring.8 samba-4.20.8/docs/manpages/vfs_io_uring.8
--- samba-4.20.7/docs/manpages/vfs_io_uring.8	2025-01-21 14:46:23.000000000 +0100
+++ samba-4.20.8/docs/manpages/vfs_io_uring.8	2025-03-25 15:41:15.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: vfs_io_uring
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: System Administration tools
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "VFS_IO_URING" "8" "01/21/2025" "Samba 4\&.20\&.7" "System Administration tools"
+.TH "VFS_IO_URING" "8" "03/25/2025" "Samba 4\&.20\&.8" "System Administration tools"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -78,7 +78,7 @@ The default is \*(Aqno\*(Aq\&.
 \fBio_uring_setup\fR(2)\&.
 .SH "VERSION"
 .PP
-This man page is part of version 4\&.20\&.7 of the Samba suite\&.
+This man page is part of version 4\&.20\&.8 of the Samba suite\&.
 .SH "AUTHOR"
 .PP
 The original Samba software and related utilities were created by Andrew Tridgell\&. Samba is now developed by the Samba Team as an Open Source project similar to the way the Linux kernel is developed\&.
diff -Npur samba-4.20.7/docs/manpages/vfs_linux_xfs_sgid.8 samba-4.20.8/docs/manpages/vfs_linux_xfs_sgid.8
--- samba-4.20.7/docs/manpages/vfs_linux_xfs_sgid.8	2025-01-21 14:46:23.000000000 +0100
+++ samba-4.20.8/docs/manpages/vfs_linux_xfs_sgid.8	2025-03-25 15:41:15.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: vfs_linux_xfs_sgid
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: System Administration tools
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "VFS_LINUX_XFS_SGID" "8" "01/21/2025" "Samba 4\&.20\&.7" "System Administration tools"
+.TH "VFS_LINUX_XFS_SGID" "8" "03/25/2025" "Samba 4\&.20\&.8" "System Administration tools"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -64,7 +64,7 @@ Add linux_xfs_sgid functionality for [sh
 .\}
 .SH "VERSION"
 .PP
-This man page is part of version 4\&.20\&.7 of the Samba suite\&.
+This man page is part of version 4\&.20\&.8 of the Samba suite\&.
 .SH "AUTHOR"
 .PP
 The original Samba software and related utilities were created by Andrew Tridgell\&. Samba is now developed by the Samba Team as an Open Source project similar to the way the Linux kernel is developed\&.
diff -Npur samba-4.20.7/docs/manpages/vfs_media_harmony.8 samba-4.20.8/docs/manpages/vfs_media_harmony.8
--- samba-4.20.7/docs/manpages/vfs_media_harmony.8	2025-01-21 14:46:23.000000000 +0100
+++ samba-4.20.8/docs/manpages/vfs_media_harmony.8	2025-03-25 15:41:15.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: vfs_media_harmony
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: System Administration tools
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "VFS_MEDIA_HARMONY" "8" "01/21/2025" "Samba 4\&.20\&.7" "System Administration tools"
+.TH "VFS_MEDIA_HARMONY" "8" "03/25/2025" "Samba 4\&.20\&.8" "System Administration tools"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -138,7 +138,7 @@ vfs_media_harmony
 is designed to work with Avid editing applications that look in the Avid MediaFiles or OMFI MediaFiles directories for media\&. It is not designed to work as expected in all circumstances for general use\&. For example: It is possible to open a client\-specific file such as msmMMOB\&.mdb_192\&.168\&.1\&.10_userx even though it doesn\*(Aqt show up in a directory listing\&.
 .SH "VERSION"
 .PP
-This man page is part of version 4\&.20\&.7 of the Samba suite\&.
+This man page is part of version 4\&.20\&.8 of the Samba suite\&.
 .SH "AUTHOR"
 .PP
 The original Samba software and related utilities were created by Andrew Tridgell\&. Samba is now developed by the Samba Team as an Open Source project similar to the way the Linux kernel is developed\&.
diff -Npur samba-4.20.7/docs/manpages/vfs_nfs4acl_xattr.8 samba-4.20.8/docs/manpages/vfs_nfs4acl_xattr.8
--- samba-4.20.7/docs/manpages/vfs_nfs4acl_xattr.8	2025-01-21 14:46:23.000000000 +0100
+++ samba-4.20.8/docs/manpages/vfs_nfs4acl_xattr.8	2025-03-25 15:41:15.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: vfs_nfs4acl_xattr
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: System Administration tools
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "VFS_NFS4ACL_XATTR" "8" "01/21/2025" "Samba 4\&.20\&.7" "System Administration tools"
+.TH "VFS_NFS4ACL_XATTR" "8" "03/25/2025" "Samba 4\&.20\&.8" "System Administration tools"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
diff -Npur samba-4.20.7/docs/manpages/vfs_offline.8 samba-4.20.8/docs/manpages/vfs_offline.8
--- samba-4.20.7/docs/manpages/vfs_offline.8	2025-01-21 14:46:24.000000000 +0100
+++ samba-4.20.8/docs/manpages/vfs_offline.8	2025-03-25 15:41:16.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: vfs_offline
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: System Administration tools
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "VFS_OFFLINE" "8" "01/21/2025" "Samba 4\&.20\&.7" "System Administration tools"
+.TH "VFS_OFFLINE" "8" "03/25/2025" "Samba 4\&.20\&.8" "System Administration tools"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -59,7 +59,7 @@ Mark all files in a share as offline:
 .\}
 .SH "VERSION"
 .PP
-This man page is part of version 4\&.20\&.7 of the Samba suite\&.
+This man page is part of version 4\&.20\&.8 of the Samba suite\&.
 .SH "AUTHOR"
 .PP
 The original Samba software and related utilities were created by Andrew Tridgell\&. Samba is now developed by the Samba Team as an Open Source project similar to the way the Linux kernel is developed\&.
diff -Npur samba-4.20.7/docs/manpages/vfs_prealloc.8 samba-4.20.8/docs/manpages/vfs_prealloc.8
--- samba-4.20.7/docs/manpages/vfs_prealloc.8	2025-01-21 14:46:24.000000000 +0100
+++ samba-4.20.8/docs/manpages/vfs_prealloc.8	2025-03-25 15:41:16.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: vfs_prealloc
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: System Administration tools
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "VFS_PREALLOC" "8" "01/21/2025" "Samba 4\&.20\&.7" "System Administration tools"
+.TH "VFS_PREALLOC" "8" "03/25/2025" "Samba 4\&.20\&.8" "System Administration tools"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -112,7 +112,7 @@ vfs_prealloc
 is not supported on all platforms and filesystems\&. Currently only XFS filesystems on Linux and IRIX are supported\&.
 .SH "VERSION"
 .PP
-This man page is part of version 4\&.20\&.7 of the Samba suite\&.
+This man page is part of version 4\&.20\&.8 of the Samba suite\&.
 .SH "AUTHOR"
 .PP
 The original Samba software and related utilities were created by Andrew Tridgell\&. Samba is now developed by the Samba Team as an Open Source project similar to the way the Linux kernel is developed\&.
diff -Npur samba-4.20.7/docs/manpages/vfs_preopen.8 samba-4.20.8/docs/manpages/vfs_preopen.8
--- samba-4.20.7/docs/manpages/vfs_preopen.8	2025-01-21 14:46:24.000000000 +0100
+++ samba-4.20.8/docs/manpages/vfs_preopen.8	2025-03-25 15:41:16.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: vfs_preopen
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: System Administration tools
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "VFS_PREOPEN" "8" "01/21/2025" "Samba 4\&.20\&.7" "System Administration tools"
+.TH "VFS_PREOPEN" "8" "03/25/2025" "Samba 4\&.20\&.8" "System Administration tools"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -147,7 +147,7 @@ in the \*(Aq\m[blue]\fBlog level\fR\m[]\
 .RE
 .SH "VERSION"
 .PP
-This man page is part of version 4\&.20\&.7 of the Samba suite\&.
+This man page is part of version 4\&.20\&.8 of the Samba suite\&.
 .SH "AUTHOR"
 .PP
 The original Samba software and related utilities were created by Andrew Tridgell\&. Samba is now developed by the Samba Team as an Open Source project similar to the way the Linux kernel is developed\&.
diff -Npur samba-4.20.7/docs/manpages/vfs_readahead.8 samba-4.20.8/docs/manpages/vfs_readahead.8
--- samba-4.20.7/docs/manpages/vfs_readahead.8	2025-01-21 14:46:24.000000000 +0100
+++ samba-4.20.8/docs/manpages/vfs_readahead.8	2025-03-25 15:41:16.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: vfs_readahead
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: System Administration tools
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "VFS_READAHEAD" "8" "01/21/2025" "Samba 4\&.20\&.7" "System Administration tools"
+.TH "VFS_READAHEAD" "8" "03/25/2025" "Samba 4\&.20\&.8" "System Administration tools"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -115,7 +115,7 @@ G
 .\}
 .SH "VERSION"
 .PP
-This man page is part of version 4\&.20\&.7 of the Samba suite\&.
+This man page is part of version 4\&.20\&.8 of the Samba suite\&.
 .SH "AUTHOR"
 .PP
 The original Samba software and related utilities were created by Andrew Tridgell\&. Samba is now developed by the Samba Team as an Open Source project similar to the way the Linux kernel is developed\&.
diff -Npur samba-4.20.7/docs/manpages/vfs_readonly.8 samba-4.20.8/docs/manpages/vfs_readonly.8
--- samba-4.20.7/docs/manpages/vfs_readonly.8	2025-01-21 14:46:24.000000000 +0100
+++ samba-4.20.8/docs/manpages/vfs_readonly.8	2025-03-25 15:41:16.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: vfs_readonly
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: System Administration tools
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "VFS_READONLY" "8" "01/21/2025" "Samba 4\&.20\&.7" "System Administration tools"
+.TH "VFS_READONLY" "8" "03/25/2025" "Samba 4\&.20\&.8" "System Administration tools"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -81,7 +81,7 @@ Mark the [backup] share as read only dur
 .\}
 .SH "VERSION"
 .PP
-This man page is part of version 4\&.20\&.7 of the Samba suite\&.
+This man page is part of version 4\&.20\&.8 of the Samba suite\&.
 .SH "AUTHOR"
 .PP
 The original Samba software and related utilities were created by Andrew Tridgell\&. Samba is now developed by the Samba Team as an Open Source project similar to the way the Linux kernel is developed\&.
diff -Npur samba-4.20.7/docs/manpages/vfs_recycle.8 samba-4.20.8/docs/manpages/vfs_recycle.8
--- samba-4.20.7/docs/manpages/vfs_recycle.8	2025-01-21 14:46:24.000000000 +0100
+++ samba-4.20.8/docs/manpages/vfs_recycle.8	2025-03-25 15:41:16.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: vfs_recycle
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: System Administration tools
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "VFS_RECYCLE" "8" "01/21/2025" "Samba 4\&.20\&.7" "System Administration tools"
+.TH "VFS_RECYCLE" "8" "03/25/2025" "Samba 4\&.20\&.8" "System Administration tools"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -136,7 +136,7 @@ instead of deleting them:
 .\}
 .SH "VERSION"
 .PP
-This man page is part of version 4\&.20\&.7 of the Samba suite\&.
+This man page is part of version 4\&.20\&.8 of the Samba suite\&.
 .SH "AUTHOR"
 .PP
 The original Samba software and related utilities were created by Andrew Tridgell\&. Samba is now developed by the Samba Team as an Open Source project similar to the way the Linux kernel is developed\&.
diff -Npur samba-4.20.7/docs/manpages/vfs_shadow_copy.8 samba-4.20.8/docs/manpages/vfs_shadow_copy.8
--- samba-4.20.7/docs/manpages/vfs_shadow_copy.8	2025-01-21 14:46:25.000000000 +0100
+++ samba-4.20.8/docs/manpages/vfs_shadow_copy.8	2025-03-25 15:41:17.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: vfs_shadow_copy
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: System Administration tools
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "VFS_SHADOW_COPY" "8" "01/21/2025" "Samba 4\&.20\&.7" "System Administration tools"
+.TH "VFS_SHADOW_COPY" "8" "03/25/2025" "Samba 4\&.20\&.8" "System Administration tools"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -167,7 +167,7 @@ vfs_shadow_copy
 is designed to be an end\-user tool only\&. It does not replace or enhance your backup and archival solutions and should in no way be considered as such\&. Additionally, if you need version control, implement a version control system\&.
 .SH "VERSION"
 .PP
-This man page is part of version 4\&.20\&.7 of the Samba suite\&.
+This man page is part of version 4\&.20\&.8 of the Samba suite\&.
 .SH "AUTHOR"
 .PP
 The original Samba software and related utilities were created by Andrew Tridgell\&. Samba is now developed by the Samba Team as an Open Source project similar to the way the Linux kernel is developed\&.
diff -Npur samba-4.20.7/docs/manpages/vfs_shadow_copy2.8 samba-4.20.8/docs/manpages/vfs_shadow_copy2.8
--- samba-4.20.7/docs/manpages/vfs_shadow_copy2.8	2025-01-21 14:46:25.000000000 +0100
+++ samba-4.20.8/docs/manpages/vfs_shadow_copy2.8	2025-03-25 15:41:17.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: vfs_shadow_copy2
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: System Administration tools
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "VFS_SHADOW_COPY2" "8" "01/21/2025" "Samba 4\&.20\&.7" "System Administration tools"
+.TH "VFS_SHADOW_COPY2" "8" "03/25/2025" "Samba 4\&.20\&.8" "System Administration tools"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -519,7 +519,7 @@ vfs_shadow_copy2
 is designed to be an end\-user tool only\&. It does not replace or enhance your backup and archival solutions and should in no way be considered as such\&. Additionally, if you need version control, implement a version control system\&.
 .SH "VERSION"
 .PP
-This man page is part of version 4\&.20\&.7 of the Samba suite\&.
+This man page is part of version 4\&.20\&.8 of the Samba suite\&.
 .SH "AUTHOR"
 .PP
 The original Samba software and related utilities were created by Andrew Tridgell\&. Samba is now developed by the Samba Team as an Open Source project similar to the way the Linux kernel is developed\&.
diff -Npur samba-4.20.7/docs/manpages/vfs_shell_snap.8 samba-4.20.8/docs/manpages/vfs_shell_snap.8
--- samba-4.20.7/docs/manpages/vfs_shell_snap.8	2025-01-21 14:46:25.000000000 +0100
+++ samba-4.20.8/docs/manpages/vfs_shell_snap.8	2025-03-25 15:41:17.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: vfs_shell_snap
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: System Administration tools
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "VFS_SHELL_SNAP" "8" "01/21/2025" "Samba 4\&.20\&.7" "System Administration tools"
+.TH "VFS_SHELL_SNAP" "8" "03/25/2025" "Samba 4\&.20\&.8" "System Administration tools"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -214,7 +214,7 @@ Samba\*(Aqs FSRVP server must be configu
 .\}
 .SH "VERSION"
 .PP
-This man page is part of version 4\&.20\&.7 of the Samba suite\&.
+This man page is part of version 4\&.20\&.8 of the Samba suite\&.
 .SH "AUTHOR"
 .PP
 The original Samba software and related utilities were created by Andrew Tridgell\&. Samba is now developed by the Samba Team as an Open Source project similar to the way the Linux kernel is developed\&.
diff -Npur samba-4.20.7/docs/manpages/vfs_snapper.8 samba-4.20.8/docs/manpages/vfs_snapper.8
--- samba-4.20.7/docs/manpages/vfs_snapper.8	2025-01-21 14:46:25.000000000 +0100
+++ samba-4.20.8/docs/manpages/vfs_snapper.8	2025-03-25 15:41:17.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: vfs_snapper
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: System Administration tools
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "VFS_SNAPPER" "8" "01/21/2025" "Samba 4\&.20\&.7" "System Administration tools"
+.TH "VFS_SNAPPER" "8" "03/25/2025" "Samba 4\&.20\&.8" "System Administration tools"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -84,7 +84,7 @@ Remote snapshot creation and deletion is
 The DiskShadow\&.exe FSRVP client initially authenticates as the Active Directory computer account\&. This account must therefore be granted the same permissions as the user account issuing the snapshot creation and deletion requests\&.
 .SH "VERSION"
 .PP
-This man page is part of version 4\&.20\&.7 of the Samba suite\&.
+This man page is part of version 4\&.20\&.8 of the Samba suite\&.
 .SH "AUTHOR"
 .PP
 The original Samba software and related utilities were created by Andrew Tridgell\&. Samba is now developed by the Samba Team as an Open Source project similar to the way the Linux kernel is developed\&.
diff -Npur samba-4.20.7/docs/manpages/vfs_streams_depot.8 samba-4.20.8/docs/manpages/vfs_streams_depot.8
--- samba-4.20.7/docs/manpages/vfs_streams_depot.8	2025-01-21 14:46:25.000000000 +0100
+++ samba-4.20.8/docs/manpages/vfs_streams_depot.8	2025-03-25 15:41:17.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: vfs_streams_depot
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: System Administration tools
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "VFS_STREAMS_DEPOT" "8" "01/21/2025" "Samba 4\&.20\&.7" "System Administration tools"
+.TH "VFS_STREAMS_DEPOT" "8" "03/25/2025" "Samba 4\&.20\&.8" "System Administration tools"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
diff -Npur samba-4.20.7/docs/manpages/vfs_streams_xattr.8 samba-4.20.8/docs/manpages/vfs_streams_xattr.8
--- samba-4.20.7/docs/manpages/vfs_streams_xattr.8	2025-01-21 14:46:25.000000000 +0100
+++ samba-4.20.8/docs/manpages/vfs_streams_xattr.8	2025-03-25 15:41:18.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: vfs_streams_xattr
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: System Administration tools
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "VFS_STREAMS_XATTR" "8" "01/21/2025" "Samba 4\&.20\&.7" "System Administration tools"
+.TH "VFS_STREAMS_XATTR" "8" "03/25/2025" "Samba 4\&.20\&.8" "System Administration tools"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
diff -Npur samba-4.20.7/docs/manpages/vfs_syncops.8 samba-4.20.8/docs/manpages/vfs_syncops.8
--- samba-4.20.7/docs/manpages/vfs_syncops.8	2025-01-21 14:46:26.000000000 +0100
+++ samba-4.20.8/docs/manpages/vfs_syncops.8	2025-03-25 15:41:18.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: vfs_syncops
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: System Administration tools
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "VFS_SYNCOPS" "8" "01/21/2025" "Samba 4\&.20\&.7" "System Administration tools"
+.TH "VFS_SYNCOPS" "8" "03/25/2025" "Samba 4\&.20\&.8" "System Administration tools"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -76,7 +76,7 @@ Add syncops functionality for [share]:
 .\}
 .SH "VERSION"
 .PP
-This man page is part of version 4\&.20\&.7 of the Samba suite\&.
+This man page is part of version 4\&.20\&.8 of the Samba suite\&.
 .SH "AUTHOR"
 .PP
 The original Samba software and related utilities were created by Andrew Tridgell\&. Samba is now developed by the Samba Team as an Open Source project similar to the way the Linux kernel is developed\&.
diff -Npur samba-4.20.7/docs/manpages/vfs_time_audit.8 samba-4.20.8/docs/manpages/vfs_time_audit.8
--- samba-4.20.7/docs/manpages/vfs_time_audit.8	2025-01-21 14:46:26.000000000 +0100
+++ samba-4.20.8/docs/manpages/vfs_time_audit.8	2025-03-25 15:41:18.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: vfs_time_audit
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: System Administration tools
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "VFS_TIME_AUDIT" "8" "01/21/2025" "Samba 4\&.20\&.7" "System Administration tools"
+.TH "VFS_TIME_AUDIT" "8" "03/25/2025" "Samba 4\&.20\&.8" "System Administration tools"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -72,7 +72,7 @@ This would log VFS calls that take longe
 .\}
 .SH "VERSION"
 .PP
-This man page is part of version 4\&.20\&.7 of the Samba suite\&.
+This man page is part of version 4\&.20\&.8 of the Samba suite\&.
 .SH "AUTHOR"
 .PP
 The original Samba software and related utilities were created by Andrew Tridgell\&. Samba is now developed by the Samba Team as an Open Source project similar to the way the Linux kernel is developed\&.
diff -Npur samba-4.20.7/docs/manpages/vfs_tsmsm.8 samba-4.20.8/docs/manpages/vfs_tsmsm.8
--- samba-4.20.7/docs/manpages/vfs_tsmsm.8	2025-01-21 14:46:26.000000000 +0100
+++ samba-4.20.8/docs/manpages/vfs_tsmsm.8	2025-03-25 15:41:18.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: vfs_tsmsm
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: System Administration tools
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "VFS_TSMSM" "8" "01/21/2025" "Samba 4\&.20\&.7" "System Administration tools"
+.TH "VFS_TSMSM" "8" "03/25/2025" "Samba 4\&.20\&.8" "System Administration tools"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -83,7 +83,7 @@ A GPFS mount with TSM support can be exp
 .\}
 .SH "VERSION"
 .PP
-This man page is part of version 4\&.20\&.7 of the Samba suite\&.
+This man page is part of version 4\&.20\&.8 of the Samba suite\&.
 .SH "AUTHOR"
 .PP
 The original Samba software and related utilities were created by Andrew Tridgell\&. Samba is now developed by the Samba Team as an Open Source project similar to the way the Linux kernel is developed\&.
diff -Npur samba-4.20.7/docs/manpages/vfs_unityed_media.8 samba-4.20.8/docs/manpages/vfs_unityed_media.8
--- samba-4.20.7/docs/manpages/vfs_unityed_media.8	2025-01-21 14:46:26.000000000 +0100
+++ samba-4.20.8/docs/manpages/vfs_unityed_media.8	2025-03-25 15:41:18.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: vfs_unityed_media
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: System Administration tools
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "VFS_UNITYED_MEDIA" "8" "01/21/2025" "Samba 4\&.20\&.7" "System Administration tools"
+.TH "VFS_UNITYED_MEDIA" "8" "03/25/2025" "Samba 4\&.20\&.8" "System Administration tools"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -111,7 +111,7 @@ Enable unityed_media for Mac and Windows
 .\}
 .SH "VERSION"
 .PP
-This man page is part of version 4\&.20\&.7 of the Samba suite\&.
+This man page is part of version 4\&.20\&.8 of the Samba suite\&.
 .SH "AUTHOR"
 .PP
 The original Samba software and related utilities were created by Andrew Tridgell\&. Samba is now developed by the Samba Team as an Open Source project similar to the way the Linux kernel is developed\&.
diff -Npur samba-4.20.7/docs/manpages/vfs_virusfilter.8 samba-4.20.8/docs/manpages/vfs_virusfilter.8
--- samba-4.20.7/docs/manpages/vfs_virusfilter.8	2025-01-21 14:46:26.000000000 +0100
+++ samba-4.20.8/docs/manpages/vfs_virusfilter.8	2025-03-25 15:41:18.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: vfs_virusfilter
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: System Administration tools
 .\"    Source: Samba 4.8
 .\"  Language: English
 .\"
-.TH "VFS_VIRUSFILTER" "8" "01/21/2025" "Samba 4\&.8" "System Administration tools"
+.TH "VFS_VIRUSFILTER" "8" "03/25/2025" "Samba 4\&.8" "System Administration tools"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
diff -Npur samba-4.20.7/docs/manpages/vfs_widelinks.8 samba-4.20.8/docs/manpages/vfs_widelinks.8
--- samba-4.20.7/docs/manpages/vfs_widelinks.8	2025-01-21 14:46:26.000000000 +0100
+++ samba-4.20.8/docs/manpages/vfs_widelinks.8	2025-03-25 15:41:19.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: vfs_widelinks
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: System Administration tools
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "VFS_WIDELINKS" "8" "01/21/2025" "Samba 4\&.20\&.7" "System Administration tools"
+.TH "VFS_WIDELINKS" "8" "03/25/2025" "Samba 4\&.20\&.8" "System Administration tools"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -53,7 +53,7 @@ This module is stackable\&.
 No examples listed\&. This module is implicitly loaded by smbd as needed\&.
 .SH "VERSION"
 .PP
-This man page is part of version 4\&.20\&.7 of the Samba suite\&.
+This man page is part of version 4\&.20\&.8 of the Samba suite\&.
 .SH "AUTHOR"
 .PP
 The original Samba software and related utilities were created by Andrew Tridgell\&. Samba is now developed by the Samba Team as an Open Source project similar to the way the Linux kernel is developed\&.
diff -Npur samba-4.20.7/docs/manpages/vfs_worm.8 samba-4.20.8/docs/manpages/vfs_worm.8
--- samba-4.20.7/docs/manpages/vfs_worm.8	2025-01-21 14:46:27.000000000 +0100
+++ samba-4.20.8/docs/manpages/vfs_worm.8	2025-03-25 15:41:19.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: vfs_worm
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: System Administration tools
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "VFS_WORM" "8" "01/21/2025" "Samba 4\&.20\&.7" "System Administration tools"
+.TH "VFS_WORM" "8" "03/25/2025" "Samba 4\&.20\&.8" "System Administration tools"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -68,7 +68,7 @@ Deny the write access to files and folde
 .\}
 .SH "VERSION"
 .PP
-This man page is part of version 4\&.20\&.7 of the Samba suite\&.
+This man page is part of version 4\&.20\&.8 of the Samba suite\&.
 .SH "AUTHOR"
 .PP
 The original Samba software and related utilities were created by Andrew Tridgell\&. Samba is now developed by the Samba Team as an Open Source project similar to the way the Linux kernel is developed\&.
diff -Npur samba-4.20.7/docs/manpages/vfs_xattr_tdb.8 samba-4.20.8/docs/manpages/vfs_xattr_tdb.8
--- samba-4.20.7/docs/manpages/vfs_xattr_tdb.8	2025-01-21 14:46:27.000000000 +0100
+++ samba-4.20.8/docs/manpages/vfs_xattr_tdb.8	2025-03-25 15:41:19.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: vfs_xattr_tdb
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: System Administration tools
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "VFS_XATTR_TDB" "8" "01/21/2025" "Samba 4\&.20\&.7" "System Administration tools"
+.TH "VFS_XATTR_TDB" "8" "03/25/2025" "Samba 4\&.20\&.8" "System Administration tools"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
diff -Npur samba-4.20.7/docs/manpages/vfs_zfsacl.8 samba-4.20.8/docs/manpages/vfs_zfsacl.8
--- samba-4.20.7/docs/manpages/vfs_zfsacl.8	2025-01-21 14:46:27.000000000 +0100
+++ samba-4.20.8/docs/manpages/vfs_zfsacl.8	2025-03-25 15:41:19.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: vfs_zfsacl
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: System Administration tools
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "VFS_ZFSACL" "8" "01/21/2025" "Samba 4\&.20\&.7" "System Administration tools"
+.TH "VFS_ZFSACL" "8" "03/25/2025" "Samba 4\&.20\&.8" "System Administration tools"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -310,7 +310,7 @@ A ZFS mount can be exported via Samba as
 .\}
 .SH "VERSION"
 .PP
-This man page is part of version 4\&.20\&.7 of the Samba suite\&.
+This man page is part of version 4\&.20\&.8 of the Samba suite\&.
 .SH "AUTHOR"
 .PP
 The original Samba software and related utilities were created by Andrew Tridgell\&. Samba is now developed by the Samba Team as an Open Source project similar to the way the Linux kernel is developed\&.
diff -Npur samba-4.20.7/docs/manpages/vfstest.1 samba-4.20.8/docs/manpages/vfstest.1
--- samba-4.20.7/docs/manpages/vfstest.1	2025-01-21 14:46:27.000000000 +0100
+++ samba-4.20.8/docs/manpages/vfstest.1	2025-03-25 15:41:19.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: vfstest
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: User Commands
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "VFSTEST" "1" "01/21/2025" "Samba 4\&.20\&.7" "User Commands"
+.TH "VFSTEST" "1" "03/25/2025" "Samba 4\&.20\&.8" "User Commands"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -797,7 +797,7 @@ exit
 .RE
 .SH "VERSION"
 .PP
-This man page is part of version 4\&.20\&.7 of the Samba suite\&.
+This man page is part of version 4\&.20\&.8 of the Samba suite\&.
 .SH "AUTHOR"
 .PP
 The original Samba software and related utilities were created by Andrew Tridgell\&. Samba is now developed by the Samba Team as an Open Source project similar to the way the Linux kernel is developed\&.
diff -Npur samba-4.20.7/docs/manpages/wbinfo.1 samba-4.20.8/docs/manpages/wbinfo.1
--- samba-4.20.7/docs/manpages/wbinfo.1	2025-01-21 14:46:27.000000000 +0100
+++ samba-4.20.8/docs/manpages/wbinfo.1	2025-03-25 15:41:19.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: wbinfo
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: User Commands
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "WBINFO" "1" "01/21/2025" "Samba 4\&.20\&.7" "User Commands"
+.TH "WBINFO" "1" "03/25/2025" "Samba 4\&.20\&.8" "User Commands"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -477,7 +477,7 @@ wbinfo
 will always return failure\&.
 .SH "VERSION"
 .PP
-This man page is part of version 4\&.20\&.7 of the Samba suite\&.
+This man page is part of version 4\&.20\&.8 of the Samba suite\&.
 .SH "SEE ALSO"
 .PP
 \fBwinbindd\fR(8)
diff -Npur samba-4.20.7/docs/manpages/winbind_krb5_localauth.8 samba-4.20.8/docs/manpages/winbind_krb5_localauth.8
--- samba-4.20.7/docs/manpages/winbind_krb5_localauth.8	2025-01-21 14:46:27.000000000 +0100
+++ samba-4.20.8/docs/manpages/winbind_krb5_localauth.8	2025-03-25 15:41:20.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: winbind_krb5_localauth
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: 8
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "WINBIND_KRB5_LOCALAU" "8" "01/21/2025" "Samba 4\&.20\&.7" "8"
+.TH "WINBIND_KRB5_LOCALAU" "8" "03/25/2025" "Samba 4\&.20\&.8" "8"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -66,7 +66,7 @@ file\&.
 .sp
 .SH "VERSION"
 .PP
-This man page is part of version 4\&.20\&.7 of the Samba suite\&.
+This man page is part of version 4\&.20\&.8 of the Samba suite\&.
 .SH "AUTHOR"
 .PP
 The original Samba software and related utilities were created by Andrew Tridgell\&. Samba is now developed by the Samba Team as an Open Source project similar to the way the Linux kernel is developed\&.
diff -Npur samba-4.20.7/docs/manpages/winbind_krb5_locator.8 samba-4.20.8/docs/manpages/winbind_krb5_locator.8
--- samba-4.20.7/docs/manpages/winbind_krb5_locator.8	2025-01-21 14:46:28.000000000 +0100
+++ samba-4.20.8/docs/manpages/winbind_krb5_locator.8	2025-03-25 15:41:20.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: winbind_krb5_locator
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: 8
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "WINBIND_KRB5_LOCATOR" "8" "01/21/2025" "Samba 4\&.20\&.7" "8"
+.TH "WINBIND_KRB5_LOCATOR" "8" "03/25/2025" "Samba 4\&.20\&.8" "8"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -57,7 +57,7 @@ After copying the locator plugin to the
 /etc/krb5\&.conf\&.
 .SH "VERSION"
 .PP
-This man page is part of version 4\&.20\&.7 of the Samba suite\&.
+This man page is part of version 4\&.20\&.8 of the Samba suite\&.
 .SH "AUTHOR"
 .PP
 The original Samba software and related utilities were created by Andrew Tridgell\&. Samba is now developed by the Samba Team as an Open Source project similar to the way the Linux kernel is developed\&.
diff -Npur samba-4.20.7/docs/manpages/winbindd.8 samba-4.20.8/docs/manpages/winbindd.8
--- samba-4.20.7/docs/manpages/winbindd.8	2025-01-21 14:46:28.000000000 +0100
+++ samba-4.20.8/docs/manpages/winbindd.8	2025-03-25 15:41:20.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: winbindd
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: System Administration tools
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "WINBINDD" "8" "01/21/2025" "Samba 4\&.20\&.7" "System Administration tools"
+.TH "WINBINDD" "8" "03/25/2025" "Samba 4\&.20\&.8" "System Administration tools"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -587,7 +587,7 @@ Storage for cached user and group inform
 .RE
 .SH "VERSION"
 .PP
-This man page is part of version 4\&.20\&.7 of the Samba suite\&.
+This man page is part of version 4\&.20\&.8 of the Samba suite\&.
 .SH "SEE ALSO"
 .PP
 nsswitch\&.conf(5),
diff -Npur samba-4.20.7/docs/manpages/winexe.1 samba-4.20.8/docs/manpages/winexe.1
--- samba-4.20.7/docs/manpages/winexe.1	2025-01-21 14:46:28.000000000 +0100
+++ samba-4.20.8/docs/manpages/winexe.1	2025-03-25 15:41:20.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: winexe
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: User Commands
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "WINEXE" "1" "01/21/2025" "Samba 4\&.20\&.7" "User Commands"
+.TH "WINEXE" "1" "03/25/2025" "Samba 4\&.20\&.8" "User Commands"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -464,7 +464,7 @@ Display brief usage message\&.
 The winexe program returns 0 if the operation succeeded, or 1 if the operation failed\&.
 .SH "VERSION"
 .PP
-This man page is part of version 4\&.20\&.7 of the Samba suite\&.
+This man page is part of version 4\&.20\&.8 of the Samba suite\&.
 .SH "AUTHOR"
 .PP
 The original Samba software and related utilities were created by Andrew Tridgell\&. Samba is now developed by the Samba Team as an Open Source project similar to the way the Linux kernel is developed\&.
diff -Npur samba-4.20.7/docs/manpages/wspsearch.1 samba-4.20.8/docs/manpages/wspsearch.1
--- samba-4.20.7/docs/manpages/wspsearch.1	2025-01-21 14:46:28.000000000 +0100
+++ samba-4.20.8/docs/manpages/wspsearch.1	2025-03-25 15:41:20.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: wspsearch
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 01/21/2025
+.\"      Date: 03/25/2025
 .\"    Manual: User Commands
-.\"    Source: Samba 4.20.7
+.\"    Source: Samba 4.20.8
 .\"  Language: English
 .\"
-.TH "WSPSEARCH" "1" "01/21/2025" "Samba 4\&.20\&.7" "User Commands"
+.TH "WSPSEARCH" "1" "03/25/2025" "Samba 4\&.20\&.8" "User Commands"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -532,7 +532,7 @@ Adanced Query Syntax
 https://learn\&.microsoft\&.com/en\-gb/windows/win32/search/\-search\-3x\-advancedquerysyntax
 .SH "VERSION"
 .PP
-This man page is part of version 4\&.20\&.7 of the Samba suite\&.
+This man page is part of version 4\&.20\&.8 of the Samba suite\&.
 .SH "AUTHOR"
 .PP
 The original Samba software and related utilities were created by Andrew Tridgell\&. Samba is now developed by the Samba Team as an Open Source project similar to the way the Linux kernel is developed\&.
diff -Npur samba-4.20.7/docs-xml/manpages/vfs_ceph_new.8.xml samba-4.20.8/docs-xml/manpages/vfs_ceph_new.8.xml
--- samba-4.20.7/docs-xml/manpages/vfs_ceph_new.8.xml	2024-09-17 13:37:11.000000000 +0200
+++ samba-4.20.8/docs-xml/manpages/vfs_ceph_new.8.xml	2025-03-25 15:40:17.000000000 +0100
@@ -152,6 +152,35 @@
 		</listitem>
 		</varlistentry>
 
+		<varlistentry>
+		<term>ceph_new:proxy = [ yes | no | auto ]</term>
+		<listitem>
+		<para>
+			Allows one to indicate use of the libcephfs proxy library
+			for optimized resource utilization, allowing more simultaneous
+			client connections. Prerequisites include the presence of
+			<emphasis>libcephfs_proxy.so.X</emphasis> shared library file
+			under loadable locations for dynamic linker and an active(running)
+			<emphasis>libcephfsd</emphasis> daemon.
+		</para>
+
+		<itemizedlist>
+			<listitem><para><constant>no</constant> (default) - Do
+			not use the proxy library but regular connection through
+			<emphasis>libcephfs.so.X</emphasis>.</para></listitem>
+
+			<listitem><para><constant>yes</constant> - Always use
+			the proxy library and fail the client connection request
+			if prerequisites are unmet.</para></listitem>
+
+			<listitem><para><constant>auto</constant> - Attempt to
+			use the proxy library but fall back to the regular cephfs
+			connection if prerequisites are unmet.</para></listitem>
+
+		</itemizedlist>
+
+		</listitem>
+		</varlistentry>
 	</variablelist>
 
 </refsect1>
diff -Npur samba-4.20.7/docs-xml/manpages/vfs_gpfs.8.xml samba-4.20.8/docs-xml/manpages/vfs_gpfs.8.xml
--- samba-4.20.7/docs-xml/manpages/vfs_gpfs.8.xml	2024-01-29 15:41:25.000000000 +0100
+++ samba-4.20.8/docs-xml/manpages/vfs_gpfs.8.xml	2025-03-25 15:40:17.000000000 +0100
@@ -317,6 +317,35 @@
 		</varlistentry>
 
 		<varlistentry>
+		<term>gpfs:clamp_invalid_times = [ yes | no ]</term>
+		<listitem>
+		<para>
+		GPFS stores timestamps using 32-bit unsigned integers for the
+		seconds component. When using gpfs:settimes = yes, this module
+		validates times that clients attempt to set are within the
+		supported GPFS range between 0 and UINT32_MAX. If a timestamp is
+		outside of this range, the client request is rejected. To cope
+		with clients setting eg temporary timestamps outside the valid
+		range, this parameter can be used to clamp the client timestamp
+		to the allowed range. Times before Thu Jan 1 12:00:00 AM UTC
+		1970 (the UNIX epock) are then set to Thu Jan 1 12:00:00 AM UTC
+		1970, times after Sun Feb 7 06:28:15 AM UTC 2106 will be set to
+		Sun Feb 7 06:28:15 AM UTC 2106.
+		</para>
+
+		<itemizedlist>
+		<listitem><para>
+		<command>no(default)</command> - Fail request with invalid time.
+		</para></listitem>
+		<listitem><para>
+		<command>yes</command> - clamp invalid times to 0 or UINT32_MAX.
+		</para></listitem>
+		</itemizedlist>
+		</listitem>
+		</varlistentry>
+
+
+		<varlistentry>
 		<term>gpfs:syncio = [yes|no]</term>
 		<listitem>
 		<para>This parameter makes Samba open all files with O_SYNC.
diff -Npur samba-4.20.7/libcli/security/util_sid.c samba-4.20.8/libcli/security/util_sid.c
--- samba-4.20.7/libcli/security/util_sid.c	2024-01-29 15:41:25.000000000 +0100
+++ samba-4.20.8/libcli/security/util_sid.c	2025-03-25 15:40:17.000000000 +0100
@@ -1068,7 +1068,6 @@ NTSTATUS dom_sid_lookup_predefined_sid(c
 				       const char **authority_name)
 {
 	size_t di;
-	bool match_domain = false;
 
 	*name = NULL;
 	*type = SID_NAME_UNKNOWN;
@@ -1090,8 +1089,6 @@ NTSTATUS dom_sid_lookup_predefined_sid(c
 			continue;
 		}
 
-		match_domain = true;
-
 		for (ni = 0; ni < d->num_names; ni++) {
 			const struct predefined_name_mapping *n =
 				&d->names[ni];
@@ -1109,7 +1106,7 @@ NTSTATUS dom_sid_lookup_predefined_sid(c
 		}
 	}
 
-	if (!match_domain) {
+	if (sid->num_auths == 0) {
 		return NT_STATUS_INVALID_SID;
 	}
 
diff -Npur samba-4.20.7/librpc/ndr/ndr_sec_helper.c samba-4.20.8/librpc/ndr/ndr_sec_helper.c
--- samba-4.20.7/librpc/ndr/ndr_sec_helper.c	2024-03-27 18:08:44.000000000 +0100
+++ samba-4.20.8/librpc/ndr/ndr_sec_helper.c	2025-03-25 15:40:17.000000000 +0100
@@ -104,6 +104,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_secu
 {
 	NDR_PULL_CHECK_FLAGS(ndr, ndr_flags);
 	if (ndr_flags & NDR_SCALARS) {
+		ssize_t sub_size;
 		NDR_CHECK(ndr_pull_align(ndr, 5));
 		NDR_CHECK(ndr_pull_security_ace_type(ndr, NDR_SCALARS, &r->type));
 		NDR_CHECK(ndr_pull_security_ace_flags(ndr, NDR_SCALARS, &r->flags));
@@ -111,12 +112,12 @@ _PUBLIC_ enum ndr_err_code ndr_pull_secu
 		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->access_mask));
 		NDR_CHECK(ndr_maybe_pull_security_ace_object_ctr(ndr, NDR_SCALARS, r));
 		NDR_CHECK(ndr_pull_dom_sid(ndr, NDR_SCALARS, &r->trustee));
-		if (!sec_ace_has_extra_blob(r->type)) {
+		sub_size = ndr_subcontext_size_of_ace_coda(r, r->size, ndr->flags);
+		if (sub_size == 0 && !sec_ace_has_extra_blob(r->type)) {
 			r->coda.ignored.data = NULL;
 			r->coda.ignored.length = 0;
 		} else {
 			struct ndr_pull *_ndr_coda;
-			ssize_t sub_size = ndr_subcontext_size_of_ace_coda(r, r->size, ndr->flags);
 			NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_coda, 0, sub_size));
 			NDR_CHECK(ndr_pull_set_switch_value(_ndr_coda, &r->coda, r->type));
 			NDR_CHECK(ndr_pull_security_ace_coda(_ndr_coda, NDR_SCALARS|NDR_BUFFERS, &r->coda));
diff -Npur samba-4.20.7/pidl/lib/Parse/Pidl/Samba4/Python.pm samba-4.20.8/pidl/lib/Parse/Pidl/Samba4/Python.pm
--- samba-4.20.7/pidl/lib/Parse/Pidl/Samba4/Python.pm	2024-01-29 15:41:26.000000000 +0100
+++ samba-4.20.8/pidl/lib/Parse/Pidl/Samba4/Python.pm	2025-03-25 15:40:17.000000000 +0100
@@ -967,61 +967,146 @@ sub PythonFunctionUnpackOut($$$)
 	my $env = GenerateFunctionOutEnv($fn, "r->");
 	my $result_size = 0;
 
-	$self->pidl("static PyObject *$outfnname(struct $fn->{NAME} *r)");
+	$self->pidl("static PyObject *$outfnname(struct $fn->{NAME} *r, bool raise_result_exception)");
 	$self->pidl("{");
 	$self->indent;
-	$self->pidl("PyObject *result;");
 	foreach my $e (@{$fn->{ELEMENTS}}) {
 		next unless (grep(/out/,@{$e->{DIRECTION}}));
 		next if (($metadata_args->{in}->{$e->{NAME}} and grep(/in/, @{$e->{DIRECTION}})) or
 		         ($metadata_args->{out}->{$e->{NAME}}) and grep(/out/, @{$e->{DIRECTION}}));
-		$self->pidl("PyObject *py_$e->{NAME};");
+		$self->pidl("PyObject *py_$e->{NAME} = NULL;");
 		$result_size++;
 	}
 
-	if ($fn->{RETURN_TYPE}) {
-		$result_size++ unless ($fn->{RETURN_TYPE} eq "WERROR" or $fn->{RETURN_TYPE} eq "NTSTATUS");
+	my $is_raisable_return = 0;
+	if ($fn->{RETURN_TYPE} and ($fn->{RETURN_TYPE} eq "WERROR" or $fn->{RETURN_TYPE} eq "NTSTATUS")) {
+		$is_raisable_return = 1;
 	}
 
-	my $i = 0;
+	if ($fn->{RETURN_TYPE} and not $is_raisable_return) {
+		$result_size++;
+	}
+
+	my $max_result_size = $result_size;
+	my $alloc_size = "$result_size";
+	if ($fn->{RETURN_TYPE} and $is_raisable_return) {
+		$max_result_size++;
+	}
+	$self->pidl("PyObject *result = NULL;");
+	if ($max_result_size != $result_size) {
+		$self->pidl("size_t result_size = $result_size;");
+		$alloc_size = "result_size";
+	}
+	$self->pidl("");
 
 	if ($result_size > 1) {
-		$self->pidl("result = PyTuple_New($result_size);");
 		$signature .= "(";
 	} elsif ($result_size == 0) {
-		$self->pidl("result = Py_None;");
-		$self->pidl("Py_INCREF(result);");
 		$signature .= "None";
 	}
 
+	if ($fn->{RETURN_TYPE} and $is_raisable_return) {
+		$self->pidl("if (raise_result_exception) {");
+		$self->indent;
+		if (defined($fn->{RETURN_TYPE}) and $fn->{RETURN_TYPE} eq "NTSTATUS") {
+			$self->handle_ntstatus("r->out.result", "NULL", undef);
+		} elsif (defined($fn->{RETURN_TYPE}) and $fn->{RETURN_TYPE} eq "WERROR") {
+			$self->handle_werror("r->out.result", "NULL", undef);
+		}
+		$self->deindent;
+		$self->pidl("} else {");
+		$self->indent;
+		$self->pidl("/* $fn->{RETURN_TYPE} will be part of the results */");
+		$self->pidl("result_size += 1;");
+		$self->deindent;
+		$self->pidl("}");
+		$self->pidl("");
+	}
+
+	if ($max_result_size > 1) {
+		if ($max_result_size != $result_size) {
+			$self->pidl("if (result_size > 1) {");
+			$self->indent;
+		}
+		$self->pidl("result = PyTuple_New($alloc_size);");
+		$self->pidl("if (result == NULL) {");
+		$self->indent;
+		$self->pidl("return NULL;");
+		$self->deindent;
+		$self->pidl("}");
+		if ($max_result_size != $result_size) {
+			$self->deindent;
+			$self->pidl("}");
+		}
+		$self->pidl("");
+	}
+
+	my $i = 0;
+
 	foreach my $e (@{$fn->{ELEMENTS}}) {
 		next if ($metadata_args->{out}->{$e->{NAME}});
 		my $py_name = "py_$e->{NAME}";
 		if (grep(/out/,@{$e->{DIRECTION}})) {
 			$self->ConvertObjectToPython("r", $env, $e, "r->out.$e->{NAME}", $py_name, "return NULL;");
 			if ($result_size > 1) {
-				$self->pidl("PyTuple_SetItem(result, $i, $py_name);");
-				$i++;
 				$signature .= "$e->{NAME}, ";
 			} else {
-				$self->pidl("result = $py_name;");
 				$signature .= $e->{NAME};
 			}
+
+			if ($max_result_size > 1) {
+				if ($max_result_size != $result_size and $result_size == 1) {
+					$self->pidl("if (result_size > 1) {");
+					$self->indent;
+				}
+				$self->pidl("PyTuple_SetItem(result, $i, $py_name);");
+				if ($max_result_size != $result_size and $result_size == 1) {
+					$self->deindent;
+					$self->pidl("}");
+				}
+			}
+			if ($result_size == 1) {
+				if ($max_result_size != $result_size) {
+					$self->pidl("if (result_size == 1) {");
+					$self->indent;
+				}
+				$self->pidl("result = $py_name;");
+				if ($max_result_size != $result_size) {
+					$self->deindent;
+					$self->pidl("}");
+				}
+			}
+			$self->pidl("");
+			$i++;
 		}
 	}
 
-	if (defined($fn->{RETURN_TYPE}) and $fn->{RETURN_TYPE} eq "NTSTATUS") {
-		$self->handle_ntstatus("r->out.result", "NULL", undef);
-	} elsif (defined($fn->{RETURN_TYPE}) and $fn->{RETURN_TYPE} eq "WERROR") {
-		$self->handle_werror("r->out.result", "NULL", undef);
-	} elsif (defined($fn->{RETURN_TYPE})) {
+	if ($fn->{RETURN_TYPE} and $is_raisable_return) {
+		$self->pidl("if (!raise_result_exception) {");
+		$self->indent;
+	}
+
+	if ($fn->{RETURN_TYPE}) {
 		my $conv = $self->ConvertObjectToPythonData("r", $fn->{RETURN_TYPE}, "r->out.result", $fn);
-		if ($result_size > 1) {
+		if ($max_result_size > 1) {
 			$self->pidl("PyTuple_SetItem(result, $i, $conv);");
-		} else {
+		} elsif ($max_result_size == 1) {
 			$self->pidl("result = $conv;");
+		} else {
+			fatal($fn->{ORIGINAL}, "Internal error max_result_size=$max_result_size");
+		}
+
+		if (not $is_raisable_return) {
+			$signature .= "result";
 		}
-		$signature .= "result";
+	}
+
+	if ($fn->{RETURN_TYPE} and $is_raisable_return) {
+		$self->deindent;
+		$self->pidl("}");
+		$self->pidl("");
+	} elsif ($fn->{RETURN_TYPE}) {
+		$self->pidl("");
 	}
 
 	if (substr($signature, -2) eq ", ") {
@@ -1031,6 +1116,20 @@ sub PythonFunctionUnpackOut($$$)
 		$signature .= ")";
 	}
 
+	if ($result_size == 0) {
+		if ($max_result_size != $result_size) {
+			$self->pidl("if (result_size == 0) {");
+			$self->indent;
+		}
+		$self->pidl("result = Py_None;");
+		$self->pidl("Py_INCREF(result);");
+		if ($max_result_size != $result_size) {
+			$self->deindent;
+			$self->pidl("}");
+		}
+		$self->pidl("");
+	}
+
 	$self->pidl("return result;");
 	$self->deindent;
 	$self->pidl("}");
@@ -1417,9 +1516,23 @@ sub Interface($$$)
 		$self->indent;
 		foreach my $d (@fns) {
 			my ($infn, $outfn, $callfn, $prettyname, $docstring, $opnum) = @$d;
-			$self->pidl("{ \"$prettyname\", $docstring, (py_dcerpc_call_fn)$callfn, (py_data_pack_fn)$infn, (py_data_unpack_fn)$outfn, $opnum, &ndr_table_$interface->{NAME} },");
+			$self->pidl("{");
+			$self->indent;
+			$self->pidl(".name = \"$prettyname\",");
+			$self->pidl(".doc = $docstring,");
+			$self->pidl(".call = (py_dcerpc_call_fn)$callfn,");
+			$self->pidl(".pack_in_data = (py_data_pack_fn)$infn,");
+			$self->pidl(".unpack_out_data = (py_data_unpack_fn)$outfn,");
+			$self->pidl(".opnum = $opnum,");
+			$self->pidl(".table = &ndr_table_$interface->{NAME},");
+			$self->deindent;
+			$self->pidl("},");
 		}
-		$self->pidl("{0}");
+		$self->pidl("{");
+		$self->indent;
+		$self->pidl(".name = NULL,");
+		$self->deindent;
+		$self->pidl("},");
 		$self->deindent;
 		$self->pidl("};");
 		$self->pidl("");
diff -Npur samba-4.20.7/python/samba/netcmd/domain/schemaupgrade.py samba-4.20.8/python/samba/netcmd/domain/schemaupgrade.py
--- samba-4.20.7/python/samba/netcmd/domain/schemaupgrade.py	2024-01-29 15:41:26.000000000 +0100
+++ samba-4.20.8/python/samba/netcmd/domain/schemaupgrade.py	2025-03-25 15:40:17.000000000 +0100
@@ -244,7 +244,11 @@ class cmd_domain_schema_upgrade(Command)
 
         temp_folder = None
 
-        samdb = SamDB(url=H, session_info=system_session(), credentials=creds, lp=lp)
+        # we set the transaction_index_cache_size to 200,000 to ensure it is
+        # not too small, if it's too small the performance of the upgrade will
+        # be negatively impacted. (similarly to the join operation)
+        samdb = SamDB(url=H, session_info=system_session(), credentials=creds, lp=lp,
+                      options=['transaction_index_cache_size:200000'])
 
         # we're not going to get far if the config doesn't allow schema updates
         if lp.get("dsdb:schema update allowed") is None:
diff -Npur samba-4.20.7/python/samba/provision/__init__.py samba-4.20.8/python/samba/provision/__init__.py
--- samba-4.20.7/python/samba/provision/__init__.py	2024-01-29 15:41:26.000000000 +0100
+++ samba-4.20.8/python/samba/provision/__init__.py	2025-03-25 15:40:17.000000000 +0100
@@ -1294,12 +1294,9 @@ def setup_samdb(path, session_info, prov
         options.append("lmdb_env_size:" + str(store_size))
     if batch_mode:
         options.append("batch_mode:1")
-    if batch_mode:
-        # Estimate the number of index records in the transaction_index_cache
-        # Numbers chosen give the prime 202481 for the default backend size,
-        # which works well for a 100,000 user database
-        cache_size = int(store_size / 42423) + 1
-        options.append("transaction_index_cache_size:" + str(cache_size))
+
+    # For bulk operations like this we use a large transaction index cache.
+    options.append("transaction_index_cache_size:200000")
 
     # Load the database, but don's load the global schema and don't connect
     # quite yet
diff -Npur samba-4.20.7/python/samba/tdb_util.py samba-4.20.8/python/samba/tdb_util.py
--- samba-4.20.7/python/samba/tdb_util.py	2024-01-29 15:41:26.000000000 +0100
+++ samba-4.20.8/python/samba/tdb_util.py	2025-03-25 15:40:17.000000000 +0100
@@ -37,9 +37,10 @@ def tdb_copy(file1, file2, readonly=Fals
         raise FileNotFoundError(2, "could not find tdbbackup tool: "
                                 "is tdb-tools installed?")
 
-    tdbbackup_cmd = [toolpath, "-s", ".copy.tdb", file1]
     if readonly:
-        tdbbackup_cmd.append("-r")
+        tdbbackup_cmd = [toolpath, "-r", "-s", ".copy.tdb", file1]
+    else:
+        tdbbackup_cmd = [toolpath, "-s", ".copy.tdb", file1]
 
     status = subprocess.check_call(tdbbackup_cmd, close_fds=True, shell=False)
 
diff -Npur samba-4.20.7/python/samba/tests/dcerpc/lsa.py samba-4.20.8/python/samba/tests/dcerpc/lsa.py
--- samba-4.20.7/python/samba/tests/dcerpc/lsa.py	2024-01-29 15:41:26.000000000 +0100
+++ samba-4.20.8/python/samba/tests/dcerpc/lsa.py	2025-03-25 15:40:17.000000000 +0100
@@ -20,12 +20,18 @@
 
 """Tests for samba.dcerpc.lsa."""
 
-from samba.dcerpc import lsa
+from samba.dcerpc import lsa, security
 from samba.credentials import Credentials
 from samba.tests import TestCase
 from samba.dcerpc.security import dom_sid
 from samba import NTSTATUSError
-from samba.ntstatus import NT_STATUS_ACCESS_DENIED
+from samba.ntstatus import (
+    NT_STATUS_OK,
+    NT_STATUS_ACCESS_DENIED,
+    NT_STATUS_NONE_MAPPED,
+    NT_STATUS_SOME_NOT_MAPPED,
+    NT_STATUS_INVALID_SID,
+)
 import samba.tests
 
 class LsaTests(TestCase):
@@ -331,3 +337,219 @@ class LsaTests(TestCase):
                           client_revision)
         if (e.exception.args[0] != NT_STATUS_ACCESS_DENIED):
             raise AssertionError("LookupSids3 without schannel must fail with ACCESS_DENIED")
+
+    def test_lsa_LookupSids2_none_mapped(self):
+        machine_creds = Credentials()
+        machine_creds.guess(self.lp)
+        machine_creds.set_machine_account()
+
+        c = lsa.lsarpc(
+            "ncacn_np:%s[print]" % self.server,
+            self.lp,
+            machine_creds,
+            raise_result_exceptions=False)
+
+        objectAttr = lsa.ObjectAttribute()
+        objectAttr.sec_qos = lsa.QosInfo()
+
+        (pol_handle, status) = c.OpenPolicy2('',
+                                             objectAttr,
+                                             security.SEC_FLAG_MAXIMUM_ALLOWED)
+        self.assertEqual(status[0], NT_STATUS_OK)
+        self.assertIsNotNone(pol_handle)
+
+        x0 = dom_sid("S-1-3-66")
+        sid0 = lsa.SidPtr()
+        sid0.sid = x0
+        x1 = dom_sid("S-1-3-77")
+        sid1 = lsa.SidPtr()
+        sid1.sid = x1
+        x2 = dom_sid("S-1-3-88")
+        sid2 = lsa.SidPtr()
+        sid2.sid = x2
+        x3 = dom_sid("S-1-3-99")
+        sid3 = lsa.SidPtr()
+        sid3.sid = x3
+        sids = lsa.SidArray()
+        sids.sids = [sid0,sid1,sid2,sid3]
+        sids.num_sids = 4
+
+        names = lsa.TransNameArray2()
+        level = lsa.LSA_LOOKUP_NAMES_ALL
+        count = 0
+        lookup_options = lsa.LSA_LOOKUP_OPTION_SEARCH_ISOLATED_NAMES
+        client_revision = lsa.LSA_CLIENT_REVISION_2
+
+        (domains, names, count, status) = c.LookupSids2(pol_handle,
+                                                        sids,
+                                                        names,
+                                                        level,
+                                                        count,
+                                                        lookup_options,
+                                                        client_revision)
+        self.assertEqual(status[0], NT_STATUS_NONE_MAPPED)
+        self.assertEqual(count, 0)
+        self.assertIsNotNone(domains)
+        self.assertEqual(domains.count, 0)
+        self.assertIsNotNone(names)
+        self.assertEqual(names.count, 4)
+        self.assertEqual(names.names[0].sid_type, lsa.SID_NAME_UNKNOWN)
+        self.assertEqual(names.names[0].name.string, str(x0))
+        self.assertEqual(names.names[0].sid_index, 0xffffffff)
+        self.assertEqual(names.names[1].sid_type, lsa.SID_NAME_UNKNOWN)
+        self.assertEqual(names.names[1].name.string, str(x1))
+        self.assertEqual(names.names[1].sid_index, 0xffffffff)
+        self.assertEqual(names.names[2].sid_type, lsa.SID_NAME_UNKNOWN)
+        self.assertEqual(names.names[2].name.string, str(x2))
+        self.assertEqual(names.names[2].sid_index, 0xffffffff)
+        self.assertEqual(names.names[3].sid_type, lsa.SID_NAME_UNKNOWN)
+        self.assertEqual(names.names[3].name.string, str(x3))
+        self.assertEqual(names.names[3].sid_index, 0xffffffff)
+
+        return
+
+    def test_lsa_LookupSids2_some_not_mapped(self):
+        machine_creds = Credentials()
+        machine_creds.guess(self.lp)
+        machine_creds.set_machine_account()
+
+        c = lsa.lsarpc(
+            "ncacn_np:%s[print]" % self.server,
+            self.lp,
+            machine_creds,
+            raise_result_exceptions=False)
+
+        objectAttr = lsa.ObjectAttribute()
+        objectAttr.sec_qos = lsa.QosInfo()
+
+        (pol_handle, status) = c.OpenPolicy2('',
+                                             objectAttr,
+                                             security.SEC_FLAG_MAXIMUM_ALLOWED)
+        self.assertEqual(status[0], NT_STATUS_OK)
+        self.assertIsNotNone(pol_handle)
+
+        dx0 = dom_sid("S-1-3")
+
+        x0 = dom_sid("S-1-3-66")
+        sid0 = lsa.SidPtr()
+        sid0.sid = x0
+        x1 = dom_sid("S-1-3-0")
+        sid1 = lsa.SidPtr()
+        sid1.sid = x1
+        x2 = dom_sid("S-1-3")
+        sid2 = lsa.SidPtr()
+        sid2.sid = x2
+        x3 = dom_sid("S-1-3-99")
+        sid3 = lsa.SidPtr()
+        sid3.sid = x3
+        sids = lsa.SidArray()
+        sids.sids = [sid0,sid1,sid2,sid3]
+        sids.num_sids = 4
+
+        names = lsa.TransNameArray2()
+        level = lsa.LSA_LOOKUP_NAMES_ALL
+        count = 0
+        lookup_options = lsa.LSA_LOOKUP_OPTION_SEARCH_ISOLATED_NAMES
+        client_revision = lsa.LSA_CLIENT_REVISION_2
+
+        (domains, names, count, status) = c.LookupSids2(pol_handle,
+                                                        sids,
+                                                        names,
+                                                        level,
+                                                        count,
+                                                        lookup_options,
+                                                        client_revision)
+        self.assertEqual(status[0], NT_STATUS_SOME_NOT_MAPPED)
+        self.assertEqual(count, 1)
+        self.assertIsNotNone(domains)
+        self.assertEqual(domains.count, 1)
+        self.assertEqual(domains.domains[0].name.string, "")
+        self.assertEqual(domains.domains[0].sid, dx0)
+        self.assertIsNotNone(names)
+        self.assertEqual(names.count, 4)
+        self.assertEqual(names.names[0].sid_type, lsa.SID_NAME_UNKNOWN)
+        self.assertEqual(names.names[0].name.string, str(x0))
+        self.assertEqual(names.names[0].sid_index, 0xffffffff)
+        self.assertEqual(names.names[1].sid_type, lsa.SID_NAME_WKN_GRP)
+        self.assertEqual(names.names[1].name.string, "CREATOR OWNER")
+        self.assertEqual(names.names[1].sid_index, 0)
+        self.assertEqual(names.names[2].sid_type, lsa.SID_NAME_UNKNOWN)
+        self.assertEqual(names.names[2].name.string, str(x2))
+        self.assertEqual(names.names[2].sid_index, 0xffffffff)
+        self.assertEqual(names.names[3].sid_type, lsa.SID_NAME_UNKNOWN)
+        self.assertEqual(names.names[3].name.string, str(x3))
+        self.assertEqual(names.names[3].sid_index, 0xffffffff)
+
+        return
+
+    def test_lsa_LookupSids2_invalid_sid(self):
+        machine_creds = Credentials()
+        machine_creds.guess(self.lp)
+        machine_creds.set_machine_account()
+
+        c = lsa.lsarpc(
+            "ncacn_np:%s[print]" % self.server,
+            self.lp,
+            machine_creds,
+            raise_result_exceptions=False)
+
+        objectAttr = lsa.ObjectAttribute()
+        objectAttr.sec_qos = lsa.QosInfo()
+
+        (pol_handle, status) = c.OpenPolicy2('',
+                                             objectAttr,
+                                             security.SEC_FLAG_MAXIMUM_ALLOWED)
+        self.assertEqual(status[0], NT_STATUS_OK)
+        self.assertIsNotNone(pol_handle)
+
+        dx0 = dom_sid("S-1-3")
+
+        x0 = dom_sid("S-1-3-66")
+        sid0 = lsa.SidPtr()
+        sid0.sid = x0
+        x1 = dom_sid("S-1-3-77")
+        sid1 = lsa.SidPtr()
+        sid1.sid = x1
+        x2 = dom_sid("S-1-3")
+        sid2 = lsa.SidPtr()
+        sid2.sid = x2
+        x3 = dom_sid("S-1-3-99")
+        sid3 = lsa.SidPtr()
+        sid3.sid = x3
+        sids = lsa.SidArray()
+        sids.sids = [sid0,sid1,sid2,sid3]
+        sids.num_sids = 4
+
+        names = lsa.TransNameArray2()
+        level = lsa.LSA_LOOKUP_NAMES_ALL
+        count = 0
+        lookup_options = lsa.LSA_LOOKUP_OPTION_SEARCH_ISOLATED_NAMES
+        client_revision = lsa.LSA_CLIENT_REVISION_2
+
+        (domains, names, count, status) = c.LookupSids2(pol_handle,
+                                                        sids,
+                                                        names,
+                                                        level,
+                                                        count,
+                                                        lookup_options,
+                                                        client_revision)
+        self.assertEqual(status[0], NT_STATUS_INVALID_SID)
+        self.assertEqual(count, 0)
+        self.assertIsNotNone(domains)
+        self.assertEqual(domains.count, 0)
+        self.assertIsNotNone(names)
+        self.assertEqual(names.count, 4)
+        self.assertEqual(names.names[0].sid_type, lsa.SID_NAME_UNKNOWN)
+        self.assertIsNone(names.names[0].name.string)
+        self.assertEqual(names.names[0].sid_index, 0xffffffff)
+        self.assertEqual(names.names[1].sid_type, lsa.SID_NAME_UNKNOWN)
+        self.assertIsNone(names.names[1].name.string)
+        self.assertEqual(names.names[1].sid_index, 0xffffffff)
+        self.assertEqual(names.names[2].sid_type, lsa.SID_NAME_UNKNOWN)
+        self.assertIsNone(names.names[2].name.string)
+        self.assertEqual(names.names[2].sid_index, 0xffffffff)
+        self.assertEqual(names.names[3].sid_type, lsa.SID_NAME_UNKNOWN)
+        self.assertIsNone(names.names[3].name.string)
+        self.assertEqual(names.names[3].sid_index, 0xffffffff)
+
+        return
diff -Npur samba-4.20.7/python/samba/tests/ndr/sd.py samba-4.20.8/python/samba/tests/ndr/sd.py
--- samba-4.20.7/python/samba/tests/ndr/sd.py	1970-01-01 01:00:00.000000000 +0100
+++ samba-4.20.8/python/samba/tests/ndr/sd.py	2025-03-25 15:40:17.000000000 +0100
@@ -0,0 +1,623 @@
+# Unix SMB/CIFS implementation.
+# Copyright © Douglas Bagnall <dbagnall@samba.org> 2025
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+import samba
+from samba.tests import TestCase, DynamicTestCase
+from samba.ndr import ndr_pack, ndr_unpack
+from samba.dcerpc import security
+
+
+class BaseSDTestCase(TestCase):
+    maxDiff = 10000
+    _cases = {
+        # subclasses should have a mapping of test names to binhex
+        # strings, as readable by bytes.fromhex().
+        #
+        # note, in Python 3.7+ that means hex pairs separated by any
+        # amount of whitespace, but in Python 3.6 it means any number
+        # of spaces. For example;
+        #
+        # 'ok_in_36': ("01 0203  04      05"
+        #              "   06"),
+        # 'ok_in_37': """
+        #               01 02\t03
+        #                04
+        #               05 06"""
+    }
+
+    @classmethod
+    def setUpDynamicTestCases(cls):
+        for k, v in cls._cases.items():
+            cls.generate_dynamic_test('test_sd', k, v)
+
+    def _test_sd_with_args(self, v):
+        packed = bytes.fromhex(v)
+        try:
+            sd = ndr_unpack(security.descriptor, packed)
+        except (TypeError, ValueError, RuntimeError) as e:
+            self.fail(f"raised {e}")
+        try:
+            repack = ndr_pack(sd)
+        except (TypeError, ValueError) as e:
+            self.fail(f"raised {e}")
+
+        sd2 = ndr_unpack(security.descriptor, repack)
+        self.assertEqual(sd, sd2)
+
+
+@DynamicTestCase
+class SDTestCase(BaseSDTestCase):
+    _cases = {
+        "sd_01": (
+            # this one is manually annotated, but not because it is
+            # especially interesting.
+            "01 "            # version
+            "00 "            #
+            "17 8c "         # control: SR,RM,PS,SI,SD,SP,DP
+            "14 00 00 00 "   # owner offset (20)
+            "30 00 00 00 "   # group offset (48)
+            "4c 00 00 00 "   # sacl offset  (76)
+            "c4 00 00 00 "   # dacl offset  (196)
+            "01 05 "                 # S-1- (5 sub auths)
+            "00 00 00 00 00 05 "     #     5-
+            "15 00 00 00 "           #       21-
+            "51 d7 cf 86 "
+            "f9 1b ef 93 "
+            "c3 53 ea 70 "
+            "00 02 00 00 "
+            "01 05 "               # group: S-1-5-21-b-c-d-e
+            "00 00 00 00 00 05 "
+            "15 00 00 00 "
+            "51 d7 cf 86 "
+            "f9 1b ef 93 "
+            "c3 53 ea 70 "
+            "00 02 00 00 "
+            # SACL
+            "04 00 "        # sacl v4
+            "78 00 "        # sacl size (92)
+            "02 00 "        # ace count (2)
+            "00 00 "
+            "07 "           # sacl ACE, SYSTEM_AUDIT_OBJECT_ACE_TYPE
+            "5a "           # flags
+            "38 00 "        # ace size
+            "20 00 00 00 "  # mask
+            "03 00 00 00 "  # flags
+            "be 3b 0e f3 f0 9f d1 11 "  # object type GUID
+            "b6 03 00 00 f8 03 67 c1 "
+            "a5 7a 96 bf e6 0d d0 11 "  # inherited type GUID
+            "a2 85 00 aa 00 30 49 e2 "
+            "01 01 "              # S-1-  (1 subauth)
+            "00 00 00 00 00 01 "  #     1-
+            "00 00 00 00 "        #       0
+            "07 "           # sacl ACE, SYSTEM_AUDIT_OBJECT_ACE_TYPE
+            "5a "           # flags
+            "38 00 "        # size
+            "20 00 00 00 "  # mask
+            "03 00 00 00 "  #flags
+            "bf 3b 0e f3 f0 9f d1 11 " # objct GUID
+            "b6 03 00 00 f8 03 67 c1 "
+            "a5 7a 96 bf e6 0d d0 11 " # inherited GUID
+            "a2 85 00 aa 00 30 49 e2 "
+            "01 01 "              # S-1-  (1 subauth)
+            "00 00 00 00 00 01 "  #     1-
+            "00 00 00 00 "        #       0
+            # DACL
+            "04 00 "        # dacl v4
+            "10 02 "        # dacl size (528)
+            "0d 00 "        # 13 aces
+            "00 00 "
+            "00 "           # ACCESS_ALLOWED_ACE_TYPE
+            "00 "           # flags
+            "24 00 "        # size
+            "ff 01 0f 00 "  # mask
+            "01 05 "                # S-1- (5 subauth)
+            "00 00 00 00 00 05 "    #     5-
+            "15 00 00 00 "          #       21-
+            "51 d7 cf 86 "
+            "f9 1b ef 93 "
+            "c3 53 ea 70 "
+            "00 02 00 00 "
+            "00 "           # ACCESS_ALLOWED_ACE_TYPE
+            "00 "
+            "14 00 "
+            "ff 01 0f 00 "
+            "01 01 "                # S-1-5-18
+            "00 00 00 00 00 05 "
+            "12 00 00 00 "
+            "00 "           # ACCESS_ALLOWED_ACE_TYPE
+            "00 "
+            "14 00 "
+            "94 00 02 00 "
+            "01 01 "                # S-1-5-11
+            "00 00 00 00 00 05 "
+            "0b 00 00 00 "
+            "00 "           # ACCESS_ALLOWED_ACE_TYPE
+            "12 "           # flags
+            "24 00 "
+            "ff 01 0f 00 "
+            "01 05 "              # S-1-5-a-b-c-d-e
+            "00 00 00 00 00 05 "
+            "15 00 00 00 "
+            "51 d7 cf 86 "
+            "f9 1b ef 93 "
+            "c3 53 ea 70 "
+            "07 02 00 00 "
+            "00 "           # ACCESS_ALLOWED_ACE_TYPE
+            "12 "           # flags
+            "18 00 "
+            "bd 01 0f 00 "
+            "01 02 "              # S-1-5-32-544
+            "00 00 00 00 00 05 "
+            "20 00 00 00 "
+            "20 02 00 00 "
+            "00 "           # ACCESS_ALLOWED_ACE_TYPE
+            "12 "           # flags
+            "18 00 "
+            "04 00 00 00 "
+            "01 02 "             # S-1-5-32-554
+            "00 00 00 00 00 05 "
+            "20 00 00 00 "
+            "2a 02 00 00 "
+            "05 "           # ACCESS_ALLOWED_OBJECT_ACE_TYPE
+            "1a "
+            "38 00 "        # size 56
+            "08 00 00 00 "  # mask
+            "03 00 00 00 "  # flags: object and inherited present
+            "a6 6d 02 9b 3c 0d 5c 46 "  # object GUID
+            "8b ee 51 99 d7 16 5c ba "
+            "86 7a 96 bf e6 0d d0 11 "  # inherited GUID
+            "a2 85 00 aa 00 30 49 e2 "
+            "01 01 "                   # S-1-3-0
+            "00 00 00 00 00 03 "
+            "00 00 00 00 "
+            "05 "           # ACCESS_ALLOWED_OBJECT_ACE_TYPE
+            "12 "
+            "28 00 "        # size 40
+            "30 00 00 00 "  # mask
+            "01 00 00 00 "  # flags: object present
+            "e5 c3 78 3f 9a f7 bd 46 "  # object GUID
+            "a0 b8 9d 18 11 6d dc 79 "
+            "01 01 "                    # S-1-5-10
+            "00 00 00 00 00 05 "
+            "0a 00 00 00 "
+            "05 "
+            "12 "
+            "28 00 "
+            "30 01 00 00 "
+            "01 00 00 00 "   # flags: object present
+            "de 47 e6 91 6f d9 70 4b "  # object GUID
+            "95 57 d6 3f f4 f3 cc d8 "
+            "01 01 "                  # S-1-5-10
+            "00 00 00 00 00 05 "
+            "0a 00 00 00 "
+            "05 "
+            "1a "
+            "38 00 "          # size 56
+            "08 00 00 00 "
+            "03 00 00 00 "    # flags both present
+            "a6 6d 02 9b 3c 0d 5c 46 "
+            "8b ee 51 99 d7 16 5c ba "
+            "86 7a 96 bf e6 0d d0 11 "
+            "a2 85 00 aa 00 30 49 e2 "
+            "01 01 "                # S-1-5-10
+            "00 00 00 00 00 05 "
+            "0a 00 00 00 "
+            "05 "
+            "1a "
+            "38 00 "              # size 56
+            "20 00 00 00 "
+            "03 00 00 00 "
+            "93 7b 1b ea 48 5e d5 46 "
+            "bc 6c 4d f4 fd a7 8a 35 "
+            "86 7a 96 bf e6 0d d0 11 "
+            "a2 85 00 aa 00 30 49 e2 "
+            "01 01 "                # S-1-5-10
+            "00 00 00 00 00 05 "
+            "0a 00 00 00 "
+            "05 "
+            "12 "
+            "38 00 "        # size 56
+            "30 00 00 00 "
+            "01 00 00 00 "  # only object GUI present
+            "0f d6 47 5b 90 60 b2 40 "
+            "9f 37 2a 4d e8 8f 30 63 "
+            "01 05 "               # S-1-5-21-b-c-d-e
+            "00 00 00 00 00 05 "
+            "15 00 00 00 "
+            "51 d7 cf 86 "
+            "f9 1b ef 93 "
+            "c3 53 ea 70 "
+            "0e 02 00 00 "
+            "05 "
+            "12 "
+            "38 00 "           # size 56
+            "30 00 00 00 "
+            "01 00 00 00 "
+            "0f d6 47 5b 90 60 b2 40 "
+            "9f 37 2a 4d e8 8f 30 63 "
+            "01 05 "               # S-1-5-21-b-c-d-e
+            "00 00 00 00 00 05 "
+            "15 00 00 00 "
+            "51 d7 cf 86 "
+            "f9 1b ef 93 "
+            "c3 53 ea 70 "
+            "0f 02 00 00"
+        ),
+        "sd_02": (
+            "01 00 17 99 14 00 00 00 30 00 00 00 4c 00 00 00 "
+            "c4 00 00 00 01 05 00 00 00 00 00 05 15 00 00 00 "
+            "51 d7 cf 86 f9 1b ef 93 c3 53 ea 70 00 02 00 00 "
+            "01 05 00 00 00 00 00 05 15 00 00 00 51 d7 cf 86 "
+            "f9 1b ef 93 c3 53 ea 70 00 02 00 00 04 00 78 00 "
+            "02 00 00 00 07 5a 38 00 20 00 00 00 03 00 00 00 "
+            "be 3b 0e f3 f0 9f d1 11 b6 03 00 00 f8 03 67 c1 "
+            "a5 7a 96 bf e6 0d d0 11 a2 85 00 aa 00 30 49 e2 "
+            "01 01 00 00 00 00 00 01 00 00 00 00 07 5a 38 00 "
+            "20 00 00 00 03 00 00 00 bf 3b 0e f3 f0 9f d1 11 "
+            "b6 03 00 00 f8 03 67 c1 a5 7a 96 bf e6 0d d0 11 "
+            "a2 85 00 aa 00 30 49 e2 01 01 00 00 00 00 00 01 "
+            "00 00 00 00 04 00 60 01 0a 00 00 00 00 0a 14 00 "
+            "ff 00 0f 00 01 01 00 00 00 00 00 03 00 00 00 00 "
+            "00 02 14 00 94 00 02 00 01 01 00 00 00 00 00 05 "
+            "0b 00 00 00 00 02 14 00 ff 00 0f 00 01 01 00 00 "
+            "00 00 00 05 12 00 00 00 00 02 24 00 ff 00 0f 00 "
+            "01 05 00 00 00 00 00 05 15 00 00 00 51 d7 cf 86 "
+            "f9 1b ef 93 c3 53 ea 70 00 02 00 00 00 02 24 00 "
+            "ff 00 0f 00 01 05 00 00 00 00 00 05 15 00 00 00 "
+            "51 d7 cf 86 f9 1b ef 93 c3 53 ea 70 07 02 00 00 "
+            "00 02 14 00 94 00 02 00 01 01 00 00 00 00 00 05 "
+            "09 00 00 00 05 00 38 00 00 01 00 00 01 00 00 00 "
+            "8f fd ac ed b3 ff d1 11 b4 1d 00 a0 c9 68 f9 39 "
+            "01 05 00 00 00 00 00 05 15 00 00 00 51 d7 cf 86 "
+            "f9 1b ef 93 c3 53 ea 70 00 02 00 00 05 02 28 00 "
+            "00 01 00 00 01 00 00 00 8f fd ac ed b3 ff d1 11 "
+            "b4 1d 00 a0 c9 68 f9 39 01 01 00 00 00 00 00 05 "
+            "0b 00 00 00 05 00 28 00 00 01 00 00 01 00 00 00 "
+            "8f fd ac ed b3 ff d1 11 b4 1d 00 a0 c9 68 f9 39 "
+            "01 01 00 00 00 00 00 05 12 00 00 00 05 00 38 00 "
+            "00 01 00 00 01 00 00 00 8f fd ac ed b3 ff d1 11 "
+            "b4 1d 00 a0 c9 68 f9 39 01 05 00 00 00 00 00 05 "
+            "15 00 00 00 51 d7 cf 86 f9 1b ef 93 c3 53 ea 70 "
+            "07 02 00 00"
+        ),
+        "sd_03": (
+            "01 00 17 8c 14 00 00 00 30 00 00 00 4c 00 00 00 "
+            "c4 00 00 00 01 05 00 00 00 00 00 05 15 00 00 00 "
+            "51 d7 cf 86 f9 1b ef 93 c3 53 ea 70 00 02 00 00 "
+            "01 05 00 00 00 00 00 05 15 00 00 00 51 d7 cf 86 "
+            "f9 1b ef 93 c3 53 ea 70 00 02 00 00 04 00 78 00 "
+            "02 00 00 00 07 5a 38 00 20 00 00 00 03 00 00 00 "
+            "be 3b 0e f3 f0 9f d1 11 b6 03 00 00 f8 03 67 c1 "
+            "a5 7a 96 bf e6 0d d0 11 a2 85 00 aa 00 30 49 e2 "
+            "01 01 00 00 00 00 00 01 00 00 00 00 07 5a 38 00 "
+            "20 00 00 00 03 00 00 00 bf 3b 0e f3 f0 9f d1 11 "
+            "b6 03 00 00 f8 03 67 c1 a5 7a 96 bf e6 0d d0 11 "
+            "a2 85 00 aa 00 30 49 e2 01 01 00 00 00 00 00 01 "
+            "00 00 00 00 04 00 38 01 0b 00 00 00 00 00 24 00 "
+            "ff 01 0f 00 01 05 00 00 00 00 00 05 15 00 00 00 "
+            "51 d7 cf 86 f9 1b ef 93 c3 53 ea 70 00 02 00 00 "
+            "00 00 14 00 ff 01 0f 00 01 01 00 00 00 00 00 05 "
+            "12 00 00 00 00 00 14 00 94 00 02 00 01 01 00 00 "
+            "00 00 00 05 0b 00 00 00 00 10 24 00 ff 00 0f 00 "
+            "01 05 00 00 00 00 00 05 15 00 00 00 51 d7 cf 86 "
+            "f9 1b ef 93 c3 53 ea 70 00 02 00 00 00 1a 14 00 "
+            "ff 00 0f 00 01 01 00 00 00 00 00 03 00 00 00 00 "
+            "00 12 14 00 94 00 02 00 01 01 00 00 00 00 00 05 "
+            "0b 00 00 00 00 12 14 00 ff 00 0f 00 01 01 00 00 "
+            "00 00 00 05 12 00 00 00 00 12 24 00 ff 00 0f 00 "
+            "01 05 00 00 00 00 00 05 15 00 00 00 51 d7 cf 86 "
+            "f9 1b ef 93 c3 53 ea 70 00 02 00 00 00 12 24 00 "
+            "ff 00 0f 00 01 05 00 00 00 00 00 05 15 00 00 00 "
+            "51 d7 cf 86 f9 1b ef 93 c3 53 ea 70 07 02 00 00 "
+            "00 12 14 00 94 00 02 00 01 01 00 00 00 00 00 05 "
+            "09 00 00 00 05 12 28 00 00 01 00 00 01 00 00 00 "
+            "8f fd ac ed b3 ff d1 11 b4 1d 00 a0 c9 68 f9 39 "
+            "01 01 00 00 00 00 00 05 0b 00 00 00"
+        ),
+        "sd_04_object_ace_with_trailing_zeros": (
+            "01 00 04 91 00 00 00 00 00 00 00 00 00 00 00 00 "
+            "14 00 00 00 04 00 d0 01 0a 00 00 00 00 0a 14 00 "
+            "ff 00 0f 00 01 01 00 00 00 00 00 03 00 00 00 00 "
+            "00 02 14 00 94 00 02 00 01 01 00 00 00 00 00 05 "
+            "0b 00 00 00 00 02 14 00 ff 00 0f 00 01 01 00 00 "
+            "00 00 00 05 12 00 00 00 00 02 24 00 ff 00 0f 00 "
+            "01 05 00 00 00 00 00 05 15 00 00 00 51 d7 cf 86 "
+            "f9 1b ef 93 c3 53 ea 70 00 02 00 00 00 02 24 00 "
+            "ff 00 0f 00 01 05 00 00 00 00 00 05 15 00 00 00 "
+            "51 d7 cf 86 f9 1b ef 93 c3 53 ea 70 07 02 00 00 "
+            "00 02 14 00 94 00 02 00 01 01 00 00 00 00 00 05 "
+            "09 00 00 00 "
+            "05 "     # ACCESS_ALLOWED_OBJECT_ACE_TYPE
+            "00 "     # zero flags
+            "48 00 "  # size 72
+            "00 01 00 00 "  # mask
+            "01 00 00 00 "  # flags: object present, no inherit
+            "8f fd ac ed b3 ff d1 11 "  # GUID
+            "b4 1d 00 a0 c9 68 f9 39 "
+            "01 01 "                    # S-1-3-0
+            "00 00 00 00 00 03 "
+            "00 00 00 00 "
+            # next 4 rows are 32 extra bytes
+            "00 00 00 00 00 00 00 00 "
+            "00 00 00 00 00 00 00 00 "
+            "00 00 00 00 00 00 00 00 "
+            "00 00 00 00 00 00 00 00 "
+            "05 02 48 00 " # next ACE starts
+            "00 01 00 00 01 00 00 00 8f fd ac ed b3 ff d1 11 "
+            "b4 1d 00 a0 c9 68 f9 39 01 01 00 00 00 00 00 05 "
+            "0b 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 "
+            "00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 "
+            "00 00 00 00 05 00 48 00 00 01 00 00 01 00 00 00 "
+            "8f fd ac ed b3 ff d1 11 b4 1d 00 a0 c9 68 f9 39 "
+            "01 01 00 00 00 00 00 05 12 00 00 00 00 00 00 00 "
+            "00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 "
+            "00 00 00 00 00 00 00 00 00 00 00 00 05 00 58 00 "
+            "00 01 00 00 01 00 00 00 8f fd ac ed b3 ff d1 11 "
+            "b4 1d 00 a0 c9 68 f9 39 01 05 00 00 00 00 00 05 "
+            "15 00 00 00 51 d7 cf 86 f9 1b ef 93 c3 53 ea 70 "
+            "07 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 "
+            "00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 "
+            "00 00 00 00"
+        ),
+        "sd_05": (
+            "01 00 17 8c 14 00 00 00 30 00 00 00 4c 00 00 00 "
+            "c4 00 00 00 01 05 00 00 00 00 00 05 15 00 00 00 "
+            "51 d7 cf 86 f9 1b ef 93 c3 53 ea 70 00 02 00 00 "
+            "01 05 00 00 00 00 00 05 15 00 00 00 51 d7 cf 86 "
+            "f9 1b ef 93 c3 53 ea 70 00 02 00 00 04 00 78 00 "
+            "02 00 00 00 07 5a 38 00 20 00 00 00 03 00 00 00 "
+            "be 3b 0e f3 f0 9f d1 11 b6 03 00 00 f8 03 67 c1 "
+            "a5 7a 96 bf e6 0d d0 11 a2 85 00 aa 00 30 49 e2 "
+            "01 01 00 00 00 00 00 01 00 00 00 00 07 5a 38 00 "
+            "20 00 00 00 03 00 00 00 bf 3b 0e f3 f0 9f d1 11 "
+            "b6 03 00 00 f8 03 67 c1 a5 7a 96 bf e6 0d d0 11 "
+            "a2 85 00 aa 00 30 49 e2 01 01 00 00 00 00 00 01 "
+            "00 00 00 00 04 00 38 01 0b 00 00 00 00 00 24 00 "
+            "ff 01 0f 00 01 05 00 00 00 00 00 05 15 00 00 00 "
+            "51 d7 cf 86 f9 1b ef 93 c3 53 ea 70 00 02 00 00 "
+            "00 00 14 00 ff 01 0f 00 01 01 00 00 00 00 00 05 "
+            "12 00 00 00 00 00 14 00 94 00 02 00 01 01 00 00 "
+            "00 00 00 05 0b 00 00 00 00 10 24 00 ff 00 0f 00 "
+            "01 05 00 00 00 00 00 05 15 00 00 00 51 d7 cf 86 "
+            "f9 1b ef 93 c3 53 ea 70 00 02 00 00 00 1a 14 00 "
+            "ff 00 0f 00 01 01 00 00 00 00 00 03 00 00 00 00 "
+            "00 12 14 00 94 00 02 00 01 01 00 00 00 00 00 05 "
+            "0b 00 00 00 00 12 14 00 ff 00 0f 00 01 01 00 00 "
+            "00 00 00 05 12 00 00 00 00 12 24 00 ff 00 0f 00 "
+            "01 05 00 00 00 00 00 05 15 00 00 00 51 d7 cf 86 "
+            "f9 1b ef 93 c3 53 ea 70 00 02 00 00 00 12 24 00 "
+            "ff 00 0f 00 01 05 00 00 00 00 00 05 15 00 00 00 "
+            "51 d7 cf 86 f9 1b ef 93 c3 53 ea 70 07 02 00 00 "
+            "00 12 14 00 94 00 02 00 01 01 00 00 00 00 00 05 "
+            "09 00 00 00 05 12 28 00 00 01 00 00 01 00 00 00 "
+            "8f fd ac ed b3 ff d1 11 b4 1d 00 a0 c9 68 f9 39 "
+            "01 01 00 00 00 00 00 05 0b 00 00 00"
+        ),
+        "sd_06": (
+            "01 00 17 99 14 00 00 00 30 00 00 00 4c 00 00 00 "
+            "c4 00 00 00 01 05 00 00 00 00 00 05 15 00 00 00 "
+            "51 d7 cf 86 f9 1b ef 93 c3 53 ea 70 00 02 00 00 "
+            "01 05 00 00 00 00 00 05 15 00 00 00 51 d7 cf 86 "
+            "f9 1b ef 93 c3 53 ea 70 00 02 00 00 04 00 78 00 "
+            "02 00 00 00 07 5a 38 00 20 00 00 00 03 00 00 00 "
+            "be 3b 0e f3 f0 9f d1 11 b6 03 00 00 f8 03 67 c1 "
+            "a5 7a 96 bf e6 0d d0 11 a2 85 00 aa 00 30 49 e2 "
+            "01 01 00 00 00 00 00 01 00 00 00 00 07 5a 38 00 "
+            "20 00 00 00 03 00 00 00 bf 3b 0e f3 f0 9f d1 11 "
+            "b6 03 00 00 f8 03 67 c1 a5 7a 96 bf e6 0d d0 11 "
+            "a2 85 00 aa 00 30 49 e2 01 01 00 00 00 00 00 01 "
+            "00 00 00 00 04 00 28 01 09 00 00 00 00 0a 14 00 "
+            "ff 00 0f 00 01 01 00 00 00 00 00 03 00 00 00 00 "
+            "00 02 14 00 94 00 02 00 01 01 00 00 00 00 00 05 "
+            "0b 00 00 00 00 02 14 00 ff 00 0f 00 01 01 00 00 "
+            "00 00 00 05 12 00 00 00 00 02 24 00 ff 00 0f 00 "
+            "01 05 00 00 00 00 00 05 15 00 00 00 51 d7 cf 86 "
+            "f9 1b ef 93 c3 53 ea 70 00 02 00 00 00 02 24 00 "
+            "ff 00 0f 00 01 05 00 00 00 00 00 05 15 00 00 00 "
+            "51 d7 cf 86 f9 1b ef 93 c3 53 ea 70 07 02 00 00 "
+            "00 02 14 00 94 00 02 00 01 01 00 00 00 00 00 05 "
+            "09 00 00 00 05 02 28 00 00 01 00 00 01 00 00 00 "
+            "8f fd ac ed b3 ff d1 11 b4 1d 00 a0 c9 68 f9 39 "
+            "01 01 00 00 00 00 00 05 0b 00 00 00 05 00 28 00 "
+            "00 01 00 00 01 00 00 00 8f fd ac ed b3 ff d1 11 "
+            "b4 1d 00 a0 c9 68 f9 39 01 01 00 00 00 00 00 05 "
+            "12 00 00 00 05 00 38 00 00 01 00 00 01 00 00 00 "
+            "8f fd ac ed b3 ff d1 11 b4 1d 00 a0 c9 68 f9 39 "
+            "01 05 00 00 00 00 00 05 15 00 00 00 51 d7 cf 86 "
+            "f9 1b ef 93 c3 53 ea 70 07 02 00 00"
+        ),
+        "sd_07_object_ace_with_trailing_zeros": (
+            "01 00 04 91 00 00 00 00 00 00 00 00 00 00 00 00 "
+            "14 00 00 00 04 00 88 01 09 00 00 00 00 0a 14 00 "
+            "ff 00 0f 00 01 01 00 00 00 00 00 03 00 00 00 00 "
+            "00 02 14 00 94 00 02 00 01 01 00 00 00 00 00 05 "
+            "0b 00 00 00 00 02 14 00 ff 00 0f 00 01 01 00 00 "
+            "00 00 00 05 12 00 00 00 00 02 24 00 ff 00 0f 00 "
+            "01 05 00 00 00 00 00 05 15 00 00 00 51 d7 cf 86 "
+            "f9 1b ef 93 c3 53 ea 70 00 02 00 00 00 02 24 00 "
+            "ff 00 0f 00 01 05 00 00 00 00 00 05 15 00 00 00 "
+            "51 d7 cf 86 f9 1b ef 93 c3 53 ea 70 07 02 00 00 "
+            "00 02 14 00 94 00 02 00 01 01 00 00 00 00 00 05 "
+            "09 00 00 00 05 02 48 00 00 01 00 00 01 00 00 00 "
+            "8f fd ac ed b3 ff d1 11 b4 1d 00 a0 c9 68 f9 39 "
+            "01 01 00 00 00 00 00 05 0b 00 00 00 00 00 00 00 "
+            "00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 "
+            "00 00 00 00 00 00 00 00 00 00 00 00 05 00 48 00 "
+            "00 01 00 00 01 00 00 00 8f fd ac ed b3 ff d1 11 "
+            "b4 1d 00 a0 c9 68 f9 39 01 01 00 00 00 00 00 05 "
+            "12 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 "
+            "00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 "
+            "00 00 00 00 05 00 58 00 00 01 00 00 01 00 00 00 "
+            "8f fd ac ed b3 ff d1 11 b4 1d 00 a0 c9 68 f9 39 "
+            "01 05 00 00 00 00 00 05 15 00 00 00 51 d7 cf 86 "
+            "f9 1b ef 93 c3 53 ea 70 07 02 00 00 00 00 00 00 "
+            "00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 "
+            "00 00 00 00 00 00 00 00 00 00 00 00"
+        ),
+        "sd_08": (
+            "01 00 17 99 14 00 00 00 30 00 00 00 4c 00 00 00 "
+            "c4 00 00 00 01 05 00 00 00 00 00 05 15 00 00 00 "
+            "51 d7 cf 86 f9 1b ef 93 c3 53 ea 70 00 02 00 00 "
+            "01 05 00 00 00 00 00 05 15 00 00 00 51 d7 cf 86 "
+            "f9 1b ef 93 c3 53 ea 70 00 02 00 00 04 00 78 00 "
+            "02 00 00 00 07 5a 38 00 20 00 00 00 03 00 00 00 "
+            "be 3b 0e f3 f0 9f d1 11 b6 03 00 00 f8 03 67 c1 "
+            "a5 7a 96 bf e6 0d d0 11 a2 85 00 aa 00 30 49 e2 "
+            "01 01 00 00 00 00 00 01 00 00 00 00 07 5a 38 00 "
+            "20 00 00 00 03 00 00 00 bf 3b 0e f3 f0 9f d1 11 "
+            "b6 03 00 00 f8 03 67 c1 a5 7a 96 bf e6 0d d0 11 "
+            "a2 85 00 aa 00 30 49 e2 01 01 00 00 00 00 00 01 "
+            "00 00 00 00 04 00 88 01 0b 00 00 00 00 0a 14 00 "
+            "ff 00 0f 00 01 01 00 00 00 00 00 03 00 00 00 00 "
+            "00 02 14 00 94 00 02 00 01 01 00 00 00 00 00 05 "
+            "0b 00 00 00 00 02 14 00 ff 00 0f 00 01 01 00 00 "
+            "00 00 00 05 12 00 00 00 00 02 24 00 ff 00 0f 00 "
+            "01 05 00 00 00 00 00 05 15 00 00 00 51 d7 cf 86 "
+            "f9 1b ef 93 c3 53 ea 70 00 02 00 00 00 02 24 00 "
+            "ff 00 0f 00 01 05 00 00 00 00 00 05 15 00 00 00 "
+            "51 d7 cf 86 f9 1b ef 93 c3 53 ea 70 07 02 00 00 "
+            "00 02 14 00 94 00 02 00 01 01 00 00 00 00 00 05 "
+            "09 00 00 00 05 02 28 00 00 01 00 00 01 00 00 00 "
+            "8f fd ac ed b3 ff d1 11 b4 1d 00 a0 c9 68 f9 39 "
+            "01 01 00 00 00 00 00 05 0b 00 00 00 05 00 28 00 "
+            "00 01 00 00 01 00 00 00 8f fd ac ed b3 ff d1 11 "
+            "b4 1d 00 a0 c9 68 f9 39 01 01 00 00 00 00 00 05 "
+            "12 00 00 00 05 00 38 00 00 01 00 00 01 00 00 00 "
+            "8f fd ac ed b3 ff d1 11 b4 1d 00 a0 c9 68 f9 39 "
+            "01 05 00 00 00 00 00 05 15 00 00 00 51 d7 cf 86 "
+            "f9 1b ef 93 c3 53 ea 70 00 02 00 00 05 00 38 00 "
+            "00 01 00 00 01 00 00 00 8f fd ac ed b3 ff d1 11 "
+            "b4 1d 00 a0 c9 68 f9 39 01 05 00 00 00 00 00 05 "
+            "15 00 00 00 51 d7 cf 86 f9 1b ef 93 c3 53 ea 70 "
+            "07 02 00 00 05 00 28 00 00 01 00 00 01 00 00 00 "
+            "8f fd ac ed b3 ff d1 11 b4 1d 00 a0 c9 68 f9 39 "
+            "01 01 00 00 00 00 00 05 09 00 00 00"
+        ),
+
+        "sd_09": (
+            "01 00 17 99 14 00 00 00 30 00 00 00 4c 00 00 00 "
+            "c4 00 00 00 01 05 00 00 00 00 00 05 15 00 00 00 "
+            "51 d7 cf 86 f9 1b ef 93 c3 53 ea 70 00 02 00 00 "
+            "01 05 00 00 00 00 00 05 15 00 00 00 51 d7 cf 86 "
+            "f9 1b ef 93 c3 53 ea 70 00 02 00 00 04 00 78 00 "
+            "02 00 00 00 07 5a 38 00 20 00 00 00 03 00 00 00 "
+            "be 3b 0e f3 f0 9f d1 11 b6 03 00 00 f8 03 67 c1 "
+            "a5 7a 96 bf e6 0d d0 11 a2 85 00 aa 00 30 49 e2 "
+            "01 01 00 00 00 00 00 01 00 00 00 00 07 5a 38 00 "
+            "20 00 00 00 03 00 00 00 bf 3b 0e f3 f0 9f d1 11 "
+            "b6 03 00 00 f8 03 67 c1 a5 7a 96 bf e6 0d d0 11 "
+            "a2 85 00 aa 00 30 49 e2 01 01 00 00 00 00 00 01 "
+            "00 00 00 00 04 00 60 01 0a 00 00 00 00 0a 14 00 "
+            "ff 00 0f 00 01 01 00 00 00 00 00 03 00 00 00 00 "
+            "00 02 14 00 94 00 02 00 01 01 00 00 00 00 00 05 "
+            "0b 00 00 00 00 02 14 00 ff 00 0f 00 01 01 00 00 "
+            "00 00 00 05 12 00 00 00 00 02 24 00 ff 00 0f 00 "
+            "01 05 00 00 00 00 00 05 15 00 00 00 51 d7 cf 86 "
+            "f9 1b ef 93 c3 53 ea 70 00 02 00 00 00 02 24 00 "
+            "ff 00 0f 00 01 05 00 00 00 00 00 05 15 00 00 00 "
+            "51 d7 cf 86 f9 1b ef 93 c3 53 ea 70 07 02 00 00 "
+            "00 02 14 00 94 00 02 00 01 01 00 00 00 00 00 05 "
+            "09 00 00 00 05 02 28 00 00 01 00 00 01 00 00 00 "
+            "8f fd ac ed b3 ff d1 11 b4 1d 00 a0 c9 68 f9 39 "
+            "01 01 00 00 00 00 00 05 0b 00 00 00 05 00 28 00 "
+            "00 01 00 00 01 00 00 00 8f fd ac ed b3 ff d1 11 "
+            "b4 1d 00 a0 c9 68 f9 39 01 01 00 00 00 00 00 05 "
+            "12 00 00 00 05 00 38 00 00 01 00 00 01 00 00 00 "
+            "8f fd ac ed b3 ff d1 11 b4 1d 00 a0 c9 68 f9 39 "
+            "01 05 00 00 00 00 00 05 15 00 00 00 51 d7 cf 86 "
+            "f9 1b ef 93 c3 53 ea 70 00 02 00 00 05 00 38 00 "
+            "00 01 00 00 01 00 00 00 8f fd ac ed b3 ff d1 11 "
+            "b4 1d 00 a0 c9 68 f9 39 01 05 00 00 00 00 00 05 "
+            "15 00 00 00 51 d7 cf 86 f9 1b ef 93 c3 53 ea 70 "
+            "07 02 00 00"
+        ),
+        "sd_10_object_ace_with_trailing_zeros": (
+            "01 00 04 91 00 00 00 00 00 00 00 00 00 00 00 00 "
+            "14 00 00 00 04 00 28 02 0b 00 00 00 00 0a 14 00 "
+            "ff 00 0f 00 01 01 00 00 00 00 00 03 00 00 00 00 "
+            "00 02 14 00 94 00 02 00 01 01 00 00 00 00 00 05 "
+            "0b 00 00 00 00 02 14 00 ff 00 0f 00 01 01 00 00 "
+            "00 00 00 05 12 00 00 00 00 02 24 00 ff 00 0f 00 "
+            "01 05 00 00 00 00 00 05 15 00 00 00 51 d7 cf 86 "
+            "f9 1b ef 93 c3 53 ea 70 00 02 00 00 00 02 24 00 "
+            "ff 00 0f 00 01 05 00 00 00 00 00 05 15 00 00 00 "
+            "51 d7 cf 86 f9 1b ef 93 c3 53 ea 70 07 02 00 00 "
+            "00 02 14 00 94 00 02 00 01 01 00 00 00 00 00 05 "
+            "09 00 00 00 05 02 48 00 00 01 00 00 01 00 00 00 "
+            "8f fd ac ed b3 ff d1 11 b4 1d 00 a0 c9 68 f9 39 "
+            "01 01 00 00 00 00 00 05 0b 00 00 00 00 00 00 00 "
+            "00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 "
+            "00 00 00 00 00 00 00 00 00 00 00 00 05 00 48 00 "
+            "00 01 00 00 01 00 00 00 8f fd ac ed b3 ff d1 11 "
+            "b4 1d 00 a0 c9 68 f9 39 01 01 00 00 00 00 00 05 "
+            "12 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 "
+            "00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 "
+            "00 00 00 00 05 00 58 00 00 01 00 00 01 00 00 00 "
+            "8f fd ac ed b3 ff d1 11 b4 1d 00 a0 c9 68 f9 39 "
+            "01 05 00 00 00 00 00 05 15 00 00 00 51 d7 cf 86 "
+            "f9 1b ef 93 c3 53 ea 70 00 02 00 00 00 00 00 00 "
+            "00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 "
+            "00 00 00 00 00 00 00 00 00 00 00 00 05 00 58 00 "
+            "00 01 00 00 01 00 00 00 8f fd ac ed b3 ff d1 11 "
+            "b4 1d 00 a0 c9 68 f9 39 01 05 00 00 00 00 00 05 "
+            "15 00 00 00 51 d7 cf 86 f9 1b ef 93 c3 53 ea 70 "
+            "07 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 "
+            "00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 "
+            "00 00 00 00 05 00 48 00 00 01 00 00 01 00 00 00 "
+            "8f fd ac ed b3 ff d1 11 b4 1d 00 a0 c9 68 f9 39 "
+            "01 01 00 00 00 00 00 05 09 00 00 00 00 00 00 00 "
+            "00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 "
+            "00 00 00 00 00 00 00 00 00 00 00 00"
+        ),
+        "sd_11": (
+            "01 00 17 99 14 00 00 00 30 00 00 00 4c 00 00 00 "
+            "c4 00 00 00 01 05 00 00 00 00 00 05 15 00 00 00 "
+            "51 d7 cf 86 f9 1b ef 93 c3 53 ea 70 00 02 00 00 "
+            "01 05 00 00 00 00 00 05 15 00 00 00 51 d7 cf 86 "
+            "f9 1b ef 93 c3 53 ea 70 00 02 00 00 04 00 78 00 "
+            "02 00 00 00 07 5a 38 00 20 00 00 00 03 00 00 00 "
+            "be 3b 0e f3 f0 9f d1 11 b6 03 00 00 f8 03 67 c1 "
+            "a5 7a 96 bf e6 0d d0 11 a2 85 00 aa 00 30 49 e2 "
+            "01 01 00 00 00 00 00 01 00 00 00 00 07 5a 38 00 "
+            "20 00 00 00 03 00 00 00 bf 3b 0e f3 f0 9f d1 11 "
+            "b6 03 00 00 f8 03 67 c1 a5 7a 96 bf e6 0d d0 11 "
+            "a2 85 00 aa 00 30 49 e2 01 01 00 00 00 00 00 01 "
+            "00 00 00 00 04 00 28 01 09 00 00 00 00 0a 14 00 "
+            "ff 00 0f 00 01 01 00 00 00 00 00 03 00 00 00 00 "
+            "00 02 14 00 94 00 02 00 01 01 00 00 00 00 00 05 "
+            "0b 00 00 00 00 02 14 00 ff 00 0f 00 01 01 00 00 "
+            "00 00 00 05 12 00 00 00 00 02 24 00 ff 00 0f 00 "
+            "01 05 00 00 00 00 00 05 15 00 00 00 51 d7 cf 86 "
+            "f9 1b ef 93 c3 53 ea 70 00 02 00 00 00 02 24 00 "
+            "ff 00 0f 00 01 05 00 00 00 00 00 05 15 00 00 00 "
+            "51 d7 cf 86 f9 1b ef 93 c3 53 ea 70 07 02 00 00 "
+            "00 02 14 00 94 00 02 00 01 01 00 00 00 00 00 05 "
+            "09 00 00 00 05 02 28 00 00 01 00 00 01 00 00 00 "
+            "8f fd ac ed b3 ff d1 11 b4 1d 00 a0 c9 68 f9 39 "
+            "01 01 00 00 00 00 00 05 0b 00 00 00 05 00 28 00 "
+            "00 01 00 00 01 00 00 00 8f fd ac ed b3 ff d1 11 "
+            "b4 1d 00 a0 c9 68 f9 39 01 01 00 00 00 00 00 05 "
+            "12 00 00 00 05 00 38 00 00 01 00 00 01 00 00 00 "
+            "8f fd ac ed b3 ff d1 11 b4 1d 00 a0 c9 68 f9 39 "
+            "01 05 00 00 00 00 00 05 15 00 00 00 51 d7 cf 86 "
+            "f9 1b ef 93 c3 53 ea 70 07 02 00 00"
+        ),
+    }
+
+
+if __name__ == '__main__':
+    import unittest
+    unittest.main()
diff -Npur samba-4.20.7/selftest/tests.py samba-4.20.8/selftest/tests.py
--- samba-4.20.7/selftest/tests.py	2024-09-17 13:37:03.000000000 +0200
+++ samba-4.20.8/selftest/tests.py	2025-03-25 15:40:17.000000000 +0100
@@ -238,6 +238,7 @@ planpythontestsuite("none", "samba.tests
 planpythontestsuite("none", "samba.tests.samdb_api")
 planpythontestsuite("none", "samba.tests.ndr.gkdi")
 planpythontestsuite("none", "samba.tests.ndr.gmsa")
+planpythontestsuite("none", "samba.tests.ndr.sd")
 planpythontestsuite("none", "samba.tests.ndr.wbint")
 
 if with_pam:
diff -Npur samba-4.20.7/source3/auth/check_samsec.c samba-4.20.8/source3/auth/check_samsec.c
--- samba-4.20.7/source3/auth/check_samsec.c	2024-01-29 15:41:26.000000000 +0100
+++ samba-4.20.8/source3/auth/check_samsec.c	2025-03-25 15:40:17.000000000 +0100
@@ -575,6 +575,8 @@ NTSTATUS check_sam_security(const DATA_B
 		goto done;
 	}
 
+	(*server_info)->info3->base.user_flags |= NETLOGON_NTLMV2_ENABLED;
+
 	(*server_info)->session_key =
 		data_blob_talloc(*server_info, user_sess_key.data,
 				 user_sess_key.length);
diff -Npur samba-4.20.7/source3/modules/vfs_ceph_new.c samba-4.20.8/source3/modules/vfs_ceph_new.c
--- samba-4.20.7/source3/modules/vfs_ceph_new.c	2024-09-17 13:37:11.000000000 +0200
+++ samba-4.20.8/source3/modules/vfs_ceph_new.c	2025-03-25 15:40:17.000000000 +0100
@@ -78,6 +78,88 @@ static ssize_t lstatus_code(intmax_t ret
 	return (ssize_t)ret;
 }
 
+enum vfs_cephfs_proxy_mode {
+	VFS_CEPHFS_PROXY_NO = 0,
+	VFS_CEPHFS_PROXY_YES,
+	VFS_CEPHFS_PROXY_AUTO
+};
+
+static const struct enum_list enum_vfs_cephfs_proxy_vals[] = {
+	{VFS_CEPHFS_PROXY_NO, "No"},
+	{VFS_CEPHFS_PROXY_NO, "False"},
+	{VFS_CEPHFS_PROXY_NO, "0"},
+	{VFS_CEPHFS_PROXY_NO, "Off"},
+	{VFS_CEPHFS_PROXY_NO, "disable"},
+	{VFS_CEPHFS_PROXY_YES, "Yes"},
+	{VFS_CEPHFS_PROXY_YES, "True"},
+	{VFS_CEPHFS_PROXY_YES, "1"},
+	{VFS_CEPHFS_PROXY_YES, "On"},
+	{VFS_CEPHFS_PROXY_YES, "enable"},
+	{VFS_CEPHFS_PROXY_AUTO, "auto"},
+	{-1, NULL}
+};
+
+#define CEPH_FN(_name) typeof(_name) *_name ## _fn
+
+struct vfs_ceph_config {
+	const char *conf_file;
+	const char *user_id;
+	const char *fsname;
+	struct cephmount_cached *mount_entry;
+	struct ceph_mount_info *mount;
+	enum vfs_cephfs_proxy_mode proxy;
+	void *libhandle;
+
+	CEPH_FN(ceph_ll_lookup_inode);
+	CEPH_FN(ceph_ll_walk);
+	CEPH_FN(ceph_ll_getattr);
+	CEPH_FN(ceph_ll_setattr);
+	CEPH_FN(ceph_ll_releasedir);
+	CEPH_FN(ceph_ll_create);
+	CEPH_FN(ceph_ll_lookup);
+	CEPH_FN(ceph_ll_open);
+	CEPH_FN(ceph_ll_opendir);
+	CEPH_FN(ceph_ll_mkdir);
+	CEPH_FN(ceph_ll_rmdir);
+	CEPH_FN(ceph_ll_unlink);
+	CEPH_FN(ceph_ll_symlink);
+	CEPH_FN(ceph_ll_readlink);
+	CEPH_FN(ceph_ll_put);
+	CEPH_FN(ceph_ll_read);
+	CEPH_FN(ceph_ll_write);
+	CEPH_FN(ceph_ll_lseek);
+	CEPH_FN(ceph_ll_fsync);
+	CEPH_FN(ceph_ll_fallocate);
+	CEPH_FN(ceph_ll_link);
+	CEPH_FN(ceph_ll_rename);
+	CEPH_FN(ceph_ll_mknod);
+	CEPH_FN(ceph_ll_getxattr);
+	CEPH_FN(ceph_ll_setxattr);
+	CEPH_FN(ceph_ll_listxattr);
+	CEPH_FN(ceph_ll_removexattr);
+	CEPH_FN(ceph_ll_lookup_root);
+	CEPH_FN(ceph_ll_statfs);
+	CEPH_FN(ceph_ll_close);
+
+	CEPH_FN(ceph_chdir);
+	CEPH_FN(ceph_conf_get);
+	CEPH_FN(ceph_conf_read_file);
+	CEPH_FN(ceph_conf_set);
+	CEPH_FN(ceph_create);
+	CEPH_FN(ceph_getcwd);
+	CEPH_FN(ceph_init);
+	CEPH_FN(ceph_mount);
+	CEPH_FN(ceph_release);
+	CEPH_FN(ceph_select_filesystem);
+	CEPH_FN(ceph_unmount);
+	CEPH_FN(ceph_userperm_destroy);
+	CEPH_FN(ceph_userperm_new);
+	CEPH_FN(ceph_version);
+	CEPH_FN(ceph_readdir);
+	CEPH_FN(ceph_rewinddir);
+	CEPH_FN(ceph_readdir_r);
+};
+
 /*
  * Track unique connections, as virtual mounts, to cephfs file systems.
  * Individual mount-entries will be set on the handle->data attribute, but
@@ -90,39 +172,55 @@ static ssize_t lstatus_code(intmax_t ret
 
 static struct cephmount_cached {
 	char *cookie;
-	uint32_t count;
+	int32_t count;
 	struct ceph_mount_info *mount;
 	struct cephmount_cached *next, *prev;
 	uint64_t fd_index;
 } *cephmount_cached;
 
-static int cephmount_cache_add(const char *cookie,
-			       struct ceph_mount_info *mount,
-			       struct cephmount_cached **out_entry)
+static bool cephmount_cache_add(const char *cookie,
+				struct ceph_mount_info *mount,
+				struct cephmount_cached **out_entry)
 {
 	struct cephmount_cached *entry = NULL;
 
 	entry = talloc_zero(NULL, struct cephmount_cached);
 	if (entry == NULL) {
 		errno = ENOMEM;
-		return -1;
+		return false;
 	}
 
 	entry->cookie = talloc_strdup(entry, cookie);
 	if (entry->cookie == NULL) {
 		talloc_free(entry);
 		errno = ENOMEM;
-		return -1;
+		return false;
 	}
 
 	entry->mount = mount;
 	entry->count = 1;
 
-	DBG_DEBUG("[CEPH] adding mount cache entry for %s\n", entry->cookie);
+	DBG_DEBUG("[CEPH] adding mount cache entry: cookie='%s'\n",
+		  entry->cookie);
 	DLIST_ADD(cephmount_cached, entry);
 
 	*out_entry = entry;
-	return 0;
+	return true;
+}
+
+static bool cephmount_cache_change_ref(struct cephmount_cached *entry, int n)
+{
+	entry->count += n;
+
+	DBG_DEBUG("[CEPH] updated mount cache entry: count=%" PRId32
+		  "change=%+d cookie='%s'\n", entry->count, n, entry->cookie);
+
+	if (entry->count && (n < 0)) {
+		DBG_DEBUG("[CEPH] mount cache entry still in use: "
+			  "count=%" PRId32 " cookie='%s'\n",
+			  entry->count, entry->cookie);
+	}
+	return (entry->count == 0);
 }
 
 static struct cephmount_cached *cephmount_cache_update(const char *cookie)
@@ -131,118 +229,289 @@ static struct cephmount_cached *cephmoun
 
 	for (entry = cephmount_cached; entry; entry = entry->next) {
 		if (strcmp(entry->cookie, cookie) == 0) {
-			entry->count++;
-			DBG_DEBUG("[CEPH] updated mount cache: count is [%"
-				  PRIu32 "]\n", entry->count);
+			cephmount_cache_change_ref(entry, 1);
 			return entry;
 		}
 	}
 
-	errno = ENOENT;
 	return NULL;
 }
 
-static int cephmount_cache_remove(struct cephmount_cached *entry)
+static bool cephmount_cache_remove(struct cephmount_cached *entry)
 {
-	if (--entry->count) {
-		DBG_DEBUG("[CEPH] updated mount cache: count is [%"
-			  PRIu32 "]\n", entry->count);
-		return entry->count;
+	if (!cephmount_cache_change_ref(entry, -1)) {
+		return false;
 	}
 
-	DBG_DEBUG("[CEPH] removing mount cache entry for %s\n", entry->cookie);
+	DBG_DEBUG("[CEPH] removing mount cache entry: cookie='%s'\n",
+		  entry->cookie);
 	DLIST_REMOVE(cephmount_cached, entry);
 	talloc_free(entry);
-	return 0;
+	return true;
 }
 
-static char *cephmount_get_cookie(TALLOC_CTX * mem_ctx, const int snum)
+static char *cephmount_get_cookie(TALLOC_CTX * mem_ctx,
+				  struct vfs_ceph_config *config)
 {
-	const char *conf_file =
-	    lp_parm_const_string(snum, "ceph_new", "config_file", ".");
-	const char *user_id =
-	    lp_parm_const_string(snum, "ceph_new", "user_id", "");
-	const char *fsname =
-	    lp_parm_const_string(snum, "ceph_new", "filesystem", "");
-	return talloc_asprintf(mem_ctx, "(%s/%s/%s)", conf_file, user_id,
-			       fsname);
+	return talloc_asprintf(mem_ctx, "(%s/%s/%s)",
+			       config->conf_file,
+			       config->user_id,
+			       config->fsname);
 }
 
-static struct ceph_mount_info *cephmount_mount_fs(const int snum)
+static int cephmount_update_conf(struct vfs_ceph_config *config,
+				 struct ceph_mount_info *mnt,
+				 const char *option,
+				 const char *value)
+{
+	DBG_DEBUG("[CEPH] calling ceph_conf_set: option='%s' value='%s'\n",
+		  option,
+		  value);
+
+	return config->ceph_conf_set_fn(mnt, option, value);
+}
+
+static struct ceph_mount_info *cephmount_mount_fs(
+	struct vfs_ceph_config *config)
 {
 	int ret;
 	char buf[256];
 	struct ceph_mount_info *mnt = NULL;
 	/* if config_file and/or user_id are NULL, ceph will use defaults */
-	const char *conf_file =
-	    lp_parm_const_string(snum, "ceph_new", "config_file", NULL);
-	const char *user_id =
-	    lp_parm_const_string(snum, "ceph_new", "user_id", NULL);
-	const char *fsname =
-	    lp_parm_const_string(snum, "ceph_new", "filesystem", NULL);
 
-	DBG_DEBUG("[CEPH] calling: ceph_create\n");
-	ret = ceph_create(&mnt, user_id);
+	DBG_DEBUG("[CEPH] calling ceph_create: user_id='%s'\n",
+		  (config->user_id != NULL) ? config->user_id : "");
+	ret = config->ceph_create_fn(&mnt, config->user_id);
 	if (ret) {
 		errno = -ret;
 		return NULL;
 	}
 
-	DBG_DEBUG("[CEPH] calling: ceph_conf_read_file with %s\n",
-		  (conf_file == NULL ? "default path" : conf_file));
-	ret = ceph_conf_read_file(mnt, conf_file);
+	DBG_DEBUG("[CEPH] calling ceph_conf_read_file: conf_file='%s'\n",
+		  (config->conf_file == NULL) ? "default path"
+					      : config->conf_file);
+	ret = config->ceph_conf_read_file_fn(mnt, config->conf_file);
 	if (ret) {
-		goto err_cm_release;
+		goto out;
 	}
 
-	DBG_DEBUG("[CEPH] calling: ceph_conf_get\n");
-	ret = ceph_conf_get(mnt, "log file", buf, sizeof(buf));
+	DBG_DEBUG("[CEPH] calling ceph_conf_get: option='%s'\n", "log_file");
+	ret = config->ceph_conf_get_fn(mnt, "log_file", buf, sizeof(buf));
 	if (ret < 0) {
-		goto err_cm_release;
+		goto out;
 	}
 
 	/* libcephfs disables POSIX ACL support by default, enable it... */
-	ret = ceph_conf_set(mnt, "client_acl_type", "posix_acl");
+	ret = cephmount_update_conf(config,
+				    mnt,
+				    "client_acl_type",
+				    "posix_acl");
 	if (ret < 0) {
-		goto err_cm_release;
+		goto out;
 	}
 	/* tell libcephfs to perform local permission checks */
-	ret = ceph_conf_set(mnt, "fuse_default_permissions", "false");
+	ret = cephmount_update_conf(config,
+				    mnt,
+				    "fuse_default_permissions",
+				    "false");
 	if (ret < 0) {
-		goto err_cm_release;
+		goto out;
 	}
 	/*
 	 * select a cephfs file system to use:
 	 * In ceph, multiple file system support has been stable since
 	 * 'pacific'. Permit different shares to access different file systems.
 	 */
-	if (fsname != NULL) {
-		ret = ceph_select_filesystem(mnt, fsname);
+	if (config->fsname != NULL) {
+		DBG_DEBUG("[CEPH] calling ceph_select_filesystem: "
+			  "fsname='%s'\n", config->fsname);
+		ret = config->ceph_select_filesystem_fn(mnt, config->fsname);
 		if (ret < 0) {
-			goto err_cm_release;
+			goto out;
 		}
 	}
 
-	DBG_DEBUG("[CEPH] calling: ceph_mount\n");
-	ret = ceph_mount(mnt, NULL);
-	if (ret >= 0) {
-		goto cm_done;
+	DBG_DEBUG("[CEPH] calling ceph_mount: mnt=%p\n", mnt);
+	ret = config->ceph_mount_fn(mnt, NULL);
+	if (ret < 0) {
+		goto out;
 	}
+	ret = 0;
 
-      err_cm_release:
-	ceph_release(mnt);
-	mnt = NULL;
-	DBG_DEBUG("[CEPH] Error mounting fs: %s\n", strerror(-ret));
-      cm_done:
-	/*
-	 * Handle the error correctly. Ceph returns -errno.
-	 */
-	if (ret) {
+out:
+	if (ret != 0) {
+		config->ceph_release_fn(mnt);
+		mnt = NULL;
+		DBG_ERR("[CEPH] mount failed: user_id='%s' fsname='%s' %s",
+			(config->user_id != NULL) ? config->user_id : "",
+			(config->fsname != NULL) ? config->fsname : "",
+			strerror(-ret));
 		errno = -ret;
+	} else {
+		DBG_DEBUG("[CEPH] mount done: user_id='%s' fsname='%s'",
+			  (config->user_id != NULL) ? config->user_id : "",
+			  (config->fsname != NULL) ? config->fsname : "");
 	}
 	return mnt;
 }
 
+#define CHECK_CEPH_FN(hnd, func) \
+	do { \
+		config->func ## _fn = dlsym(hnd, #func); \
+		if (config->func ## _fn == NULL) { \
+			if (dlclose(hnd)) { \
+				DBG_ERR("[CEPH] %s\n", dlerror()); \
+			} \
+			errno = ENOSYS; \
+			return false; \
+		} \
+	} while(0);
+
+static bool vfs_cephfs_load_lib(struct vfs_ceph_config *config)
+{
+	void *libhandle = NULL;
+	const char *libname = "libcephfs.so.2";
+	const char *libname_proxy = "libcephfs_proxy.so.2";
+
+	switch (config->proxy) {
+	case VFS_CEPHFS_PROXY_YES:
+	case VFS_CEPHFS_PROXY_AUTO:
+		libhandle = dlopen(libname_proxy, RTLD_NOW);
+		if (libhandle == NULL) {
+			if (config->proxy == VFS_CEPHFS_PROXY_YES) {
+				DBG_ERR("[CEPH] %s\n", dlerror());
+				return false;
+			}
+			DBG_DEBUG("[CEPH] %s, trying %s\n", dlerror(), libname);
+			FALL_THROUGH;
+		} else {
+			break;
+		}
+	case VFS_CEPHFS_PROXY_NO:
+	default:
+		libhandle = dlopen(libname, RTLD_LAZY);
+		if (libhandle == NULL) {
+			DBG_ERR("[CEPH] %s\n", dlerror());
+			return false;
+		}
+		break;
+	}
+
+	CHECK_CEPH_FN(libhandle, ceph_ll_lookup_inode);
+	CHECK_CEPH_FN(libhandle, ceph_ll_walk);
+	CHECK_CEPH_FN(libhandle, ceph_ll_getattr);
+	CHECK_CEPH_FN(libhandle, ceph_ll_setattr);
+	CHECK_CEPH_FN(libhandle, ceph_ll_releasedir);
+	CHECK_CEPH_FN(libhandle, ceph_ll_create);
+	CHECK_CEPH_FN(libhandle, ceph_ll_open);
+	CHECK_CEPH_FN(libhandle, ceph_ll_opendir);
+	CHECK_CEPH_FN(libhandle, ceph_ll_mkdir);
+	CHECK_CEPH_FN(libhandle, ceph_ll_rmdir);
+	CHECK_CEPH_FN(libhandle, ceph_ll_unlink);
+	CHECK_CEPH_FN(libhandle, ceph_ll_symlink);
+	CHECK_CEPH_FN(libhandle, ceph_ll_readlink);
+	CHECK_CEPH_FN(libhandle, ceph_ll_put);
+	CHECK_CEPH_FN(libhandle, ceph_ll_read);
+	CHECK_CEPH_FN(libhandle, ceph_ll_write);
+	CHECK_CEPH_FN(libhandle, ceph_ll_lseek);
+	CHECK_CEPH_FN(libhandle, ceph_ll_fsync);
+	CHECK_CEPH_FN(libhandle, ceph_ll_fallocate);
+	CHECK_CEPH_FN(libhandle, ceph_ll_link);
+	CHECK_CEPH_FN(libhandle, ceph_ll_rename);
+	CHECK_CEPH_FN(libhandle, ceph_ll_mknod);
+	CHECK_CEPH_FN(libhandle, ceph_ll_getxattr);
+	CHECK_CEPH_FN(libhandle, ceph_ll_setxattr);
+	CHECK_CEPH_FN(libhandle, ceph_ll_listxattr);
+	CHECK_CEPH_FN(libhandle, ceph_ll_removexattr);
+	CHECK_CEPH_FN(libhandle, ceph_ll_lookup);
+	CHECK_CEPH_FN(libhandle, ceph_ll_lookup_root);
+	CHECK_CEPH_FN(libhandle, ceph_ll_statfs);
+	CHECK_CEPH_FN(libhandle, ceph_ll_close);
+
+	CHECK_CEPH_FN(libhandle, ceph_chdir);
+	CHECK_CEPH_FN(libhandle, ceph_conf_get);
+	CHECK_CEPH_FN(libhandle, ceph_conf_read_file);
+	CHECK_CEPH_FN(libhandle, ceph_conf_set);
+	CHECK_CEPH_FN(libhandle, ceph_create);
+	CHECK_CEPH_FN(libhandle, ceph_getcwd);
+	CHECK_CEPH_FN(libhandle, ceph_init);
+	CHECK_CEPH_FN(libhandle, ceph_mount);
+	CHECK_CEPH_FN(libhandle, ceph_release);
+	CHECK_CEPH_FN(libhandle, ceph_select_filesystem);
+	CHECK_CEPH_FN(libhandle, ceph_unmount);
+	CHECK_CEPH_FN(libhandle, ceph_userperm_destroy);
+	CHECK_CEPH_FN(libhandle, ceph_userperm_new);
+	CHECK_CEPH_FN(libhandle, ceph_version);
+	CHECK_CEPH_FN(libhandle, ceph_readdir);
+	CHECK_CEPH_FN(libhandle, ceph_rewinddir);
+	CHECK_CEPH_FN(libhandle, ceph_readdir_r);
+
+	config->libhandle = libhandle;
+
+	return true;
+}
+
+static int vfs_ceph_config_destructor(struct vfs_ceph_config *config)
+{
+	if (config->libhandle) {
+		if (dlclose(config->libhandle)) {
+			DBG_ERR("[CEPH] %s\n", dlerror());
+		}
+	}
+
+	return 0;
+}
+
+static bool vfs_ceph_load_config(struct vfs_handle_struct *handle,
+				 struct vfs_ceph_config **config)
+{
+	struct vfs_ceph_config *config_tmp = NULL;
+	int snum = SNUM(handle->conn);
+	const char *module_name = "ceph_new";
+	bool ok;
+
+	if (SMB_VFS_HANDLE_TEST_DATA(handle)) {
+		SMB_VFS_HANDLE_GET_DATA(handle, config_tmp,
+					struct vfs_ceph_config,
+					return false);
+		goto done;
+	}
+
+	config_tmp = talloc_zero(handle->conn, struct vfs_ceph_config);
+	if (config_tmp == NULL) {
+		errno = ENOMEM;
+		return false;
+	}
+	talloc_set_destructor(config_tmp, vfs_ceph_config_destructor);
+
+	config_tmp->conf_file	= lp_parm_const_string(snum, module_name,
+						       "config_file", ".");
+	config_tmp->user_id	= lp_parm_const_string(snum, module_name,
+						       "user_id", "");
+	config_tmp->fsname	= lp_parm_const_string(snum, module_name,
+						       "filesystem", "");
+	config_tmp->proxy	= lp_parm_enum(snum, module_name, "proxy",
+					       enum_vfs_cephfs_proxy_vals,
+					       VFS_CEPHFS_PROXY_NO);
+	if (config_tmp->proxy == -1) {
+		DBG_ERR("[CEPH] value for proxy: mode unknown\n");
+		return false;
+	}
+
+	ok = vfs_cephfs_load_lib(config_tmp);
+	if (!ok) {
+		return false;
+	}
+
+	SMB_VFS_HANDLE_SET_DATA(handle, config_tmp, NULL,
+				struct vfs_ceph_config, return false);
+
+done:
+	*config = config_tmp;
+
+	return true;
+}
+
 /* Check for NULL pointer parameters in vfs_ceph_* functions */
 
 /* We don't want to have NULL function pointers lying around.  Someone
@@ -254,9 +523,17 @@ static int vfs_ceph_connect(struct vfs_h
 {
 	int ret = 0;
 	struct cephmount_cached *entry = NULL;
-	struct ceph_mount_info *cmount = NULL;
-	int snum = SNUM(handle->conn);
-	char *cookie = cephmount_get_cookie(handle, snum);
+	struct ceph_mount_info *mount = NULL;
+	char *cookie;
+	struct vfs_ceph_config *config = NULL;
+	bool ok;
+
+	ok = vfs_ceph_load_config(handle, &config);
+	if (!ok) {
+		return -1;
+	}
+
+	cookie = cephmount_get_cookie(handle, config);
 	if (cookie == NULL) {
 		return -1;
 	}
@@ -266,19 +543,25 @@ static int vfs_ceph_connect(struct vfs_h
 		goto connect_ok;
 	}
 
-	cmount = cephmount_mount_fs(snum);
-	if (cmount == NULL) {
+	mount = cephmount_mount_fs(config);
+	if (mount == NULL) {
 		ret = -1;
 		goto connect_fail;
 	}
-	ret = cephmount_cache_add(cookie, cmount, &entry);
-	if (ret != 0) {
+
+	ok = cephmount_cache_add(cookie, mount, &entry);
+	if (!ok) {
+		ret = -1;
 		goto connect_fail;
 	}
 
 connect_ok:
-	handle->data = entry;
-	DBG_WARNING("Connection established with the server: %s\n", cookie);
+	config->mount = entry->mount;
+	config->mount_entry = entry;
+	DBG_INFO("[CEPH] connection established with the server: "
+		 "snum=%d cookie='%s'\n",
+		 SNUM(handle->conn),
+		 cookie);
 
 	/*
 	 * Unless we have an async implementation of getxattrat turn this off.
@@ -289,53 +572,57 @@ connect_fail:
 	return ret;
 }
 
-static struct ceph_mount_info *cmount_of(const struct vfs_handle_struct *handle)
-{
-	const struct cephmount_cached *entry = handle->data;
-
-	return entry->mount;
-}
-
 static void vfs_ceph_disconnect(struct vfs_handle_struct *handle)
 {
-	struct ceph_mount_info *cmount = cmount_of(handle);
+	struct ceph_mount_info *mount = NULL;
 	int ret = 0;
+	struct vfs_ceph_config *config = NULL;
+
+	SMB_VFS_HANDLE_GET_DATA(handle, config, struct vfs_ceph_config, return);
+
+	mount = config->mount;
 
-	ret = cephmount_cache_remove(handle->data);
-	if (ret > 0) {
-		DBG_DEBUG("[CEPH] mount cache entry still in use\n");
+	if (!cephmount_cache_remove(config->mount_entry)) {
 		return;
 	}
 
-	ret = ceph_unmount(cmount);
+	ret = config->ceph_unmount_fn(mount);
 	if (ret < 0) {
-		DBG_ERR("[CEPH] failed to unmount: %s\n", strerror(-ret));
+		DBG_ERR("[CEPH] failed to unmount: snum=%d %s\n",
+			SNUM(handle->conn),
+			strerror(-ret));
 	}
 
-	ret = ceph_release(cmount);
+	ret = config->ceph_release_fn(mount);
 	if (ret < 0) {
-		DBG_ERR("[CEPH] failed to release: %s\n", strerror(-ret));
+		DBG_ERR("[CEPH] failed to release: snum=%d %s\n",
+			SNUM(handle->conn),
+			strerror(-ret));
 	}
-	handle->data = NULL;
+
+	config->mount_entry = NULL;
+
+	TALLOC_FREE(config);
 }
 
 /* Ceph user-credentials */
-static struct UserPerm *vfs_ceph_userperm_new(
-	const struct vfs_handle_struct *handle)
+static struct UserPerm *vfs_ceph_userperm_new(struct vfs_ceph_config *config,
+	struct connection_struct *conn)
 {
 	const struct security_unix_token *unix_token = NULL;
 
-	unix_token = get_current_utok(handle->conn);
-	return ceph_userperm_new(unix_token->uid,
-				 unix_token->gid,
-				 unix_token->ngroups,
-				 unix_token->groups);
+	unix_token = get_current_utok(conn);
+	return config->ceph_userperm_new_fn(unix_token->uid,
+					    unix_token->gid,
+					    unix_token->ngroups,
+					    unix_token->groups);
 }
 
-static void vfs_ceph_userperm_del(struct UserPerm *uperm)
+static void vfs_ceph_userperm_del(struct vfs_ceph_config *config,
+				  struct UserPerm *uperm)
 {
 	if (uperm != NULL) {
-		ceph_userperm_destroy(uperm);
+		config->ceph_userperm_destroy_fn(uperm);
 	}
 }
 
@@ -381,9 +668,12 @@ struct vfs_ceph_fh {
 	struct cephmount_cached *cme;
 	struct UserPerm *uperm;
 	struct files_struct *fsp;
+	struct vfs_ceph_config *config;
 	struct vfs_ceph_iref iref;
 	struct Fh *fh;
+	struct dirent *de;
 	int fd;
+	int o_flags;
 };
 
 static int cephmount_next_fd(struct cephmount_cached *cme)
@@ -400,25 +690,43 @@ static int cephmount_next_fd(struct ceph
 	return (int)next;
 }
 
+static struct dirent *vfs_ceph_get_fh_dirent(struct vfs_ceph_fh *cfh)
+{
+	if (cfh->de == NULL) {
+		cfh->de = talloc_zero_size(cfh->fsp, sizeof(*(cfh->de)));
+	}
+	return cfh->de;
+}
+
+static void vfs_ceph_put_fh_dirent(struct vfs_ceph_fh *cfh)
+{
+	if (cfh->de != NULL) {
+		TALLOC_FREE(cfh->de);
+		cfh->de = NULL;
+	}
+}
+
 static int vfs_ceph_release_fh(struct vfs_ceph_fh *cfh)
 {
 	int ret = 0;
 
 	if (cfh->fh != NULL) {
-		DBG_DEBUG("[ceph] ceph_ll_close: fd=%d\n", cfh->fd);
-		ret = ceph_ll_close(cfh->cme->mount, cfh->fh);
+		DBG_DEBUG("[CEPH] ceph_ll_close: fd=%d o_flags=0x%x\n",
+			  cfh->fd, cfh->o_flags);
+		ret = cfh->config->ceph_ll_close_fn(cfh->cme->mount, cfh->fh);
 		cfh->fh = NULL;
 	}
 	if (cfh->iref.inode != NULL) {
-		DBG_DEBUG("[ceph] ceph_ll_put: ino=%" PRIu64 "\n",
+		DBG_DEBUG("[CEPH] ceph_ll_put: ino=%" PRIu64 "\n",
 			  cfh->iref.ino);
-		ceph_ll_put(cfh->cme->mount, cfh->iref.inode);
+		cfh->config->ceph_ll_put_fn(cfh->cme->mount, cfh->iref.inode);
 		cfh->iref.inode = NULL;
 	}
 	if (cfh->uperm != NULL) {
-		vfs_ceph_userperm_del(cfh->uperm);
+		vfs_ceph_userperm_del(cfh->config, cfh->uperm);
 		cfh->uperm = NULL;
 	}
+	vfs_ceph_put_fh_dirent(cfh);
 	cfh->fd = -1;
 
 	return ret;
@@ -433,10 +741,16 @@ static int vfs_ceph_add_fh(struct vfs_ha
 			   files_struct *fsp,
 			   struct vfs_ceph_fh **out_cfh)
 {
-	struct cephmount_cached *cme = handle->data;
+	struct cephmount_cached *cme = NULL;
 	struct UserPerm *uperm = NULL;
+	struct vfs_ceph_config *config = NULL;
+
+	SMB_VFS_HANDLE_GET_DATA(handle, config, struct vfs_ceph_config,
+				return -ENOMEM);
 
-	uperm = vfs_ceph_userperm_new(handle);
+	cme = config->mount_entry;
+
+	uperm = vfs_ceph_userperm_new(config, handle->conn);
 	if (uperm == NULL) {
 		return -ENOMEM;
 	}
@@ -446,12 +760,13 @@ static int vfs_ceph_add_fh(struct vfs_ha
 					 struct vfs_ceph_fh,
 					 vfs_ceph_fsp_ext_destroy_cb);
 	if (*out_cfh == NULL) {
-		vfs_ceph_userperm_del(uperm);
+		vfs_ceph_userperm_del(config, uperm);
 		return -ENOMEM;
 	}
 	(*out_cfh)->cme = cme;
 	(*out_cfh)->uperm = uperm;
 	(*out_cfh)->fsp = fsp;
+	(*out_cfh)->config = config;
 	(*out_cfh)->fd = -1;
 	return 0;
 }
@@ -490,10 +805,14 @@ static int vfs_ceph_ll_lookup_inode(cons
 				    Inode **pout)
 {
 	struct inodeno_t ino = {.val = inoval};
+	struct vfs_ceph_config *config = NULL;
+
+	SMB_VFS_HANDLE_GET_DATA(handle, config, struct vfs_ceph_config,
+				return -ENOMEM);
 
-	DBG_DEBUG("[ceph] ceph_ll_lookup_inode: ino=%" PRIu64 "\n", inoval);
+	DBG_DEBUG("[CEPH] ceph_ll_lookup_inode: ino=%" PRIu64 "\n", inoval);
 
-	return ceph_ll_lookup_inode(cmount_of(handle), ino, pout);
+	return config->ceph_ll_lookup_inode_fn(config->mount, ino, pout);
 }
 
 static int vfs_ceph_ll_walk(const struct vfs_handle_struct *handle,
@@ -505,23 +824,28 @@ static int vfs_ceph_ll_walk(const struct
 {
 	struct UserPerm *uperm = NULL;
 	int ret = -1;
+	struct vfs_ceph_config *config = NULL;
+
+	SMB_VFS_HANDLE_GET_DATA(handle, config, struct vfs_ceph_config,
+				return -ENOMEM);
 
-	DBG_DEBUG("[ceph] ceph_ll_walk: name=%s\n", name);
+	DBG_DEBUG("[CEPH] ceph_ll_walk: name=%s\n", name);
 
-	uperm = vfs_ceph_userperm_new(handle);
+	uperm = vfs_ceph_userperm_new(config, handle->conn);
 	if (uperm == NULL) {
 		return -ENOMEM;
 	}
 
-	ret = ceph_ll_walk(cmount_of(handle),
-			   name,
-			   pin,
-			   stx,
-			   want,
-			   flags,
-			   uperm);
+	ret = config->ceph_ll_walk_fn(config->mount,
+				      name,
+				      pin,
+				      stx,
+				      want,
+				      flags,
+				      uperm);
 
-	vfs_ceph_userperm_del(uperm);
+	vfs_ceph_userperm_del(config, uperm);
+	DBG_DEBUG("[CEPH] ceph_ll_walk: name=%s ret=%d\n", name, ret);
 	return ret;
 }
 
@@ -529,9 +853,14 @@ static int vfs_ceph_ll_statfs(const stru
 			      const struct vfs_ceph_iref *iref,
 			      struct statvfs *stbuf)
 {
-	DBG_DEBUG("[ceph] ceph_ll_statfs: ino=%" PRIu64 "\n", iref->ino);
+	struct vfs_ceph_config *config = NULL;
+
+	SMB_VFS_HANDLE_GET_DATA(handle, config, struct vfs_ceph_config,
+				return -ENOMEM);
+
+	DBG_DEBUG("[CEPH] ceph_ll_statfs: ino=%" PRIu64 "\n", iref->ino);
 
-	return ceph_ll_statfs(cmount_of(handle), iref->inode, stbuf);
+	return config->ceph_ll_statfs_fn(config->mount, iref->inode, stbuf);
 }
 
 static int vfs_ceph_ll_getattr2(const struct vfs_handle_struct *handle,
@@ -541,18 +870,24 @@ static int vfs_ceph_ll_getattr2(const st
 {
 	struct ceph_statx stx = {0};
 	int ret = -1;
+	struct vfs_ceph_config *config = NULL;
 
-	DBG_DEBUG("[ceph] ceph_ll_getattr: ino=%" PRIu64 "\n", iref->ino);
+	SMB_VFS_HANDLE_GET_DATA(handle, config, struct vfs_ceph_config,
+				return -ENOMEM);
 
-	ret = ceph_ll_getattr(cmount_of(handle),
-			      iref->inode,
-			      &stx,
-			      SAMBA_STATX_ATTR_MASK,
-			      0,
-			      uperm);
+	DBG_DEBUG("[CEPH] ceph_ll_getattr: ino=%" PRIu64 "\n", iref->ino);
+
+	ret = config->ceph_ll_getattr_fn(config->mount,
+					 iref->inode,
+					 &stx,
+					 SAMBA_STATX_ATTR_MASK,
+					 0,
+					 uperm);
 	if (ret == 0) {
 		smb_stat_from_ceph_statx(st, &stx);
 	}
+	DBG_DEBUG("[CEPH] ceph_ll_getattr: ino=%" PRIu64 "ret=%d\n",
+					iref->ino, ret);
 	return ret;
 }
 
@@ -562,13 +897,18 @@ static int vfs_ceph_ll_getattr(const str
 {
 	struct UserPerm *uperm = NULL;
 	int ret = -1;
+	struct vfs_ceph_config *config = NULL;
+
+	SMB_VFS_HANDLE_GET_DATA(handle, config,
+				struct vfs_ceph_config,
+				return -ENOMEM);
 
-	uperm = vfs_ceph_userperm_new(handle);
+	uperm = vfs_ceph_userperm_new(config, handle->conn);
 	if (uperm == NULL) {
 		return -ENOMEM;
 	}
 	ret = vfs_ceph_ll_getattr2(handle, iref, uperm, st);
-	vfs_ceph_userperm_del(uperm);
+	vfs_ceph_userperm_del(config, uperm);
 	return ret;
 }
 
@@ -580,20 +920,25 @@ static int vfs_ceph_ll_chown(struct vfs_
 	struct ceph_statx stx = {.stx_uid = uid, .stx_gid = gid};
 	struct UserPerm *uperm = NULL;
 	int ret = -1;
+	struct vfs_ceph_config *config = NULL;
+
+	SMB_VFS_HANDLE_GET_DATA(handle, config, struct vfs_ceph_config,
+				return -ENOMEM);
 
-	DBG_DEBUG("[ceph] ceph_ll_setattr: ino=%" PRIu64 " uid=%u gid=%u\n",
+	DBG_DEBUG("[CEPH] ceph_ll_setattr: ino=%" PRIu64 " uid=%u gid=%u\n",
 		  iref->ino, uid, gid);
 
-	uperm = vfs_ceph_userperm_new(handle);
+	uperm = vfs_ceph_userperm_new(config, handle->conn);
 	if (uperm == NULL) {
 		return -ENOMEM;
 	}
-	ret = ceph_ll_setattr(cmount_of(handle),
-			      iref->inode,
-			      &stx,
-			      CEPH_STATX_UID | CEPH_STATX_GID,
-			      uperm);
-	vfs_ceph_userperm_del(uperm);
+	ret = config->ceph_ll_setattr_fn(config->mount,
+					 iref->inode,
+					 &stx,
+					 CEPH_STATX_UID | CEPH_STATX_GID,
+					 uperm);
+	vfs_ceph_userperm_del(config, uperm);
+	DBG_DEBUG("[CEPH] ceph_ll_setattr: ret=%d\n", ret);
 	return ret;
 }
 
@@ -603,15 +948,19 @@ static int vfs_ceph_ll_fchown(struct vfs
 			      gid_t gid)
 {
 	struct ceph_statx stx = {.stx_uid = uid, .stx_gid = gid};
+	struct vfs_ceph_config *config = NULL;
 
-	DBG_DEBUG("[ceph] ceph_ll_setattr: ino=%" PRIu64 " uid=%u gid=%u\n",
+	SMB_VFS_HANDLE_GET_DATA(handle, config, struct vfs_ceph_config,
+				return -ENOMEM);
+
+	DBG_DEBUG("[CEPH] ceph_ll_setattr: ino=%" PRIu64 " uid=%u gid=%u\n",
 		  cfh->iref.ino, uid, gid);
 
-	return ceph_ll_setattr(cmount_of(handle),
-			       cfh->iref.inode,
-			       &stx,
-			       CEPH_STATX_UID | CEPH_STATX_GID,
-			       cfh->uperm);
+	return config->ceph_ll_setattr_fn(config->mount,
+					  cfh->iref.inode,
+					  &stx,
+					  CEPH_STATX_UID | CEPH_STATX_GID,
+					  cfh->uperm);
 }
 
 static int vfs_ceph_ll_fchmod(struct vfs_handle_struct *handle,
@@ -619,15 +968,19 @@ static int vfs_ceph_ll_fchmod(struct vfs
 			      mode_t mode)
 {
 	struct ceph_statx stx = {.stx_mode = mode};
+	struct vfs_ceph_config *config = NULL;
+
+	SMB_VFS_HANDLE_GET_DATA(handle, config, struct vfs_ceph_config,
+				return -ENOMEM);
 
-	DBG_DEBUG("[ceph] ceph_ll_setattr: ino=%" PRIu64 " mode=%o\n",
+	DBG_DEBUG("[CEPH] ceph_ll_setattr: ino=%" PRIu64 " mode=%o\n",
 		  cfh->iref.ino, mode);
 
-	return ceph_ll_setattr(cmount_of(handle),
-			       cfh->iref.inode,
-			       &stx,
-			       CEPH_STATX_MODE,
-			       cfh->uperm);
+	return config->ceph_ll_setattr_fn(config->mount,
+					  cfh->iref.inode,
+					  &stx,
+					  CEPH_STATX_MODE,
+					  cfh->uperm);
 }
 
 static int vfs_ceph_ll_futimes(struct vfs_handle_struct *handle,
@@ -636,6 +989,10 @@ static int vfs_ceph_ll_futimes(struct vf
 {
 	struct ceph_statx stx = {0};
 	int mask = 0;
+	struct vfs_ceph_config *config = NULL;
+
+	SMB_VFS_HANDLE_GET_DATA(handle, config, struct vfs_ceph_config,
+				return -ENOMEM);
 
 	if (!is_omit_timespec(&ft->atime)) {
 		stx.stx_atime = ft->atime;
@@ -657,7 +1014,7 @@ static int vfs_ceph_ll_futimes(struct vf
 		return 0;
 	}
 
-	DBG_DEBUG("[ceph] ceph_ll_setattr: ino=%" PRIu64 " mtime=%" PRIu64
+	DBG_DEBUG("[CEPH] ceph_ll_setattr: ino=%" PRIu64 " mtime=%" PRIu64
 		  " atime=%" PRIu64 " ctime=%" PRIu64 " btime=%" PRIu64 "\n",
 		  cfh->iref.ino,
 		  full_timespec_to_nt_time(&stx.stx_mtime),
@@ -665,20 +1022,25 @@ static int vfs_ceph_ll_futimes(struct vf
 		  full_timespec_to_nt_time(&stx.stx_ctime),
 		  full_timespec_to_nt_time(&stx.stx_btime));
 
-	return ceph_ll_setattr(cmount_of(handle),
-			       cfh->iref.inode,
-			       &stx,
-			       mask,
-			       cfh->uperm);
+	return config->ceph_ll_setattr_fn(config->mount,
+					  cfh->iref.inode,
+					  &stx,
+					  mask,
+					  cfh->uperm);
 }
 
 static int vfs_ceph_ll_releasedir(const struct vfs_handle_struct *handle,
 				  const struct vfs_ceph_fh *dircfh)
 {
-	DBG_DEBUG("[ceph] ceph_ll_releasedir: ino=%" PRIu64 " fd=%d\n",
+	struct vfs_ceph_config *config = NULL;
+
+	SMB_VFS_HANDLE_GET_DATA(handle, config, struct vfs_ceph_config,
+				return -ENOMEM);
+
+	DBG_DEBUG("[CEPH] ceph_ll_releasedir: ino=%" PRIu64 " fd=%d\n",
 		  dircfh->iref.ino, dircfh->fd);
 
-	return ceph_ll_releasedir(cmount_of(handle), dircfh->dirp.cdr);
+	return config->ceph_ll_releasedir_fn(config->mount, dircfh->dirp.cdr);
 }
 
 static int vfs_ceph_ll_create(const struct vfs_handle_struct *handle,
@@ -692,22 +1054,29 @@ static int vfs_ceph_ll_create(const stru
 	struct Inode *inode = NULL;
 	struct Fh *fh = NULL;
 	int ret = -1;
+	struct vfs_ceph_config *config = NULL;
 
-	DBG_DEBUG("[ceph] ceph_ll_create: parent-ino=%" PRIu64 " name=%s "
+	SMB_VFS_HANDLE_GET_DATA(handle, config, struct vfs_ceph_config,
+				return -ENOMEM);
+
+	DBG_DEBUG("[CEPH] ceph_ll_create: parent-ino=%" PRIu64 " name=%s "
 		  "mode=%o\n", parent->ino, name, mode);
 
-	ret = ceph_ll_create(cmount_of(handle),
-			     parent->inode,
-			     name,
-			     mode,
-			     oflags,
-			     &inode,
-			     &fh,
-			     &stx,
-			     CEPH_STATX_INO,
-			     0,
-			     cfh->uperm);
+	ret = config->ceph_ll_create_fn(config->mount,
+					parent->inode,
+					name,
+					mode,
+					oflags,
+					&inode,
+					&fh,
+					&stx,
+					CEPH_STATX_INO,
+					0,
+					cfh->uperm);
 	if (ret != 0) {
+		DBG_ERR("[CEPH] Error occurred while creating a file:"
+				" name=%s mode=%o ret=%d\n",
+				name, mode, ret);
 		return ret;
 	}
 
@@ -715,6 +1084,7 @@ static int vfs_ceph_ll_create(const stru
 	cfh->iref.ino = (long)stx.stx_ino;
 	cfh->iref.owner = true;
 	cfh->fh = fh;
+	cfh->o_flags = oflags;
 	vfs_ceph_assign_fh_fd(cfh);
 
 	return 0;
@@ -729,63 +1099,112 @@ static int vfs_ceph_ll_lookup(const stru
 	struct Inode *inode = NULL;
 	struct UserPerm *uperm = NULL;
 	int ret = -1;
+	struct vfs_ceph_config *config = NULL;
+
+	SMB_VFS_HANDLE_GET_DATA(handle, config, struct vfs_ceph_config,
+				return -ENOMEM);
 
-	DBG_DEBUG("[ceph] ceph_ll_lookup: parent-ino=%" PRIu64 " name=%s\n",
+	DBG_DEBUG("[CEPH] ceph_ll_lookup: parent-ino=%" PRIu64 " name=%s\n",
 		  parent->ino, name);
 
-	uperm = vfs_ceph_userperm_new(handle);
+	uperm = vfs_ceph_userperm_new(config, handle->conn);
 	if (uperm == NULL) {
-		return -ENOMEM;
+		ret = -ENOMEM;
+		goto out;
 	}
-	ret = ceph_ll_lookup(cmount_of(handle),
-			     parent->inode,
-			     name,
-			     &inode,
-			     &stx,
-			     CEPH_STATX_INO,
-			     0,
-			     uperm);
+	ret = config->ceph_ll_lookup_fn(config->mount,
+					parent->inode,
+					name,
+					&inode,
+					&stx,
+					CEPH_STATX_INO,
+					0,
+					uperm);
 
-	vfs_ceph_userperm_del(uperm);
+	vfs_ceph_userperm_del(config, uperm);
 	if (ret != 0) {
-		return ret;
+		goto out;
 	}
 
 	iref->inode = inode;
 	iref->ino = stx.stx_ino;
 	iref->owner = true;
-	return 0;
+out:
+	DBG_DEBUG("[CEPH] ceph_ll_lookup: parent-ino=%" PRIu64 " name=%s ret=%d\n",
+		parent->ino, name, ret);
+	return ret;
 }
 
-static int vfs_ceph_ll_lookupat(const struct vfs_handle_struct *handle,
-				const struct vfs_ceph_fh *parent_fh,
-				const char *name,
-				struct vfs_ceph_iref *iref)
+static int vfs_ceph_ll_lookup2(const struct vfs_handle_struct *handle,
+			       const struct vfs_ceph_fh *parent_fh,
+			       const char *name,
+			       unsigned want,
+			       struct vfs_ceph_iref *iref,
+			       struct ceph_statx *stx)
 {
-	struct ceph_statx stx = {.stx_ino = 0};
 	struct Inode *inode = NULL;
 	int ret = -1;
+	struct vfs_ceph_config *config = NULL;
+
+	SMB_VFS_HANDLE_GET_DATA(handle, config, struct vfs_ceph_config,
+				return -ENOMEM);
 
-	DBG_DEBUG("[ceph] ceph_ll_lookup: parent-ino=%" PRIu64 " name=%s\n",
+	DBG_DEBUG("[CEPH] ceph_ll_lookup: parent-ino=%" PRIu64 " name=%s\n",
 		  parent_fh->iref.ino, name);
 
-	ret = ceph_ll_lookup(cmount_of(handle),
-			     parent_fh->iref.inode,
-			     name,
-			     &inode,
-			     &stx,
-			     CEPH_STATX_INO,
-			     0,
-			     parent_fh->uperm);
+	ret = config->ceph_ll_lookup_fn(config->mount,
+					parent_fh->iref.inode,
+					name,
+					&inode,
+					stx,
+					want | CEPH_STATX_INO,
+					0,
+					parent_fh->uperm);
 	if (ret != 0) {
 		return ret;
 	}
 	iref->inode = inode;
-	iref->ino = stx.stx_ino;
+	iref->ino = stx->stx_ino;
 	iref->owner = true;
 	return 0;
 }
 
+static int vfs_ceph_ll_lookupat(const struct vfs_handle_struct *handle,
+				const struct vfs_ceph_fh *parent_fh,
+				const char *name,
+				struct vfs_ceph_iref *iref)
+{
+	struct ceph_statx stx = {.stx_ino = 0};
+
+	return vfs_ceph_ll_lookup2(handle,
+				   parent_fh,
+				   name,
+				   CEPH_STATX_INO,
+				   iref,
+				   &stx);
+}
+
+static int vfs_ceph_ll_lookupat2(const struct vfs_handle_struct *handle,
+				 const struct vfs_ceph_fh *parent_fh,
+				 const char *name,
+				 struct vfs_ceph_iref *iref,
+				 SMB_STRUCT_STAT *st)
+{
+	struct ceph_statx stx = {.stx_ino = 0};
+	int ret;
+
+	ret = vfs_ceph_ll_lookup2(handle,
+				  parent_fh,
+				  name,
+				  CEPH_STATX_ALL_STATS,
+				  iref,
+				  &stx);
+	if (ret == 0) {
+		smb_stat_from_ceph_statx(st, &stx);
+	}
+	return ret;
+}
+
 static int vfs_ceph_ll_open(const struct vfs_handle_struct *handle,
 			    struct vfs_ceph_fh *cfh,
 			    int flags)
@@ -793,13 +1212,19 @@ static int vfs_ceph_ll_open(const struct
 	struct Inode *in = cfh->iref.inode;
 	struct Fh *fh = NULL;
 	int ret = -1;
+	struct vfs_ceph_config *config = NULL;
+
+	SMB_VFS_HANDLE_GET_DATA(handle, config, struct vfs_ceph_config,
+				return -ENOMEM);
 
-	DBG_DEBUG("[ceph] ceph_ll_open: ino=%" PRIu64 " flags=0x%x\n",
+	DBG_DEBUG("[CEPH] ceph_ll_open: ino=%" PRIu64 " flags=0x%x\n",
 		  cfh->iref.ino, flags);
 
-	ret = ceph_ll_open(cmount_of(handle), in, flags, &fh, cfh->uperm);
+	ret = config->ceph_ll_open_fn(config->mount, in, flags, &fh,
+				      cfh->uperm);
 	if (ret == 0) {
 		cfh->fh = fh;
+		cfh->o_flags = flags;
 		vfs_ceph_assign_fh_fd(cfh);
 	}
 	return ret;
@@ -808,30 +1233,46 @@ static int vfs_ceph_ll_open(const struct
 static int vfs_ceph_ll_opendir(const struct vfs_handle_struct *handle,
 			       struct vfs_ceph_fh *cfh)
 {
-	DBG_DEBUG("[ceph] ceph_ll_opendir: ino=%" PRIu64 "\n", cfh->iref.ino);
+	struct vfs_ceph_config *config = NULL;
+
+	SMB_VFS_HANDLE_GET_DATA(handle, config, struct vfs_ceph_config,
+				return -ENOMEM);
+
+	DBG_DEBUG("[CEPH] ceph_ll_opendir: ino=%" PRIu64 "\n", cfh->iref.ino);
 
-	return ceph_ll_opendir(cmount_of(handle),
-			       cfh->iref.inode,
-			       &cfh->dirp.cdr,
-			       cfh->uperm);
+	return config->ceph_ll_opendir_fn(config->mount,
+					  cfh->iref.inode,
+					  &cfh->dirp.cdr,
+					  cfh->uperm);
 }
 
-static struct dirent *vfs_ceph_ll_readdir(const struct vfs_handle_struct *hndl,
-					  const struct vfs_ceph_fh *dircfh)
+static int vfs_ceph_ll_readdir(const struct vfs_handle_struct *hndl,
+			       const struct vfs_ceph_fh *dircfh)
 {
-	DBG_DEBUG("[ceph] ceph_readdir: ino=%" PRIu64 " fd=%d\n",
+	struct vfs_ceph_config *config = NULL;
+
+	SMB_VFS_HANDLE_GET_DATA(hndl, config, struct vfs_ceph_config,
+				return -ENOMEM);
+
+	DBG_DEBUG("[CEPH] ceph_readdir: ino=%" PRIu64 " fd=%d\n",
 		  dircfh->iref.ino, dircfh->fd);
 
-	return ceph_readdir(cmount_of(hndl), dircfh->dirp.cdr);
+	return config->ceph_readdir_r_fn(config->mount,
+					 dircfh->dirp.cdr,
+					 dircfh->de);
 }
 
 static void vfs_ceph_ll_rewinddir(const struct vfs_handle_struct *handle,
 				  const struct vfs_ceph_fh *dircfh)
 {
-	DBG_DEBUG("[ceph] ceph_rewinddir: ino=%" PRIu64 " fd=%d\n",
+	struct vfs_ceph_config *config = NULL;
+
+	SMB_VFS_HANDLE_GET_DATA(handle, config, struct vfs_ceph_config, return);
+
+	DBG_DEBUG("[CEPH] ceph_rewinddir: ino=%" PRIu64 " fd=%d\n",
 		  dircfh->iref.ino, dircfh->fd);
 
-	ceph_rewinddir(cmount_of(handle), dircfh->dirp.cdr);
+	config->ceph_rewinddir_fn(config->mount, dircfh->dirp.cdr);
 }
 
 static int vfs_ceph_ll_mkdirat(const struct vfs_handle_struct *handle,
@@ -843,52 +1284,68 @@ static int vfs_ceph_ll_mkdirat(const str
 	struct ceph_statx stx = {.stx_ino = 0};
 	struct Inode *inode = NULL;
 	int ret = -1;
+	struct vfs_ceph_config *config = NULL;
+
+	SMB_VFS_HANDLE_GET_DATA(handle, config, struct vfs_ceph_config,
+				return -ENOMEM);
 
-	DBG_DEBUG("[ceph] ceph_ll_mkdir: parent-ino=%" PRIu64 " name=%s "
+	DBG_DEBUG("[CEPH] ceph_ll_mkdir: parent-ino=%" PRIu64 " name=%s "
 		  "mode=%o\n", dircfh->iref.ino, name, mode);
 
-	ret = ceph_ll_mkdir(cmount_of(handle),
-			    dircfh->iref.inode,
-			    name,
-			    mode,
-			    &inode,
-			    &stx,
-			    CEPH_STATX_INO,
-			    0,
-			    dircfh->uperm);
+	ret = config->ceph_ll_mkdir_fn(config->mount,
+				       dircfh->iref.inode,
+				       name,
+				       mode,
+				       &inode,
+				       &stx,
+				       CEPH_STATX_INO,
+				       0,
+				       dircfh->uperm);
 	if (ret != 0) {
+		DBG_ERR("[CEPH] error occurred while creating dir: "
+				"name=%s mode=%o ret=%d\n", name, mode, ret);
 		return ret;
 	}
 	iref->inode = inode;
 	iref->ino = stx.stx_ino;
 	iref->owner = true;
-	return false;
+	return ret;
 }
 
 static int vfs_ceph_ll_rmdir(const struct vfs_handle_struct *handle,
 			     const struct vfs_ceph_fh *dircfh,
 			     const char *name)
 {
-	DBG_DEBUG("[ceph] ceph_ll_rmdir: parent-ino=%" PRIu64 " name=%s\n",
+	struct vfs_ceph_config *config = NULL;
+
+	SMB_VFS_HANDLE_GET_DATA(handle, config, struct vfs_ceph_config,
+				return -ENOMEM);
+
+	DBG_DEBUG("[CEPH] ceph_ll_rmdir: parent-ino=%" PRIu64 " name=%s\n",
 		  dircfh->iref.ino, name);
 
-	return ceph_ll_rmdir(cmount_of(handle),
-			     dircfh->iref.inode,
-			     name,
-			     dircfh->uperm);
+	return config->ceph_ll_rmdir_fn(config->mount,
+					dircfh->iref.inode,
+					name,
+					dircfh->uperm);
 }
 
 static int vfs_ceph_ll_unlinkat(const struct vfs_handle_struct *handle,
 				const struct vfs_ceph_fh *dircfh,
 				const char *name)
 {
-	DBG_DEBUG("[ceph] ceph_ll_unlink: parent-ino=%" PRIu64 " name=%s\n",
+	struct vfs_ceph_config *config = NULL;
+
+	SMB_VFS_HANDLE_GET_DATA(handle, config, struct vfs_ceph_config,
+				return -ENOMEM);
+
+	DBG_DEBUG("[CEPH] ceph_ll_unlink: parent-ino=%" PRIu64 " name=%s\n",
 		  dircfh->iref.ino, name);
 
-	return ceph_ll_unlink(cmount_of(handle),
-			      dircfh->iref.inode,
-			      name,
-			      dircfh->uperm);
+	return config->ceph_ll_unlink_fn(config->mount,
+					 dircfh->iref.inode,
+					 name,
+					 dircfh->uperm);
 }
 
 static int vfs_ceph_ll_symlinkat(const struct vfs_handle_struct *handle,
@@ -900,19 +1357,23 @@ static int vfs_ceph_ll_symlinkat(const s
 	struct ceph_statx stx = {.stx_ino = 0};
 	struct Inode *inode = NULL;
 	int ret = -1;
+	struct vfs_ceph_config *config = NULL;
 
-	DBG_DEBUG("[ceph] ceph_ll_symlink: parent-ino=%" PRIu64 " name=%s\n",
+	SMB_VFS_HANDLE_GET_DATA(handle, config, struct vfs_ceph_config,
+				return -ENOMEM);
+
+	DBG_DEBUG("[CEPH] ceph_ll_symlink: parent-ino=%" PRIu64 " name=%s\n",
 		  dircfh->iref.ino, name);
 
-	ret = ceph_ll_symlink(cmount_of(handle),
-			      dircfh->iref.inode,
-			      name,
-			      value,
-			      &inode,
-			      &stx,
-			      CEPH_STATX_INO,
-			      0,
-			      dircfh->uperm);
+	ret = config->ceph_ll_symlink_fn(config->mount,
+					 dircfh->iref.inode,
+					 name,
+					 value,
+					 &inode,
+					 &stx,
+					 CEPH_STATX_INO,
+					 0,
+					 dircfh->uperm);
 	if (ret != 0) {
 		return ret;
 	}
@@ -928,13 +1389,18 @@ static int vfs_ceph_ll_readlinkat(const
 				  char *buf,
 				  size_t bsz)
 {
-	DBG_DEBUG("[ceph] ceph_ll_readlink: ino=%" PRIu64 "\n", iref->ino);
+	struct vfs_ceph_config *config = NULL;
+
+	SMB_VFS_HANDLE_GET_DATA(handle, config, struct vfs_ceph_config,
+				return -ENOMEM);
+
+	DBG_DEBUG("[CEPH] ceph_ll_readlink: ino=%" PRIu64 "\n", iref->ino);
 
-	return ceph_ll_readlink(cmount_of(handle),
-				iref->inode,
-				buf,
-				bsz,
-				dircfh->uperm);
+	return config->ceph_ll_readlink_fn(config->mount,
+					   iref->inode,
+					   buf,
+					   bsz,
+					   dircfh->uperm);
 }
 
 static int vfs_ceph_ll_read(const struct vfs_handle_struct *handle,
@@ -943,10 +1409,15 @@ static int vfs_ceph_ll_read(const struct
 			    uint64_t len,
 			    char *buf)
 {
-	DBG_DEBUG("[ceph] ceph_ll_read: ino=%" PRIu64 " fd=%d off=%jd "
+	struct vfs_ceph_config *config = NULL;
+
+	SMB_VFS_HANDLE_GET_DATA(handle, config, struct vfs_ceph_config,
+				return -ENOMEM);
+
+	DBG_DEBUG("[CEPH] ceph_ll_read: ino=%" PRIu64 " fd=%d off=%jd "
 		  "len=%ju\n", cfh->iref.ino, cfh->fd, off, len);
 
-	return ceph_ll_read(cmount_of(handle), cfh->fh, off, len, buf);
+	return config->ceph_ll_read_fn(config->mount, cfh->fh, off, len, buf);
 }
 
 static int vfs_ceph_ll_write(const struct vfs_handle_struct *handle,
@@ -955,10 +1426,15 @@ static int vfs_ceph_ll_write(const struc
 			     uint64_t len,
 			     const char *data)
 {
-	DBG_DEBUG("[ceph] ceph_ll_write: ino=%" PRIu64 " fd=%d off=%jd "
+	struct vfs_ceph_config *config = NULL;
+
+	SMB_VFS_HANDLE_GET_DATA(handle, config, struct vfs_ceph_config,
+				return -ENOMEM);
+
+	DBG_DEBUG("[CEPH] ceph_ll_write: ino=%" PRIu64 " fd=%d off=%jd "
 		  "len=%ju\n", cfh->iref.ino, cfh->fd, off, len);
 
-	return ceph_ll_write(cmount_of(handle), cfh->fh, off, len, data);
+	return config->ceph_ll_write_fn(config->mount, cfh->fh, off, len, data);
 }
 
 static off_t vfs_ceph_ll_lseek(const struct vfs_handle_struct *handle,
@@ -966,20 +1442,30 @@ static off_t vfs_ceph_ll_lseek(const str
 			       off_t offset,
 			       int whence)
 {
-	DBG_DEBUG("[ceph] ceph_ll_lseek: ino=%" PRIu64 " fd=%d offset=%jd "
+	struct vfs_ceph_config *config = NULL;
+
+	SMB_VFS_HANDLE_GET_DATA(handle, config, struct vfs_ceph_config,
+				return -ENOMEM);
+
+	DBG_DEBUG("[CEPH] ceph_ll_lseek: ino=%" PRIu64 " fd=%d offset=%jd "
 		  "whence=%d\n", cfh->iref.ino, cfh->fd, offset, whence);
 
-	return ceph_ll_lseek(cmount_of(handle), cfh->fh, offset, whence);
+	return config->ceph_ll_lseek_fn(config->mount, cfh->fh, offset, whence);
 }
 
 static int vfs_ceph_ll_fsync(const struct vfs_handle_struct *handle,
 			     const struct vfs_ceph_fh *cfh,
 			     int syncdataonly)
 {
-	DBG_DEBUG("[ceph] ceph_ll_fsync: ino=%" PRIu64 " fd=%d "
+	struct vfs_ceph_config *config = NULL;
+
+	SMB_VFS_HANDLE_GET_DATA(handle, config, struct vfs_ceph_config,
+				return -ENOMEM);
+
+	DBG_DEBUG("[CEPH] ceph_ll_fsync: ino=%" PRIu64 " fd=%d "
 		  "syncdataonly=%d\n", cfh->iref.ino, cfh->fd, syncdataonly);
 
-	return ceph_ll_fsync(cmount_of(handle), cfh->fh, syncdataonly);
+	return config->ceph_ll_fsync_fn(config->mount, cfh->fh, syncdataonly);
 }
 
 static int vfs_ceph_ll_ftruncate(struct vfs_handle_struct *handle,
@@ -987,15 +1473,19 @@ static int vfs_ceph_ll_ftruncate(struct
 				 int64_t size)
 {
 	struct ceph_statx stx = {.stx_size = (uint64_t)size};
+	struct vfs_ceph_config *config = NULL;
 
-	DBG_DEBUG("[ceph] ceph_ll_setattr: ino=%" PRIu64 " fd=%d size=%jd\n",
+	SMB_VFS_HANDLE_GET_DATA(handle, config, struct vfs_ceph_config,
+				return -ENOMEM);
+
+	DBG_DEBUG("[CEPH] ceph_ll_setattr: ino=%" PRIu64 " fd=%d size=%jd\n",
 		  cfh->iref.ino, cfh->fd, size);
 
-	return ceph_ll_setattr(cmount_of(handle),
-			       cfh->iref.inode,
-			       &stx,
-			       CEPH_SETATTR_SIZE,
-			       cfh->uperm);
+	return config->ceph_ll_setattr_fn(config->mount,
+					  cfh->iref.inode,
+					  &stx,
+					  CEPH_SETATTR_SIZE,
+					  cfh->uperm);
 }
 
 static int vfs_ceph_ll_fallocate(const struct vfs_handle_struct *handle,
@@ -1004,10 +1494,16 @@ static int vfs_ceph_ll_fallocate(const s
 				 int64_t off,
 				 int64_t len)
 {
-	DBG_DEBUG("[ceph] ceph_ll_fallocate: ino=%" PRIu64 " fd=%d off=%jd "
+	struct vfs_ceph_config *config = NULL;
+
+	SMB_VFS_HANDLE_GET_DATA(handle, config, struct vfs_ceph_config,
+				return -ENOMEM);
+
+	DBG_DEBUG("[CEPH] ceph_ll_fallocate: ino=%" PRIu64 " fd=%d off=%jd "
 		  "len=%jd\n", cfh->iref.ino, cfh->fd, off, len);
 
-	return ceph_ll_fallocate(cmount_of(handle), cfh->fh, mode, off, len);
+	return config->ceph_ll_fallocate_fn(config->mount, cfh->fh,
+					    mode, off, len);
 }
 
 static int vfs_ceph_ll_link(const struct vfs_handle_struct *handle,
@@ -1015,14 +1511,19 @@ static int vfs_ceph_ll_link(const struct
 			    const char *name,
 			    const struct vfs_ceph_iref *iref)
 {
-	DBG_DEBUG("[ceph] ceph_ll_link: parent-ino=%" PRIu64 " name=%s\n",
+	struct vfs_ceph_config *config = NULL;
+
+	SMB_VFS_HANDLE_GET_DATA(handle, config, struct vfs_ceph_config,
+				return -ENOMEM);
+
+	DBG_DEBUG("[CEPH] ceph_ll_link: parent-ino=%" PRIu64 " name=%s\n",
 		  dircfh->iref.ino, name);
 
-	return ceph_ll_link(cmount_of(handle),
-			    iref->inode,
-			    dircfh->iref.inode,
-			    name,
-			    dircfh->uperm);
+	return config->ceph_ll_link_fn(config->mount,
+				       iref->inode,
+				       dircfh->iref.inode,
+				       name,
+				       dircfh->uperm);
 }
 
 static int vfs_ceph_ll_rename(const struct vfs_handle_struct *handle,
@@ -1031,16 +1532,21 @@ static int vfs_ceph_ll_rename(const stru
 			      const struct vfs_ceph_fh *newparent,
 			      const char *newname)
 {
-	DBG_DEBUG("[ceph] ceph_ll_rename: parent-ino=%" PRIu64
+	struct vfs_ceph_config *config = NULL;
+
+	SMB_VFS_HANDLE_GET_DATA(handle, config, struct vfs_ceph_config,
+				return -ENOMEM);
+
+	DBG_DEBUG("[CEPH] ceph_ll_rename: parent-ino=%" PRIu64
 		  " name=%s newparent-ino=%" PRIu64 " newname=%s\n",
 		  parent->iref.ino, name, newparent->iref.ino, newname);
 
-	return ceph_ll_rename(cmount_of(handle),
-			      parent->iref.inode,
-			      name,
-			      newparent->iref.inode,
-			      newname,
-			      newparent->uperm);
+	return config->ceph_ll_rename_fn(config->mount,
+					 parent->iref.inode,
+					 name,
+					 newparent->iref.inode,
+					 newname,
+					 newparent->uperm);
 }
 
 static int vfs_ceph_ll_mknod(const struct vfs_handle_struct *handle,
@@ -1053,20 +1559,24 @@ static int vfs_ceph_ll_mknod(const struc
 	struct ceph_statx stx = {.stx_ino = 0};
 	struct Inode *inode = NULL;
 	int ret = -1;
+	struct vfs_ceph_config *config = NULL;
 
-	DBG_DEBUG("[ceph] ceph_ll_mknod: parent-ino=%" PRIu64 " name=%s "
+	SMB_VFS_HANDLE_GET_DATA(handle, config, struct vfs_ceph_config,
+				return -ENOMEM);
+
+	DBG_DEBUG("[CEPH] ceph_ll_mknod: parent-ino=%" PRIu64 " name=%s "
 		  "mode=%o\n", parent->iref.ino, name, mode);
 
-	ret = ceph_ll_mknod(cmount_of(handle),
-			    parent->iref.inode,
-			    name,
-			    mode,
-			    rdev,
-			    &inode,
-			    &stx,
-			    CEPH_STATX_INO,
-			    0,
-			    parent->uperm);
+	ret = config->ceph_ll_mknod_fn(config->mount,
+				       parent->iref.inode,
+				       name,
+				       mode,
+				       rdev,
+				       &inode,
+				       &stx,
+				       CEPH_STATX_INO,
+				       0,
+				       parent->uperm);
 	if (ret == 0) {
 		iref->inode = inode;
 		iref->ino = stx.stx_ino;
@@ -1083,23 +1593,27 @@ static int vfs_ceph_ll_getxattr(const st
 {
 	struct UserPerm *uperm = NULL;
 	int ret = -1;
+	struct vfs_ceph_config *config = NULL;
 
-	DBG_DEBUG("[ceph] ceph_ll_getxattr: ino=%" PRIu64 " name=%s\n",
+	SMB_VFS_HANDLE_GET_DATA(handle, config, struct vfs_ceph_config,
+				return -ENOMEM);
+
+	DBG_DEBUG("[CEPH] ceph_ll_getxattr: ino=%" PRIu64 " name=%s\n",
 		  iref->ino, name);
 
-	uperm = vfs_ceph_userperm_new(handle);
+	uperm = vfs_ceph_userperm_new(config, handle->conn);
 	if (uperm == NULL) {
 		return -ENOMEM;
 	}
 
-	ret = ceph_ll_getxattr(cmount_of(handle),
-			       iref->inode,
-			       name,
-			       value,
-			       size,
-			       uperm);
+	ret = config->ceph_ll_getxattr_fn(config->mount,
+					  iref->inode,
+					  name,
+					  value,
+					  size,
+					  uperm);
 
-	vfs_ceph_userperm_del(uperm);
+	vfs_ceph_userperm_del(config, uperm);
 
 	return ret;
 }
@@ -1110,15 +1624,20 @@ static int vfs_ceph_ll_fgetxattr(const s
 				 void *value,
 				 size_t size)
 {
-	DBG_DEBUG("[ceph] ceph_ll_getxattr: ino=%" PRIu64 " name=%s\n",
+	struct vfs_ceph_config *config = NULL;
+
+	SMB_VFS_HANDLE_GET_DATA(handle, config, struct vfs_ceph_config,
+				return -ENOMEM);
+
+	DBG_DEBUG("[CEPH] ceph_ll_getxattr: ino=%" PRIu64 " name=%s\n",
 		  cfh->iref.ino, name);
 
-	return ceph_ll_getxattr(cmount_of(handle),
-				cfh->iref.inode,
-				name,
-				value,
-				size,
-				cfh->uperm);
+	return config->ceph_ll_getxattr_fn(config->mount,
+					   cfh->iref.inode,
+					   name,
+					   value,
+					   size,
+					   cfh->uperm);
 }
 
 static int vfs_ceph_ll_setxattr(const struct vfs_handle_struct *handle,
@@ -1130,24 +1649,28 @@ static int vfs_ceph_ll_setxattr(const st
 {
 	struct UserPerm *uperm = NULL;
 	int ret = -1;
+	struct vfs_ceph_config *config = NULL;
 
-	DBG_DEBUG("[ceph] ceph_ll_setxattr: ino=%" PRIu64 " name=%s "
+	SMB_VFS_HANDLE_GET_DATA(handle, config, struct vfs_ceph_config,
+				return -ENOMEM);
+
+	DBG_DEBUG("[CEPH] ceph_ll_setxattr: ino=%" PRIu64 " name=%s "
 		  "size=%zu\n", iref->ino, name, size);
 
-	uperm = vfs_ceph_userperm_new(handle);
+	uperm = vfs_ceph_userperm_new(config, handle->conn);
 	if (uperm == NULL) {
 		return -ENOMEM;
 	}
 
-	ret = ceph_ll_setxattr(cmount_of(handle),
-			       iref->inode,
-			       name,
-			       value,
-			       size,
-			       flags,
-			       uperm);
+	ret = config->ceph_ll_setxattr_fn(config->mount,
+					  iref->inode,
+					  name,
+					  value,
+					  size,
+					  flags,
+					  uperm);
 
-	vfs_ceph_userperm_del(uperm);
+	vfs_ceph_userperm_del(config, uperm);
 
 	return ret;
 }
@@ -1159,16 +1682,21 @@ static int vfs_ceph_ll_fsetxattr(const s
 				 size_t size,
 				 int flags)
 {
-	DBG_DEBUG("[ceph] ceph_ll_setxattr: ino=%" PRIu64 " name=%s "
+	struct vfs_ceph_config *config = NULL;
+
+	SMB_VFS_HANDLE_GET_DATA(handle, config, struct vfs_ceph_config,
+				return -ENOMEM);
+
+	DBG_DEBUG("[CEPH] ceph_ll_setxattr: ino=%" PRIu64 " name=%s "
 		  "size=%zu\n", cfh->iref.ino, name, size);
 
-	return ceph_ll_setxattr(cmount_of(handle),
-				cfh->iref.inode,
-				name,
-				value,
-				size,
-				flags,
-				cfh->uperm);
+	return config->ceph_ll_setxattr_fn(config->mount,
+					   cfh->iref.inode,
+					   name,
+					   value,
+					   size,
+					   flags,
+					   cfh->uperm);
 }
 
 static int vfs_ceph_ll_listxattr(const struct vfs_handle_struct *handle,
@@ -1179,22 +1707,26 @@ static int vfs_ceph_ll_listxattr(const s
 {
 	struct UserPerm *uperm = NULL;
 	int ret = -1;
+	struct vfs_ceph_config *config = NULL;
+
+	SMB_VFS_HANDLE_GET_DATA(handle, config, struct vfs_ceph_config,
+				return -ENOMEM);
 
-	DBG_DEBUG("[ceph] ceph_ll_listxattr: ino=%" PRIu64 "\n", iref->ino);
+	DBG_DEBUG("[CEPH] ceph_ll_listxattr: ino=%" PRIu64 "\n", iref->ino);
 
-	uperm = vfs_ceph_userperm_new(handle);
+	uperm = vfs_ceph_userperm_new(config, handle->conn);
 	if (uperm == NULL) {
 		return -ENOMEM;
 	}
 
-	ret = ceph_ll_listxattr(cmount_of(handle),
-				iref->inode,
-				list,
-				buf_size,
-				list_size,
-				uperm);
+	ret = config->ceph_ll_listxattr_fn(config->mount,
+					   iref->inode,
+					   list,
+					   buf_size,
+					   list_size,
+					   uperm);
 
-	vfs_ceph_userperm_del(uperm);
+	vfs_ceph_userperm_del(config, uperm);
 
 	return ret;
 }
@@ -1205,14 +1737,19 @@ static int vfs_ceph_ll_flistxattr(const
 				  size_t buf_size,
 				  size_t *list_size)
 {
-	DBG_DEBUG("[ceph] ceph_ll_listxattr: ino=%" PRIu64 "\n", cfh->iref.ino);
+	struct vfs_ceph_config *config = NULL;
 
-	return ceph_ll_listxattr(cmount_of(handle),
-				 cfh->iref.inode,
-				 list,
-				 buf_size,
-				 list_size,
-				 cfh->uperm);
+	SMB_VFS_HANDLE_GET_DATA(handle, config, struct vfs_ceph_config,
+				return -ENOMEM);
+
+	DBG_DEBUG("[CEPH] ceph_ll_listxattr: ino=%" PRIu64 "\n", cfh->iref.ino);
+
+	return config->ceph_ll_listxattr_fn(config->mount,
+					    cfh->iref.inode,
+					    list,
+					    buf_size,
+					    list_size,
+					    cfh->uperm);
 }
 
 static int vfs_ceph_ll_removexattr(const struct vfs_handle_struct *handle,
@@ -1221,18 +1758,23 @@ static int vfs_ceph_ll_removexattr(const
 {
 	struct UserPerm *uperm = NULL;
 	int ret = -1;
+	struct vfs_ceph_config *config = NULL;
 
-	DBG_DEBUG("[ceph] ceph_ll_removexattr: ino=%" PRIu64 " name=%s\n",
+	SMB_VFS_HANDLE_GET_DATA(handle, config, struct vfs_ceph_config,
+				return -ENOMEM);
+
+	DBG_DEBUG("[CEPH] ceph_ll_removexattr: ino=%" PRIu64 " name=%s\n",
 		  iref->ino, name);
 
-	uperm = vfs_ceph_userperm_new(handle);
+	uperm = vfs_ceph_userperm_new(config, handle->conn);
 	if (uperm == NULL) {
 		return -ENOMEM;
 	}
 
-	ret = ceph_ll_removexattr(cmount_of(handle), iref->inode, name, uperm);
+	ret = config->ceph_ll_removexattr_fn(config->mount, iref->inode,
+					     name, uperm);
 
-	vfs_ceph_userperm_del(uperm);
+	vfs_ceph_userperm_del(config, uperm);
 
 	return ret;
 }
@@ -1241,13 +1783,18 @@ static int vfs_ceph_ll_fremovexattr(cons
 				    const struct vfs_ceph_fh *cfh,
 				    const char *name)
 {
-	DBG_DEBUG("[ceph] ceph_ll_removexattr: ino=%" PRIu64 " name=%s\n",
+	struct vfs_ceph_config *config = NULL;
+
+	SMB_VFS_HANDLE_GET_DATA(handle, config, struct vfs_ceph_config,
+				return -ENOMEM);
+
+	DBG_DEBUG("[CEPH] ceph_ll_removexattr: ino=%" PRIu64 " name=%s\n",
 		  cfh->iref.ino, name);
 
-	return ceph_ll_removexattr(cmount_of(handle),
-				   cfh->iref.inode,
-				   name,
-				   cfh->uperm);
+	return config->ceph_ll_removexattr_fn(config->mount,
+					      cfh->iref.inode,
+					      name,
+					      cfh->uperm);
 }
 
 /* Ceph Inode-refernce get/put wrappers */
@@ -1284,7 +1831,7 @@ static int vfs_ceph_iget(const struct vf
 	iref->inode = inode;
 	iref->ino = ino;
 	iref->owner = true;
-	DBG_DEBUG("[CEPH] get-inode: %s ino=%" PRIu64 "\n", name, iref->ino);
+	DBG_DEBUG("[CEPH] iget: %s ino=%" PRIu64 "\n", name, iref->ino);
 	return 0;
 }
 
@@ -1293,9 +1840,14 @@ static int vfs_ceph_iget_by_fname(const
 				  struct vfs_ceph_iref *iref)
 {
 	const char *name = smb_fname->base_name;
-	const char *cwd = ceph_getcwd(cmount_of(handle));
+	const char *cwd = NULL;
 	int ret = -1;
+	struct vfs_ceph_config *config = NULL;
+
+	SMB_VFS_HANDLE_GET_DATA(handle, config, struct vfs_ceph_config,
+				return -ENOMEM);
 
+	cwd = config->ceph_getcwd_fn(config->mount);
 	if (!strcmp(name, cwd)) {
 		ret = vfs_ceph_iget(handle, 0, "./", 0, iref);
 	} else {
@@ -1356,9 +1908,14 @@ static void vfs_ceph_iput(const struct v
 			  struct vfs_ceph_iref *iref)
 {
 	if ((iref != NULL) && (iref->inode != NULL) && iref->owner) {
-		DBG_DEBUG("[ceph] ceph_ll_put: ino=%" PRIu64 "\n", iref->ino);
+		struct vfs_ceph_config *config = NULL;
 
-		ceph_ll_put(cmount_of(handle), iref->inode);
+		SMB_VFS_HANDLE_GET_DATA(handle, config, struct vfs_ceph_config,
+					return);
+
+		DBG_DEBUG("[CEPH] ceph_ll_put: ino=%" PRIu64 "\n", iref->ino);
+
+		config->ceph_ll_put_fn(config->mount, iref->inode);
 		iref->inode = NULL;
 	}
 }
@@ -1374,15 +1931,19 @@ static uint64_t vfs_ceph_disk_free(struc
 	struct statvfs statvfs_buf = { 0 };
 	struct Inode *inode = NULL;
 	int ret;
+	struct vfs_ceph_config *config = NULL;
+
+	SMB_VFS_HANDLE_GET_DATA(handle, config, struct vfs_ceph_config,
+				return -ENOMEM);
 
-	ret = ceph_ll_lookup_root(cmount_of(handle), &inode);
+	ret = config->ceph_ll_lookup_root_fn(config->mount, &inode);
 	if (ret != 0) {
 		DBG_DEBUG("[CEPH] ceph_ll_lookup_root returned %d\n", ret);
 		errno = -ret;
 		return (uint64_t)(-1);
 	}
-	ret = ceph_ll_statfs(cmount_of(handle), inode, &statvfs_buf);
-	ceph_ll_put(cmount_of(handle), inode);
+	ret = config->ceph_ll_statfs_fn(config->mount, inode, &statvfs_buf);
+	config->ceph_ll_put_fn(config->mount, inode);
 	if (ret != 0) {
 		DBG_DEBUG("[CEPH] ceph_ll_statfs returned %d\n", ret);
 		errno = -ret;
@@ -1458,6 +2019,7 @@ static DIR *vfs_ceph_fdopendir(struct vf
 	void *result = NULL;
 	struct vfs_ceph_fh *cfh = NULL;
 
+	START_PROFILE(syscall_fdopendir);
 	DBG_DEBUG("[CEPH] fdopendir(%p, %p)\n", handle, fsp);
 	ret = vfs_ceph_fetch_fh(handle, fsp, &cfh);
 	if (ret != 0) {
@@ -1474,6 +2036,7 @@ out:
 	if (ret != 0) {
 		errno = -ret;
 	}
+	END_PROFILE(syscall_fdopendir);
 	return (DIR *)result;
 }
 
@@ -1481,22 +2044,39 @@ static struct dirent *vfs_ceph_readdir(s
 				       struct files_struct *dirfsp,
 				       DIR *dirp)
 {
-	const struct vfs_ceph_fh *dircfh = (const struct vfs_ceph_fh *)dirp;
+	struct vfs_ceph_fh *dircfh = (struct vfs_ceph_fh *)dirp;
 	struct dirent *result = NULL;
 	int saved_errno = errno;
+	int ret = -1;
 
+	START_PROFILE(syscall_readdir);
 	DBG_DEBUG("[CEPH] readdir(%p, %p)\n", handle, dirp);
 
-	errno = 0;
-	result = vfs_ceph_ll_readdir(handle, dircfh);
-	if ((result == NULL) && (errno != 0)) {
-		saved_errno = errno;
-		DBG_DEBUG("[CEPH] readdir(...) = %d\n", errno);
+	result = vfs_ceph_get_fh_dirent(dircfh);
+	if (result == NULL) {
+		/* Memory allocation failure */
+		goto out;
+	}
+
+	/* The low-level call uses 'dircfh->de' which is now 'result' */
+	ret = vfs_ceph_ll_readdir(handle, dircfh);
+	if (ret < 0) {
+		/* Error case */
+		DBG_DEBUG("[CEPH] readdir(...) = %d\n", ret);
+		vfs_ceph_put_fh_dirent(dircfh);
+		result = NULL;
+		saved_errno = ret;
+	} else if (ret == 0) {
+		/* End of directory stream */
+		vfs_ceph_put_fh_dirent(dircfh);
+		result = NULL;
 	} else {
+		/* Normal case */
 		DBG_DEBUG("[CEPH] readdir(...) = %p\n", result);
 	}
-
 	errno = saved_errno;
+out:
+	END_PROFILE(syscall_readdir);
 	return result;
 }
 
@@ -1504,8 +2084,10 @@ static void vfs_ceph_rewinddir(struct vf
 {
 	const struct vfs_ceph_fh *dircfh = (const struct vfs_ceph_fh *)dirp;
 
+	START_PROFILE(syscall_rewinddir);
 	DBG_DEBUG("[CEPH] rewinddir(%p, %p)\n", handle, dirp);
 	vfs_ceph_ll_rewinddir(handle, dircfh);
+	END_PROFILE(syscall_rewinddir);
 }
 
 static int vfs_ceph_mkdirat(struct vfs_handle_struct *handle,
@@ -1518,6 +2100,7 @@ static int vfs_ceph_mkdirat(struct vfs_h
 	struct vfs_ceph_fh *dircfh = NULL;
 	struct vfs_ceph_iref iref = {0};
 
+	START_PROFILE(syscall_mkdirat);
 	DBG_DEBUG("[CEPH] mkdirat(%p, %s)\n", handle, name);
 	result = vfs_ceph_fetch_fh(handle, dirfsp, &dircfh);
 	if (result != 0) {
@@ -1528,6 +2111,7 @@ static int vfs_ceph_mkdirat(struct vfs_h
 	vfs_ceph_iput(handle, &iref);
 out:
 	DBG_DEBUG("[CEPH] mkdirat(...) = %d\n", result);
+	END_PROFILE(syscall_mkdirat);
 	return status_code(result);
 }
 
@@ -1536,11 +2120,13 @@ static int vfs_ceph_closedir(struct vfs_
 	int result;
 	struct vfs_ceph_fh *cfh = (struct vfs_ceph_fh *)dirp;
 
+	START_PROFILE(syscall_closedir);
 	DBG_DEBUG("[CEPH] closedir(%p, %p)\n", handle, dirp);
 	result = vfs_ceph_ll_releasedir(handle, cfh);
 	vfs_ceph_release_fh(cfh);
 	vfs_ceph_remove_fh(handle, cfh->fsp);
 	DBG_DEBUG("[CEPH] closedir(...) = %d\n", result);
+	END_PROFILE(syscall_closedir);
 	return status_code(result);
 }
 
@@ -1558,14 +2144,15 @@ static int vfs_ceph_openat(struct vfs_ha
 	mode_t mode = how->mode;
 	int result = -ENOENT;
 
+	START_PROFILE(syscall_openat);
 	if (how->resolve != 0) {
-		errno = ENOSYS;
-		return -1;
+		result = -ENOSYS;
+		goto err_out;
 	}
 
 	if (smb_fname->stream_name) {
-		errno = ENOENT;
-		return -1;
+		result = -ENOENT;
+		goto err_out;
 	}
 
 #ifdef O_PATH
@@ -1613,6 +2200,7 @@ static int vfs_ceph_openat(struct vfs_ha
 			 * Cephfs' Inode* from the above lookup so there is no
 			 * need to go via expensive ceph_ll_open for Fh*.
 			 */
+			cfh->o_flags = flags;
 			vfs_ceph_assign_fh_fd(cfh);
 			result = cfh->fd;
 			goto out;
@@ -1629,7 +2217,9 @@ static int vfs_ceph_openat(struct vfs_ha
 out:
 	vfs_ceph_iput(handle, &diref);
 	fsp->fsp_flags.have_proc_fds = false;
+err_out:
 	DBG_DEBUG("[CEPH] open(...) = %d\n", result);
+	END_PROFILE(syscall_openat);
 	return status_code(result);
 }
 
@@ -1638,6 +2228,7 @@ static int vfs_ceph_close(struct vfs_han
 	int result;
 	struct vfs_ceph_fh *cfh = NULL;
 
+	START_PROFILE(syscall_close);
 	DBG_DEBUG("[CEPH] close(%p, %p)\n", handle, fsp);
 	result = vfs_ceph_fetch_fh(handle, fsp, &cfh);
 	if (result != 0) {
@@ -1648,6 +2239,7 @@ static int vfs_ceph_close(struct vfs_han
 	vfs_ceph_remove_fh(handle, fsp);
 out:
 	DBG_DEBUG("[CEPH] close(...) = %d\n", result);
+	END_PROFILE(syscall_close);
 	return status_code(result);
 }
 
@@ -1660,6 +2252,7 @@ static ssize_t vfs_ceph_pread(struct vfs
 	struct vfs_ceph_fh *cfh = NULL;
 	ssize_t result;
 
+	START_PROFILE_BYTES(syscall_pread, n);
 	DBG_DEBUG("[CEPH] pread(%p, %p, %p, %llu, %llu)\n",
 		  handle,
 		  fsp,
@@ -1675,14 +2268,40 @@ static ssize_t vfs_ceph_pread(struct vfs
 	result = vfs_ceph_ll_read(handle, cfh, offset, n, data);
 out:
 	DBG_DEBUG("[CEPH] pread(...) = %llu\n", llu(result));
+	END_PROFILE_BYTES(syscall_pread);
 	return lstatus_code(result);
 }
 
+struct vfs_ceph_aio_state {
+	struct timespec start_time;
+	struct timespec finish_time;
+	struct vfs_aio_state vfs_aio_state;
+	SMBPROFILE_BYTES_ASYNC_STATE(profile_bytes);
+};
+
 struct vfs_ceph_pread_state {
 	ssize_t bytes_read;
-	struct vfs_aio_state vfs_aio_state;
+	struct vfs_ceph_aio_state ceph_aio_state;
 };
 
+static void vfs_ceph_aio_start(struct vfs_ceph_aio_state *state)
+{
+	SMBPROFILE_BYTES_ASYNC_SET_BUSY(state->profile_bytes);
+	PROFILE_TIMESTAMP(&state->start_time);
+}
+
+static void vfs_ceph_aio_finish(struct vfs_ceph_aio_state *state,
+				ssize_t result)
+{
+	PROFILE_TIMESTAMP(&state->finish_time);
+	state->vfs_aio_state.duration = nsec_time_diff(&state->finish_time,
+						       &state->start_time);
+	if (result < 0) {
+		state->vfs_aio_state.error = (int)result;
+	}
+	SMBPROFILE_BYTES_ASYNC_SET_IDLE(state->profile_bytes);
+}
+
 /*
  * Fake up an async ceph read by calling the synchronous API.
  */
@@ -1698,7 +2317,12 @@ static struct tevent_req *vfs_ceph_pread
 	struct vfs_ceph_pread_state *state = NULL;
 	int ret = -1;
 
-	DBG_DEBUG("[CEPH] %s\n", __func__);
+	DBG_DEBUG("[CEPH] pread_send(%p, %p, %p, %zu, %zd)\n",
+		  handle,
+		  fsp,
+		  data,
+		  n,
+		  offset);
 	req = tevent_req_create(mem_ctx, &state, struct vfs_ceph_pread_state);
 	if (req == NULL) {
 		return NULL;
@@ -1710,7 +2334,15 @@ static struct tevent_req *vfs_ceph_pread
 		return tevent_req_post(req, ev);
 	}
 
+	SMBPROFILE_BYTES_ASYNC_START(syscall_asys_pread,
+				     profile_p,
+				     state->ceph_aio_state.profile_bytes,
+				     n);
+	SMBPROFILE_BYTES_ASYNC_SET_IDLE(state->ceph_aio_state.profile_bytes);
+
+	vfs_ceph_aio_start(&state->ceph_aio_state);
 	ret = vfs_ceph_ll_read(handle, cfh, offset, n, data);
+	vfs_ceph_aio_finish(&state->ceph_aio_state, ret);
 	if (ret < 0) {
 		/* ceph returns -errno on error. */
 		tevent_req_error(req, -ret);
@@ -1729,11 +2361,14 @@ static ssize_t vfs_ceph_pread_recv(struc
 	struct vfs_ceph_pread_state *state =
 		tevent_req_data(req, struct vfs_ceph_pread_state);
 
-	DBG_DEBUG("[CEPH] %s\n", __func__);
+	DBG_DEBUG("[CEPH] pread_recv: bytes_read=%zd\n", state->bytes_read);
+
+	SMBPROFILE_BYTES_ASYNC_END(state->ceph_aio_state.profile_bytes);
+
 	if (tevent_req_is_unix_error(req, &vfs_aio_state->error)) {
 		return -1;
 	}
-	*vfs_aio_state = state->vfs_aio_state;
+	*vfs_aio_state = state->ceph_aio_state.vfs_aio_state;
 	return state->bytes_read;
 }
 
@@ -1746,6 +2381,7 @@ static ssize_t vfs_ceph_pwrite(struct vf
 	struct vfs_ceph_fh *cfh = NULL;
 	ssize_t result;
 
+	START_PROFILE_BYTES(syscall_pwrite, n);
 	DBG_DEBUG("[CEPH] pwrite(%p, %p, %p, %llu, %llu)\n",
 		  handle,
 		  fsp,
@@ -1760,12 +2396,13 @@ static ssize_t vfs_ceph_pwrite(struct vf
 	result = vfs_ceph_ll_write(handle, cfh, offset, n, data);
 out:
 	DBG_DEBUG("[CEPH] pwrite(...) = %llu\n", llu(result));
+	END_PROFILE_BYTES(syscall_pwrite);
 	return lstatus_code(result);
 }
 
 struct vfs_ceph_pwrite_state {
 	ssize_t bytes_written;
-	struct vfs_aio_state vfs_aio_state;
+	struct vfs_ceph_aio_state ceph_aio_state;
 };
 
 /*
@@ -1783,7 +2420,12 @@ static struct tevent_req *vfs_ceph_pwrit
 	struct vfs_ceph_pwrite_state *state = NULL;
 	int ret = -1;
 
-	DBG_DEBUG("[CEPH] %s\n", __func__);
+	DBG_DEBUG("[CEPH] pwrite_send(%p, %p, %p, %zu, %zd)\n",
+		  handle,
+		  fsp,
+		  data,
+		  n,
+		  offset);
 	req = tevent_req_create(mem_ctx, &state, struct vfs_ceph_pwrite_state);
 	if (req == NULL) {
 		return NULL;
@@ -1795,7 +2437,15 @@ static struct tevent_req *vfs_ceph_pwrit
 		return tevent_req_post(req, ev);
 	}
 
+	SMBPROFILE_BYTES_ASYNC_START(syscall_asys_pwrite,
+				     profile_p,
+				     state->ceph_aio_state.profile_bytes,
+				     n);
+	SMBPROFILE_BYTES_ASYNC_SET_IDLE(state->ceph_aio_state.profile_bytes);
+
+	vfs_ceph_aio_start(&state->ceph_aio_state);
 	ret = vfs_ceph_ll_write(handle, cfh, offset, n, data);
+	vfs_ceph_aio_finish(&state->ceph_aio_state, ret);
 	if (ret < 0) {
 		/* ceph returns -errno on error. */
 		tevent_req_error(req, -ret);
@@ -1814,11 +2464,15 @@ static ssize_t vfs_ceph_pwrite_recv(stru
 	struct vfs_ceph_pwrite_state *state =
 		tevent_req_data(req, struct vfs_ceph_pwrite_state);
 
-	DBG_DEBUG("[CEPH] %s\n", __func__);
+	DBG_DEBUG("[CEPH] pwrite_recv: bytes_written=%zd\n",
+		  state->bytes_written);
+
+	SMBPROFILE_BYTES_ASYNC_END(state->ceph_aio_state.profile_bytes);
+
 	if (tevent_req_is_unix_error(req, &vfs_aio_state->error)) {
 		return -1;
 	}
-	*vfs_aio_state = state->vfs_aio_state;
+	*vfs_aio_state = state->ceph_aio_state.vfs_aio_state;
 	return state->bytes_written;
 }
 
@@ -1830,7 +2484,9 @@ static off_t vfs_ceph_lseek(struct vfs_h
 	struct vfs_ceph_fh *cfh = NULL;
 	intmax_t result = 0;
 
-	DBG_DEBUG("[CEPH] vfs_ceph_lseek\n");
+	START_PROFILE(syscall_lseek);
+	DBG_DEBUG(
+		"[CEPH] lseek(%p, %p, %zd, %d)\n", handle, fsp, offset, whence);
 	result = vfs_ceph_fetch_io_fh(handle, fsp, &cfh);
 	if (result != 0) {
 		goto out;
@@ -1838,6 +2494,7 @@ static off_t vfs_ceph_lseek(struct vfs_h
 
 	result = vfs_ceph_ll_lseek(handle, cfh, offset, whence);
 out:
+	END_PROFILE(syscall_lseek);
 	return lstatus_code(result);
 }
 
@@ -1851,7 +2508,13 @@ static ssize_t vfs_ceph_sendfile(struct
 	/*
 	 * We cannot support sendfile because libcephfs is in user space.
 	 */
-	DBG_DEBUG("[CEPH] vfs_ceph_sendfile\n");
+	DBG_DEBUG("[CEPH] sendfile(%p, %d, %p, %p, %zd, %zu)\n",
+		  handle,
+		  tofd,
+		  fromfsp,
+		  hdr,
+		  offset,
+		  n);
 	errno = ENOTSUP;
 	return -1;
 }
@@ -1865,7 +2528,12 @@ static ssize_t vfs_ceph_recvfile(struct
 	/*
 	 * We cannot support recvfile because libcephfs is in user space.
 	 */
-	DBG_DEBUG("[CEPH] vfs_ceph_recvfile\n");
+	DBG_DEBUG("[CEPH] recvfile(%p, %d, %p, %zd, %zu)\n",
+		  handle,
+		  fromfd,
+		  tofsp,
+		  offset,
+		  n);
 	errno = ENOTSUP;
 	return -1;
 }
@@ -1880,19 +2548,32 @@ static int vfs_ceph_renameat(struct vfs_
 	struct vfs_ceph_fh *dst_dircfh = NULL;
 	int result = -1;
 
-	DBG_DEBUG("[CEPH] vfs_ceph_renameat\n");
+	START_PROFILE(syscall_renameat);
+	DBG_DEBUG("[CEPH] renameat: srcfsp = %p src_name = %s "
+		  "dstfsp = %p dst_name = %s\n",
+		  srcfsp,
+		  smb_fname_src->base_name,
+		  dstfsp,
+		  smb_fname_dst->base_name);
+
 	if (smb_fname_src->stream_name || smb_fname_dst->stream_name) {
-		errno = ENOENT;
-		return result;
+		result = -ENOENT;
+		goto out;
 	}
 
 	result = vfs_ceph_fetch_fh(handle, srcfsp, &src_dircfh);
 	if (result != 0) {
+		DBG_ERR("[CEPH] failed to fetch file handle: srcfsp = %p "
+				"src_name = %s\n",
+				srcfsp, smb_fname_src->base_name);
 		goto out;
 	}
 
 	result = vfs_ceph_fetch_fh(handle, dstfsp, &dst_dircfh);
 	if (result != 0) {
+		DBG_ERR("[CEPH] failed to fetch file handle: dstfsp = %p "
+				"dst_name = %s\n",
+				dstfsp, smb_fname_dst->base_name);
 		goto out;
 	}
 
@@ -1902,6 +2583,7 @@ static int vfs_ceph_renameat(struct vfs_
 				    dst_dircfh,
 				    smb_fname_dst->base_name);
 out:
+	END_PROFILE(syscall_renameat);
 	return status_code(result);
 }
 
@@ -1909,6 +2591,10 @@ out:
  * Fake up an async ceph fsync by calling the synchronous API.
  */
 
+struct vfs_ceph_fsync_state {
+	struct vfs_ceph_aio_state ceph_aio_state;
+};
+
 static struct tevent_req *vfs_ceph_fsync_send(struct vfs_handle_struct *handle,
 					TALLOC_CTX *mem_ctx,
 					struct tevent_context *ev,
@@ -1916,12 +2602,12 @@ static struct tevent_req *vfs_ceph_fsync
 {
 	struct vfs_ceph_fh *cfh = NULL;
 	struct tevent_req *req = NULL;
-	struct vfs_aio_state *state = NULL;
+	struct vfs_ceph_fsync_state *state = NULL;
 	int ret = -1;
 
-	DBG_DEBUG("[CEPH] vfs_ceph_fsync_send\n");
+	DBG_DEBUG("[CEPH] fsync_send(%p, %p)\n", handle, fsp);
 
-	req = tevent_req_create(mem_ctx, &state, struct vfs_aio_state);
+	req = tevent_req_create(mem_ctx, &state, struct vfs_ceph_fsync_state);
 	if (req == NULL) {
 		return NULL;
 	}
@@ -1932,8 +2618,16 @@ static struct tevent_req *vfs_ceph_fsync
 		return tevent_req_post(req, ev);
 	}
 
+	SMBPROFILE_BYTES_ASYNC_START(syscall_asys_fsync,
+				     profile_p,
+				     state->ceph_aio_state.profile_bytes,
+				     0);
+	SMBPROFILE_BYTES_ASYNC_SET_IDLE(state->ceph_aio_state.profile_bytes);
+
 	/* Make sync call. */
+	vfs_ceph_aio_start(&state->ceph_aio_state);
 	ret = vfs_ceph_ll_fsync(handle, cfh, false);
+	vfs_ceph_aio_finish(&state->ceph_aio_state, ret);
 	if (ret != 0) {
 		/* ceph_fsync returns -errno on error. */
 		tevent_req_error(req, -ret);
@@ -1949,69 +2643,36 @@ static struct tevent_req *vfs_ceph_fsync
 static int vfs_ceph_fsync_recv(struct tevent_req *req,
 				struct vfs_aio_state *vfs_aio_state)
 {
-	struct vfs_aio_state *state =
-		tevent_req_data(req, struct vfs_aio_state);
+	struct vfs_ceph_fsync_state *state = tevent_req_data(
+		req, struct vfs_ceph_fsync_state);
 
-	DBG_DEBUG("[CEPH] vfs_ceph_fsync_recv\n");
+	DBG_DEBUG("[CEPH] fsync_recv: error=%d duration=%" PRIu64 "\n",
+		  state->ceph_aio_state.vfs_aio_state.error,
+		  state->ceph_aio_state.vfs_aio_state.duration);
+
+	SMBPROFILE_BYTES_ASYNC_END(state->ceph_aio_state.profile_bytes);
 
 	if (tevent_req_is_unix_error(req, &vfs_aio_state->error)) {
 		return -1;
 	}
-	*vfs_aio_state = *state;
+	*vfs_aio_state = state->ceph_aio_state.vfs_aio_state;
 	return 0;
 }
 
-static void init_stat_ex_from_ceph_statx(struct stat_ex *dst,
-					 const struct ceph_statx *stx)
-{
-	DBG_DEBUG("[CEPH]\tstx = {dev = %llx, ino = %llu, mode = 0x%x, "
-		  "nlink = %llu, uid = %d, gid = %d, rdev = %llx, size = %llu, "
-		  "blksize = %llu, blocks = %llu, atime = %llu, mtime = %llu, "
-		  "ctime = %llu, btime = %llu}\n",
-		  llu(stx->stx_dev), llu(stx->stx_ino), stx->stx_mode,
-		  llu(stx->stx_nlink), stx->stx_uid, stx->stx_gid,
-		  llu(stx->stx_rdev), llu(stx->stx_size), llu(stx->stx_blksize),
-		  llu(stx->stx_blocks), llu(stx->stx_atime.tv_sec),
-		  llu(stx->stx_mtime.tv_sec), llu(stx->stx_ctime.tv_sec),
-		  llu(stx->stx_btime.tv_sec));
-
-	if ((stx->stx_mask & SAMBA_STATX_ATTR_MASK) != SAMBA_STATX_ATTR_MASK) {
-		DBG_WARNING("%s: stx->stx_mask is incorrect "
-			    "(wanted %x, got %x)\n",
-			    __func__,
-			    SAMBA_STATX_ATTR_MASK,
-			    stx->stx_mask);
-	}
-
-	dst->st_ex_dev = stx->stx_dev;
-	dst->st_ex_rdev = stx->stx_rdev;
-	dst->st_ex_ino = stx->stx_ino;
-	dst->st_ex_mode = stx->stx_mode;
-	dst->st_ex_uid = stx->stx_uid;
-	dst->st_ex_gid = stx->stx_gid;
-	dst->st_ex_size = stx->stx_size;
-	dst->st_ex_nlink = stx->stx_nlink;
-	dst->st_ex_atime = stx->stx_atime;
-	dst->st_ex_btime = stx->stx_btime;
-	dst->st_ex_ctime = stx->stx_ctime;
-	dst->st_ex_mtime = stx->stx_mtime;
-	dst->st_ex_blksize = stx->stx_blksize;
-	dst->st_ex_blocks = stx->stx_blocks;
-}
-
 static int vfs_ceph_stat(struct vfs_handle_struct *handle,
 			struct smb_filename *smb_fname)
 {
 	int result = -1;
 	struct vfs_ceph_iref iref = {0};
 
+	START_PROFILE(syscall_stat);
 	DBG_DEBUG("[CEPH] stat(%p, %s)\n",
 		  handle,
 		  smb_fname_str_dbg(smb_fname));
 
 	if (smb_fname->stream_name) {
-		errno = ENOENT;
-		return result;
+		result = -ENOENT;
+		goto out;
 	}
 
 	result = vfs_ceph_iget_by_fname(handle, smb_fname, &iref);
@@ -2027,6 +2688,7 @@ static int vfs_ceph_stat(struct vfs_hand
 	DBG_DEBUG("[CEPH] mode = 0x%x\n", smb_fname->st.st_ex_mode);
 out:
 	vfs_ceph_iput(handle, &iref);
+	END_PROFILE(syscall_stat);
 	return status_code(result);
 }
 
@@ -2037,6 +2699,7 @@ static int vfs_ceph_fstat(struct vfs_han
 	int result = -1;
 	struct vfs_ceph_fh *cfh = NULL;
 
+	START_PROFILE(syscall_fstat);
 	DBG_DEBUG("[CEPH] fstat(%p)\n", handle);
 
 	result = vfs_ceph_fetch_fh(handle, fsp, &cfh);
@@ -2051,6 +2714,7 @@ static int vfs_ceph_fstat(struct vfs_han
 	DBG_DEBUG("[CEPH] mode = 0x%x\n", sbuf->st_ex_mode);
 out:
 	DBG_DEBUG("[CEPH] fstat(...) = %d\n", result);
+	END_PROFILE(syscall_fstat);
 	return status_code(result);
 }
 
@@ -2064,6 +2728,7 @@ static int vfs_ceph_fstatat(struct vfs_h
 	struct vfs_ceph_iref iref = {0};
 	struct vfs_ceph_fh *dircfh = NULL;
 
+	START_PROFILE(syscall_fstatat);
 	DBG_DEBUG("[CEPH] fstatat(%p, %s)\n", handle, smb_fname->base_name);
 
 	result = vfs_ceph_fetch_fh(handle, dirfsp, &dircfh);
@@ -2086,6 +2751,7 @@ static int vfs_ceph_fstatat(struct vfs_h
 out:
 	vfs_ceph_iput(handle, &iref);
 	DBG_DEBUG("[CEPH] fstatat(...) = %d\n", result);
+	END_PROFILE(syscall_fstatat);
 	return status_code(result);
 }
 
@@ -2095,13 +2761,14 @@ static int vfs_ceph_lstat(struct vfs_han
 	int result = -1;
 	struct vfs_ceph_iref iref = {0};
 
+	START_PROFILE(syscall_lstat);
 	DBG_DEBUG("[CEPH] lstat(%p, %s)\n",
 		  handle,
 		  smb_fname_str_dbg(smb_fname));
 
 	if (smb_fname->stream_name) {
-		errno = ENOENT;
-		return result;
+		result = -ENOENT;
+		goto out;
 	}
 
 	result = vfs_ceph_igetl(handle, smb_fname, &iref);
@@ -2116,6 +2783,7 @@ static int vfs_ceph_lstat(struct vfs_han
 out:
 	vfs_ceph_iput(handle, &iref);
 	DBG_DEBUG("[CEPH] lstat(...) = %d\n", result);
+	END_PROFILE(syscall_lstat);
 	return status_code(result);
 }
 
@@ -2126,6 +2794,7 @@ static int vfs_ceph_fntimes(struct vfs_h
 	struct vfs_ceph_fh *cfh = NULL;
 	int result;
 
+	START_PROFILE(syscall_fntimes);
 	result = vfs_ceph_fetch_fh(handle, fsp, &cfh);
 	if (result != 0) {
 		goto out;
@@ -2144,6 +2813,7 @@ static int vfs_ceph_fntimes(struct vfs_h
 		  handle, fsp_str_dbg(fsp), ft->mtime.tv_sec, ft->atime.tv_sec,
 		  ft->ctime.tv_sec, ft->create_time.tv_sec, result);
 out:
+	END_PROFILE(syscall_fntimes);
 	return status_code(result);
 }
 
@@ -2156,13 +2826,14 @@ static int vfs_ceph_unlinkat(struct vfs_
 	const char *name = smb_fname->base_name;
 	int result = -1;
 
+	START_PROFILE(syscall_unlinkat);
 	DBG_DEBUG("[CEPH] unlinkat(%p, %s)\n",
 		  handle,
 		  smb_fname_str_dbg(smb_fname));
 
 	if (smb_fname->stream_name) {
-		errno = ENOENT;
-		return result;
+		result = -ENOENT;
+		goto out;
 	}
 
 	result = vfs_ceph_fetch_fh(handle, dirfsp, &dircfh);
@@ -2177,6 +2848,7 @@ static int vfs_ceph_unlinkat(struct vfs_
 	}
 out:
 	DBG_DEBUG("[CEPH] unlinkat(...) = %d\n", result);
+	END_PROFILE(syscall_unlinkat);
 	return status_code(result);
 }
 
@@ -2187,6 +2859,7 @@ static int vfs_ceph_fchmod(struct vfs_ha
 	int result;
 	struct vfs_ceph_fh *cfh = NULL;
 
+	START_PROFILE(syscall_fchmod);
 	DBG_DEBUG("[CEPH] fchmod(%p, %p, %d)\n", handle, fsp, mode);
 	result = vfs_ceph_fetch_io_fh(handle, fsp, &cfh);
 	if (result != 0) {
@@ -2196,6 +2869,7 @@ static int vfs_ceph_fchmod(struct vfs_ha
 	result = vfs_ceph_ll_fchmod(handle, cfh, mode);
 out:
 	DBG_DEBUG("[CEPH] fchmod(...) = %d\n", result);
+	END_PROFILE(syscall_fchmod);
 	return status_code(result);
 }
 
@@ -2207,6 +2881,7 @@ static int vfs_ceph_fchown(struct vfs_ha
 	int result;
 	struct vfs_ceph_fh *cfh = NULL;
 
+	START_PROFILE(syscall_fchown);
 	DBG_DEBUG("[CEPH] fchown(%p, %p, %d, %d)\n", handle, fsp, uid, gid);
 	result = vfs_ceph_fetch_io_fh(handle, fsp, &cfh);
 	if (result != 0) {
@@ -2215,6 +2890,7 @@ static int vfs_ceph_fchown(struct vfs_ha
 	result = vfs_ceph_ll_fchown(handle, cfh, uid, gid);
 out:
 	DBG_DEBUG("[CEPH] fchown(...) = %d\n", result);
+	END_PROFILE(syscall_fchown);
 	return status_code(result);
 }
 
@@ -2226,6 +2902,7 @@ static int vfs_ceph_lchown(struct vfs_ha
 	int result;
 	struct vfs_ceph_iref iref = {0};
 
+	START_PROFILE(syscall_lchown);
 	DBG_DEBUG("[CEPH] lchown(%p, %s, %d, %d)\n",
 		  handle,
 		  smb_fname->base_name,
@@ -2241,6 +2918,7 @@ static int vfs_ceph_lchown(struct vfs_ha
 	vfs_ceph_iput(handle, &iref);
 out:
 	DBG_DEBUG("[CEPH] lchown(...) = %d\n", result);
+	END_PROFILE(syscall_lchown);
 	return status_code(result);
 }
 
@@ -2248,17 +2926,32 @@ static int vfs_ceph_chdir(struct vfs_han
 			const struct smb_filename *smb_fname)
 {
 	int result = -1;
+	struct vfs_ceph_config *config = NULL;
+
+	START_PROFILE(syscall_chdir);
+	SMB_VFS_HANDLE_GET_DATA(handle, config, struct vfs_ceph_config,
+				return -ENOMEM);
+
 	DBG_DEBUG("[CEPH] chdir(%p, %s)\n", handle, smb_fname->base_name);
-	result = ceph_chdir(cmount_of(handle), smb_fname->base_name);
+	result = config->ceph_chdir_fn(config->mount, smb_fname->base_name);
 	DBG_DEBUG("[CEPH] chdir(...) = %d\n", result);
+	END_PROFILE(syscall_chdir);
 	return status_code(result);
 }
 
 static struct smb_filename *vfs_ceph_getwd(struct vfs_handle_struct *handle,
 			TALLOC_CTX *ctx)
 {
-	const char *cwd = ceph_getcwd(cmount_of(handle));
+	const char *cwd = NULL;
+	struct vfs_ceph_config *config = NULL;
+
+	START_PROFILE(syscall_getwd);
+	SMB_VFS_HANDLE_GET_DATA(handle, config, struct vfs_ceph_config,
+				return NULL);
+
+	cwd = config->ceph_getcwd_fn(config->mount);
 	DBG_DEBUG("[CEPH] getwd(%p) = %s\n", handle, cwd);
+	END_PROFILE(syscall_getwd);
 	return synthetic_smb_fname(ctx, cwd, NULL, NULL, 0, 0);
 }
 
@@ -2311,9 +3004,11 @@ static int vfs_ceph_ftruncate(struct vfs
 	struct vfs_ceph_fh *cfh = NULL;
 	int result = -1;
 
+	START_PROFILE(syscall_ftruncate);
 	DBG_DEBUG("[CEPH] ftruncate(%p, %p, %llu\n", handle, fsp, llu(len));
 
 	if (lp_strict_allocate(SNUM(fsp->conn))) {
+		END_PROFILE(syscall_ftruncate);
 		return strict_allocate_ftruncate(handle, fsp, len);
 	}
 
@@ -2323,6 +3018,7 @@ static int vfs_ceph_ftruncate(struct vfs
 	}
 	result = vfs_ceph_ll_ftruncate(handle, cfh, len);
 out:
+	END_PROFILE(syscall_ftruncate);
 	return status_code(result);
 }
 
@@ -2335,6 +3031,7 @@ static int vfs_ceph_fallocate(struct vfs
 	struct vfs_ceph_fh *cfh = NULL;
 	int result;
 
+	START_PROFILE(syscall_fallocate);
 	DBG_DEBUG("[CEPH] fallocate(%p, %p, %u, %llu, %llu\n",
 		  handle, fsp, mode, llu(offset), llu(len));
 	result = vfs_ceph_fetch_io_fh(handle, fsp, &cfh);
@@ -2346,6 +3043,7 @@ static int vfs_ceph_fallocate(struct vfs
 	result = vfs_ceph_ll_fallocate(handle, cfh, mode, offset, len);
 out:
 	DBG_DEBUG("[CEPH] fallocate(...) = %d\n", result);
+	END_PROFILE(syscall_fallocate);
 	return status_code(result);
 }
 
@@ -2356,7 +3054,13 @@ static bool vfs_ceph_lock(struct vfs_han
 			  off_t count,
 			  int type)
 {
-	DBG_DEBUG("[CEPH] lock\n");
+	DBG_DEBUG("[CEPH] lock(%p, %p, %d, %zd, %zd, %d)\n",
+		  handle,
+		  fsp,
+		  op,
+		  offset,
+		  count,
+		  type);
 	return true;
 }
 
@@ -2377,12 +3081,15 @@ static int vfs_ceph_filesystem_sharemode
 static int vfs_ceph_fcntl(vfs_handle_struct *handle,
 			  files_struct *fsp, int cmd, va_list cmd_arg)
 {
+	int result = 0;
+
+	START_PROFILE(syscall_fcntl);
 	/*
 	 * SMB_VFS_FCNTL() is currently only called by vfs_set_blocking() to
 	 * clear O_NONBLOCK, etc for LOCK_MAND and FIFOs. Ignore it.
 	 */
 	if (cmd == F_GETFL) {
-		return 0;
+		goto out;
 	} else if (cmd == F_SETFL) {
 		va_list dup_cmd_arg;
 		int opt;
@@ -2391,15 +3098,18 @@ static int vfs_ceph_fcntl(vfs_handle_str
 		opt = va_arg(dup_cmd_arg, int);
 		va_end(dup_cmd_arg);
 		if (opt == 0) {
-			return 0;
+			goto out;
 		}
-		DBG_ERR("unexpected fcntl SETFL(%d)\n", opt);
+		DBG_ERR("[CEPH] unexpected fcntl SETFL(%d)\n", opt);
 		goto err_out;
 	}
-	DBG_ERR("unexpected fcntl: %d\n", cmd);
+	DBG_ERR("[CEPH] unexpected fcntl: %d\n", cmd);
 err_out:
+	result = -1;
 	errno = EINVAL;
-	return -1;
+out:
+	END_PROFILE(syscall_fcntl);
+	return result;
 }
 
 static bool vfs_ceph_getlock(struct vfs_handle_struct *handle,
@@ -2424,6 +3134,7 @@ static int vfs_ceph_symlinkat(struct vfs
 	struct vfs_ceph_fh *dircfh = NULL;
 	int result = -1;
 
+	START_PROFILE(syscall_symlinkat);
 	DBG_DEBUG("[CEPH] symlinkat(%p, %s, %s)\n",
 		  handle,
 		  link_target->base_name,
@@ -2445,6 +3156,7 @@ static int vfs_ceph_symlinkat(struct vfs
 	vfs_ceph_iput(handle, &iref);
 out:
 	DBG_DEBUG("[CEPH] symlinkat(...) = %d\n", result);
+	END_PROFILE(syscall_symlinkat);
 	return status_code(result);
 }
 
@@ -2457,6 +3169,7 @@ static int vfs_ceph_readlinkat(struct vf
 	int result = -1;
 	struct vfs_ceph_fh *dircfh = NULL;
 
+	START_PROFILE(syscall_readlinkat);
 	DBG_DEBUG("[CEPH] readlinkat(%p, %s, %p, %llu)\n",
 		  handle,
 		  smb_fname->base_name,
@@ -2492,6 +3205,7 @@ static int vfs_ceph_readlinkat(struct vf
 	}
 out:
 	DBG_DEBUG("[CEPH] readlinkat(...) = %d\n", result);
+	END_PROFILE(syscall_readlinkat);
 	return status_code(result);
 }
 
@@ -2509,10 +3223,11 @@ static int vfs_ceph_linkat(struct vfs_ha
 	const char *newname = new_smb_fname->base_name;
 	int result = -1;
 
+	START_PROFILE(syscall_linkat);
 	/* Prevent special linkat modes until it is required by VFS layer */
 	if (flags & (AT_EMPTY_PATH | AT_SYMLINK_FOLLOW)) {
-		errno = ENOTSUP;
-		return -1;
+		result = -ENOTSUP;
+		goto out;
 	}
 
 	DBG_DEBUG("[CEPH] link(%p, %s, %s)\n", handle, name, newname);
@@ -2540,6 +3255,7 @@ static int vfs_ceph_linkat(struct vfs_ha
 	vfs_ceph_iput(handle, &iref);
 out:
 	DBG_DEBUG("[CEPH] link(...) = %d\n", result);
+	END_PROFILE(syscall_linkat);
 	return status_code(result);
 }
 
@@ -2554,6 +3270,7 @@ static int vfs_ceph_mknodat(struct vfs_h
 	const char *name = smb_fname->base_name;
 	int result = -1;
 
+	START_PROFILE(syscall_mknodat);
 	result = vfs_ceph_fetch_fh(handle, dirfsp, &dircfh);
 	if (result != 0) {
 		goto out;
@@ -2569,6 +3286,7 @@ static int vfs_ceph_mknodat(struct vfs_h
 	vfs_ceph_iput(handle, &iref);
 out:
 	DBG_DEBUG("[CEPH] mknodat(...) = %d\n", result);
+	END_PROFILE(syscall_mknodat);
 	return status_code(result);
 }
 
@@ -2586,6 +3304,7 @@ static struct smb_filename *vfs_ceph_rea
 	size_t len = strlen(path);
 	struct smb_filename *result_fname = NULL;
 
+	START_PROFILE(syscall_realpath);
 	if (path[0] == '/') {
 		result = talloc_strdup(ctx, path);
 	} else if ((len >= 2) && (path[0] == '.') && (path[1] == '/')) {
@@ -2599,12 +3318,14 @@ static struct smb_filename *vfs_ceph_rea
 	}
 
 	if (result == NULL) {
-		return NULL;
+		goto out;
 	}
 
 	DBG_DEBUG("[CEPH] realpath(%p, %s) = %s\n", handle, path, result);
 	result_fname = synthetic_smb_fname(ctx, result, NULL, NULL, 0, 0);
 	TALLOC_FREE(result);
+out:
+	END_PROFILE(syscall_realpath);
 	return result_fname;
 }
 
@@ -2856,12 +3577,12 @@ static NTSTATUS vfs_ceph_create_dfs_path
 	NTSTATUS status = NT_STATUS_NO_MEMORY;
 	int ret;
 	char *msdfs_link = NULL;
-	struct smb_filename *full_fname = NULL;
+	struct vfs_ceph_fh *dircfh = NULL;
+	struct vfs_ceph_iref iref = {0};
 
-	full_fname = full_path_from_dirfsp_atname(talloc_tos(),
-						dirfsp,
-						smb_fname);
-	if (full_fname == NULL) {
+	ret = vfs_ceph_fetch_fh(handle, dirfsp, &dircfh);
+	if (ret != 0) {
+		status = map_nt_error_from_unix(-ret);
 		goto out;
 	}
 
@@ -2873,20 +3594,20 @@ static NTSTATUS vfs_ceph_create_dfs_path
 		goto out;
 	}
 
-	ret = ceph_symlink(cmount_of(handle),
-			   msdfs_link,
-			   full_fname->base_name);
+	ret = vfs_ceph_ll_symlinkat(handle,
+				    dircfh,
+				    smb_fname->base_name,
+				    msdfs_link,
+				    &iref);
 	if (ret == 0) {
+		vfs_ceph_iput(handle, &iref);
 		status = NT_STATUS_OK;
 	} else {
 		status = map_nt_error_from_unix(-ret);
-        }
-
-  out:
+	}
 
-	DBG_DEBUG("[CEPH] create_dfs_pathat(%s) = %s\n",
-			full_fname != NULL ? full_fname->base_name : "",
-			nt_errstr(status));
+out:
+	DBG_DEBUG("[CEPH] create_dfs_pathat(...) = %s\n", nt_errstr(status));
 
 	TALLOC_FREE(frame);
 	return status;
@@ -2909,22 +3630,23 @@ static NTSTATUS vfs_ceph_read_dfs_pathat
 				size_t *preferral_count)
 {
 	NTSTATUS status = NT_STATUS_NO_MEMORY;
-	size_t bufsize;
+	size_t bufsize = 0;
 	char *link_target = NULL;
-	int referral_len;
+	int referral_len = 0;
 	bool ok;
 #if defined(HAVE_BROKEN_READLINK)
 	char link_target_buf[PATH_MAX];
 #else
 	char link_target_buf[7];
 #endif
-	struct ceph_statx stx = { 0 };
-	struct smb_filename *full_fname = NULL;
+	SMB_STRUCT_STAT st = {0};
+	struct vfs_ceph_fh *dircfh = NULL;
+	struct vfs_ceph_iref iref = {0};
 	int ret;
 
 	if (is_named_stream(smb_fname)) {
 		status = NT_STATUS_OBJECT_NAME_NOT_FOUND;
-		goto err;
+		goto out;
 	}
 
 	if (ppreflist == NULL && preferral_count == NULL) {
@@ -2938,85 +3660,80 @@ static NTSTATUS vfs_ceph_read_dfs_pathat
 		bufsize = PATH_MAX;
 		link_target = talloc_array(mem_ctx, char, bufsize);
 		if (!link_target) {
-			goto err;
+			goto out;
 		}
 	}
 
-	full_fname = full_path_from_dirfsp_atname(talloc_tos(),
-						  dirfsp,
-						  smb_fname);
-	if (full_fname == NULL) {
-		status = NT_STATUS_NO_MEMORY;
-		goto err;
+	ret = vfs_ceph_fetch_fh(handle, dirfsp, &dircfh);
+	if (ret != 0) {
+		status = map_nt_error_from_unix(-ret);
+		goto out;
 	}
 
-	ret = ceph_statx(cmount_of(handle),
-			 full_fname->base_name,
-			 &stx,
-			 SAMBA_STATX_ATTR_MASK,
-			 AT_SYMLINK_NOFOLLOW);
-	if (ret < 0) {
+	ret = vfs_ceph_ll_lookupat2(handle,
+				    dircfh,
+				    smb_fname->base_name,
+				    &iref,
+				    &st);
+	if (ret != 0) {
 		status = map_nt_error_from_unix(-ret);
-		goto err;
+		goto out;
+	}
+
+	if (!S_ISLNK(st.st_ex_mode)) {
+		DBG_INFO("[CEPH] %s is not a link.\n", smb_fname->base_name);
+		status = NT_STATUS_OBJECT_TYPE_MISMATCH;
+		goto out;
 	}
 
-	referral_len = ceph_readlink(cmount_of(handle),
-				     full_fname->base_name,
+	ret = vfs_ceph_ll_readlinkat(handle,
+				     dircfh,
+				     &iref,
 				     link_target,
 				     bufsize - 1);
-	if (referral_len < 0) {
-		/* ceph errors are -errno. */
-		if (-referral_len == EINVAL) {
-			DBG_INFO("%s is not a link.\n",
-				full_fname->base_name);
-			status = NT_STATUS_OBJECT_TYPE_MISMATCH;
-		} else {
-	                status = map_nt_error_from_unix(-referral_len);
-			DBG_ERR("Error reading "
-				"msdfs link %s: %s\n",
-				full_fname->base_name,
-			strerror(errno));
-		}
-                goto err;
+	if (ret < 0) {
+		DBG_ERR("[CEPH] Error reading msdfs link %s: %d\n",
+			smb_fname->base_name, ret);
+		status = map_nt_error_from_unix(-ret);
+		goto out;
 	}
+
+	referral_len = ret;
 	link_target[referral_len] = '\0';
+	DBG_INFO("[CEPH] %s -> %s\n", smb_fname->base_name, link_target);
+
+	if (!strnequal(link_target, "msdfs:", 6)) {
+		status = NT_STATUS_OBJECT_TYPE_MISMATCH;
+		goto out;
+	}
+
+	status = NT_STATUS_OK;
+	if (ppreflist == NULL && preferral_count == NULL) {
+		/* Early return for checking if this is a DFS link. */
+		goto out;
+	}
 
-        DBG_INFO("%s -> %s\n",
-                        full_fname->base_name,
-                        link_target);
-
-        if (!strnequal(link_target, "msdfs:", 6)) {
-                status = NT_STATUS_OBJECT_TYPE_MISMATCH;
-                goto err;
-        }
-
-        if (ppreflist == NULL && preferral_count == NULL) {
-                /* Early return for checking if this is a DFS link. */
-		TALLOC_FREE(full_fname);
-		init_stat_ex_from_ceph_statx(&smb_fname->st, &stx);
-                return NT_STATUS_OK;
-        }
-
-        ok = parse_msdfs_symlink(mem_ctx,
-                        lp_msdfs_shuffle_referrals(SNUM(handle->conn)),
-                        link_target,
-                        ppreflist,
-                        preferral_count);
-
-        if (ok) {
-		init_stat_ex_from_ceph_statx(&smb_fname->st, &stx);
-                status = NT_STATUS_OK;
-        } else {
-                status = NT_STATUS_NO_MEMORY;
-        }
-
-  err:
-
-        if (link_target != link_target_buf) {
-                TALLOC_FREE(link_target);
-        }
-	TALLOC_FREE(full_fname);
-        return status;
+	ok = parse_msdfs_symlink(mem_ctx,
+			lp_msdfs_shuffle_referrals(SNUM(handle->conn)),
+			link_target,
+			ppreflist,
+			preferral_count);
+
+	if (!ok) {
+		status = NT_STATUS_NO_MEMORY;
+	}
+
+out:
+	DBG_DEBUG("[CEPH] read_dfs_pathat(...) = %s\n", nt_errstr(status));
+
+	vfs_ceph_iput(handle, &iref);
+	if ((link_target != NULL) && (link_target != link_target_buf)) {
+		TALLOC_FREE(link_target);
+	}
+	if (NT_STATUS_IS_OK(status)) {
+		memcpy(&smb_fname->st, &st, sizeof(smb_fname->st));
+	}
+	return status;
 }
 
 static struct vfs_fn_pointers ceph_new_fns = {
diff -Npur samba-4.20.7/source3/modules/vfs_gpfs.c samba-4.20.8/source3/modules/vfs_gpfs.c
--- samba-4.20.7/source3/modules/vfs_gpfs.c	2024-01-29 15:41:26.000000000 +0100
+++ samba-4.20.8/source3/modules/vfs_gpfs.c	2025-03-25 15:40:17.000000000 +0100
@@ -55,6 +55,7 @@ struct gpfs_config_data {
 	bool acl;
 	bool settimes;
 	bool recalls;
+	bool clamp_invalid_times;
 	struct {
 		bool gpfs_fstat_x;
 	} pathref_ok;
@@ -1588,19 +1589,29 @@ static NTSTATUS vfs_gpfs_fset_dos_attrib
 	return NT_STATUS_OK;
 }
 
-static int timespec_to_gpfs_time(
-	struct timespec ts, gpfs_timestruc_t *gt, int idx, int *flags)
+static int timespec_to_gpfs_time(struct gpfs_config_data *config,
+				 struct timespec ts,
+				 gpfs_timestruc_t *gt,
+				 int idx,
+				 int *flags)
 {
 	if (is_omit_timespec(&ts)) {
 		return 0;
 	}
 
 	if (ts.tv_sec < 0 || ts.tv_sec > UINT32_MAX) {
-		DBG_NOTICE("GPFS uses 32-bit unsigned timestamps "
-			   "and cannot handle %jd.\n",
-			   (intmax_t)ts.tv_sec);
-		errno = ERANGE;
-		return -1;
+		if (!config->clamp_invalid_times) {
+			DBG_NOTICE("GPFS uses 32-bit unsigned timestamps "
+				   "and cannot handle %jd.\n",
+				   (intmax_t)ts.tv_sec);
+			errno = ERANGE;
+			return -1;
+		}
+		if (ts.tv_sec < 0) {
+			ts.tv_sec = 0;
+		} else {
+			ts.tv_sec = UINT32_MAX;
+		}
 	}
 
 	*flags |= 1 << idx;
@@ -1611,7 +1622,8 @@ static int timespec_to_gpfs_time(
 	return 0;
 }
 
-static int smbd_gpfs_set_times(struct files_struct *fsp,
+static int smbd_gpfs_set_times(struct gpfs_config_data *config,
+			       struct files_struct *fsp,
 			       struct smb_file_time *ft)
 {
 	gpfs_timestruc_t gpfs_times[4];
@@ -1619,18 +1631,22 @@ static int smbd_gpfs_set_times(struct fi
 	int rc;
 
 	ZERO_ARRAY(gpfs_times);
-	rc = timespec_to_gpfs_time(ft->atime, gpfs_times, 0, &flags);
+	rc = timespec_to_gpfs_time(config, ft->atime, gpfs_times, 0, &flags);
 	if (rc != 0) {
 		return rc;
 	}
 
-	rc = timespec_to_gpfs_time(ft->mtime, gpfs_times, 1, &flags);
+	rc = timespec_to_gpfs_time(config, ft->mtime, gpfs_times, 1, &flags);
 	if (rc != 0) {
 		return rc;
 	}
 
 	/* No good mapping from LastChangeTime to ctime, not storing */
-	rc = timespec_to_gpfs_time(ft->create_time, gpfs_times, 3, &flags);
+	rc = timespec_to_gpfs_time(config,
+				   ft->create_time,
+				   gpfs_times,
+				   3,
+				   &flags);
 	if (rc != 0) {
 		return rc;
 	}
@@ -1696,7 +1712,7 @@ static int vfs_gpfs_fntimes(struct vfs_h
 
 	/* Try to use gpfs_set_times if it is enabled and available */
 	if (config->settimes) {
-		return smbd_gpfs_set_times(fsp, ft);
+		return smbd_gpfs_set_times(config, fsp, ft);
 	}
 
 	DBG_DEBUG("gpfs_set_times() not available or disabled, "
@@ -2048,6 +2064,9 @@ static int vfs_gpfs_connect(struct vfs_h
 	config->recalls = lp_parm_bool(SNUM(handle->conn), "gpfs",
 				       "recalls", true);
 
+	config->clamp_invalid_times = lp_parm_bool(SNUM(handle->conn), "gpfs",
+				       "clamp_invalid_times", false);
+
 	ret = vfs_gpfs_check_pathref(config, handle->conn);
 	if (ret != 0) {
 		DBG_ERR("vfs_gpfs_check_pathref() on [%s] failed\n",
diff -Npur samba-4.20.7/source3/modules/vfs_shadow_copy2.c samba-4.20.8/source3/modules/vfs_shadow_copy2.c
--- samba-4.20.7/source3/modules/vfs_shadow_copy2.c	2024-11-19 15:44:47.000000000 +0100
+++ samba-4.20.8/source3/modules/vfs_shadow_copy2.c	2025-03-25 15:40:17.000000000 +0100
@@ -726,31 +726,42 @@ static bool _shadow_copy2_strip_snapshot
 static char *shadow_copy2_find_mount_point(TALLOC_CTX *mem_ctx,
 					   vfs_handle_struct *handle)
 {
-	char *path = talloc_strdup(mem_ctx, handle->conn->connectpath);
+	struct smb_filename *smb_fname_cpath = NULL;
 	dev_t dev;
-	struct stat st;
 	char *p;
 
-	if (stat(path, &st) != 0) {
-		talloc_free(path);
+	smb_fname_cpath = synthetic_smb_fname(mem_ctx,
+					      handle->conn->connectpath,
+					      NULL,
+					      NULL,
+					      0,
+					      0);
+	if (smb_fname_cpath == NULL) {
+		errno = ENOMEM;
 		return NULL;
 	}
 
-	dev = st.st_dev;
+	if (SMB_VFS_NEXT_STAT(handle, smb_fname_cpath) != 0) {
+		TALLOC_FREE(smb_fname_cpath);
+		return NULL;
+	}
+
+	dev = smb_fname_cpath->st.st_ex_dev;
 
-	while ((p = strrchr(path, '/')) && p > path) {
+	while ((p = strrchr(smb_fname_cpath->base_name, '/')) &&
+			p > smb_fname_cpath->base_name) {
 		*p = 0;
-		if (stat(path, &st) != 0) {
-			talloc_free(path);
+		if (SMB_VFS_NEXT_STAT(handle, smb_fname_cpath) != 0) {
+			TALLOC_FREE(smb_fname_cpath);
 			return NULL;
 		}
-		if (st.st_dev != dev) {
+		if (smb_fname_cpath->st.st_ex_dev != dev) {
 			*p = '/';
 			break;
 		}
 	}
 
-	return path;
+	return smb_fname_cpath->base_name;
 }
 
 /**
diff -Npur samba-4.20.7/source3/modules/wscript_build samba-4.20.8/source3/modules/wscript_build
--- samba-4.20.7/source3/modules/wscript_build	2024-09-17 13:37:11.000000000 +0200
+++ samba-4.20.8/source3/modules/wscript_build	2025-03-25 15:40:17.000000000 +0100
@@ -542,7 +542,7 @@ bld.SAMBA3_MODULE('vfs_ceph',
 bld.SAMBA3_MODULE('vfs_ceph_new',
                  subsystem='vfs',
                  source='vfs_ceph_new.c',
-                 deps='POSIXACL_XATTR samba-util cephfs',
+                 deps='POSIXACL_XATTR samba-util',
                  init_function='',
                  internal_module=bld.SAMBA3_IS_STATIC_MODULE('vfs_ceph_new'),
                  enabled=bld.SAMBA3_IS_ENABLED_MODULE('vfs_ceph_new'),
diff -Npur samba-4.20.7/source3/rpc_server/mdssvc/mdssvc.c samba-4.20.8/source3/rpc_server/mdssvc/mdssvc.c
--- samba-4.20.7/source3/rpc_server/mdssvc/mdssvc.c	2024-01-29 15:41:26.000000000 +0100
+++ samba-4.20.8/source3/rpc_server/mdssvc/mdssvc.c	2025-03-25 15:40:17.000000000 +0100
@@ -157,7 +157,8 @@ static bool add_filemeta(struct mds_ctx
 			return false;
 		}
 		if (strcmp(attribute, "kMDItemDisplayName") == 0
-		    || strcmp(attribute, "kMDItemFSName") == 0) {
+		    || strcmp(attribute, "kMDItemFSName") == 0
+		    || strcmp(attribute, "_kMDItemFileName") == 0) {
 			p = strrchr(nfd_path, '/');
 			if (p) {
 				result = dalloc_stradd(meta, p + 1);
@@ -170,7 +171,9 @@ static bool add_filemeta(struct mds_ctx
 			if (result != 0) {
 				return false;
 			}
-		} else if (strcmp(attribute, "kMDItemFSSize") == 0) {
+		} else if (strcmp(attribute, "kMDItemFSSize") == 0
+			|| strcmp(attribute, "kMDItemLogicalSize") == 0)
+		{
 			uint64var = sp->st_ex_size;
 			result = dalloc_add_copy(meta, &uint64var, uint64_t);
 			if (result != 0) {
@@ -196,6 +199,18 @@ static bool add_filemeta(struct mds_ctx
 			if (result != 0) {
 				return false;
 			}
+		} else if (strcmp(attribute, "kMDItemLastUsedDate") == 0) {
+			sl_time = convert_timespec_to_timeval(sp->st_ex_atime);
+			result = dalloc_add_copy(meta, &sl_time, sl_time_t);
+			if (result != 0) {
+				return false;
+			}
+		} else if (strcmp(attribute, "kMDItemContentCreationDate") == 0) {
+			sl_time = convert_timespec_to_timeval(sp->st_ex_btime);
+			result = dalloc_add_copy(meta, &sl_time, sl_time_t);
+			if (result != 0) {
+				return false;
+			}
 		} else {
 			result = dalloc_add_copy(meta, &nil, sl_nil_t);
 			if (result != 0) {
@@ -579,7 +594,9 @@ bool mds_add_result(struct sl_query *slq
 		return true;
 	}
 
-	sb = smb_fname->st;
+	fdos_mode(smb_fname->fsp);
+
+	sb = smb_fname->fsp->fsp_name->st;
 
 	status = smbd_check_access_rights_fsp(slq->mds_ctx->conn->cwd_fsp,
 					      smb_fname->fsp,
diff -Npur samba-4.20.7/source4/auth/ntlm/auth_sam.c samba-4.20.8/source4/auth/ntlm/auth_sam.c
--- samba-4.20.7/source4/auth/ntlm/auth_sam.c	2024-01-29 15:41:26.000000000 +0100
+++ samba-4.20.8/source4/auth/ntlm/auth_sam.c	2025-03-25 15:40:17.000000000 +0100
@@ -1090,6 +1090,7 @@ static NTSTATUS authsam_check_password_i
 		talloc_free(tmp_ctx);
 		return nt_status;
 	}
+	(*user_info_dc)->info->user_flags |= NETLOGON_NTLMV2_ENABLED;
 
 	result = dsdb_is_protected_user(ctx->auth_ctx->sam_ctx,
 					(*user_info_dc)->sids,
diff -Npur samba-4.20.7/source4/ldap_server/ldap_backend.c samba-4.20.8/source4/ldap_server/ldap_backend.c
--- samba-4.20.7/source4/ldap_server/ldap_backend.c	2024-01-29 15:41:26.000000000 +0100
+++ samba-4.20.8/source4/ldap_server/ldap_backend.c	2025-03-25 15:40:17.000000000 +0100
@@ -212,7 +212,7 @@ int ldapsrv_backend_Init(struct ldapsrv_
 	if (opaque_connection_state == NULL) {
 		return LDB_ERR_OPERATIONS_ERROR;
 	}
-	opaque_connection_state->using_encrypted_connection = using_tls || using_seal;
+	opaque_connection_state->using_encrypted_connection = using_tls || using_seal || conn->is_ldapi;
 	ret = ldb_set_opaque(conn->ldb,
 			     DSDB_OPAQUE_ENCRYPTED_CONNECTION_STATE_NAME,
 			     opaque_connection_state);
diff -Npur samba-4.20.7/source4/ldap_server/ldap_server.c samba-4.20.8/source4/ldap_server/ldap_server.c
--- samba-4.20.7/source4/ldap_server/ldap_server.c	2024-09-17 13:37:03.000000000 +0200
+++ samba-4.20.8/source4/ldap_server/ldap_server.c	2025-03-25 15:40:17.000000000 +0100
@@ -1,4 +1,4 @@
-/* 
+/*
    Unix SMB/CIFS implementation.
 
    LDAP server
@@ -300,9 +300,10 @@ static void ldapsrv_accept_tls_done(stru
 */
 static void ldapsrv_accept(struct stream_connection *c,
 			   struct auth_session_info *session_info,
-			   bool is_privileged)
+			   bool is_privileged,
+			   bool is_ldapi)
 {
-	struct ldapsrv_service *ldapsrv_service = 
+	struct ldapsrv_service *ldapsrv_service =
 		talloc_get_type(c->private_data, struct ldapsrv_service);
 	struct ldapsrv_connection *conn;
 	struct cli_credentials *server_credentials;
@@ -319,8 +320,9 @@ static void ldapsrv_accept(struct stream
 		return;
 	}
 	conn->is_privileged = is_privileged;
+	conn->is_ldapi = is_ldapi;
 
-	conn->sockets.send_queue = tevent_queue_create(conn, "ldapsev send queue");
+	conn->sockets.send_queue = tevent_queue_create(conn, "ldapsrv send queue");
 	if (conn->sockets.send_queue == NULL) {
 		stream_terminate_connection(c,
 					    "ldapsrv_accept: tevent_queue_create failed");
@@ -400,7 +402,7 @@ static void ldapsrv_accept(struct stream
 	/* load limits from the conf partition */
 	ldapsrv_load_limits(conn); /* should we fail on error ? */
 
-	/* register the server */	
+	/* register the server */
 	irpc_add_name(c->msg_ctx, "ldap_server");
 
 	DLIST_ADD_END(ldapsrv_service->connections, conn);
@@ -1140,7 +1142,7 @@ static void ldapsrv_accept_nonpriv(struc
 					    "session info");
 		return;
 	}
-	ldapsrv_accept(c, session_info, false);
+	ldapsrv_accept(c, session_info, false, false);
 }
 
 static const struct stream_server_ops ldap_stream_nonpriv_ops = {
@@ -1150,13 +1152,37 @@ static const struct stream_server_ops ld
 	.send_handler		= ldapsrv_send,
 };
 
+static void ldapsrv_accept_nonpriv_ldapi(struct stream_connection *c)
+{
+	struct ldapsrv_service *ldapsrv_service = talloc_get_type_abort(
+		c->private_data, struct ldapsrv_service);
+	struct auth_session_info *session_info;
+	NTSTATUS status;
+
+	status = auth_anonymous_session_info(
+		c, ldapsrv_service->lp_ctx, &session_info);
+	if (!NT_STATUS_IS_OK(status)) {
+		stream_terminate_connection(c, "failed to setup anonymous "
+					    "session info");
+		return;
+	}
+	ldapsrv_accept(c, session_info, false, true);
+}
+
+static const struct stream_server_ops ldapi_stream_nonpriv_ops = {
+	.name			= "ldap",
+	.accept_connection	= ldapsrv_accept_nonpriv_ldapi,
+	.recv_handler		= ldapsrv_recv,
+	.send_handler		= ldapsrv_send,
+};
+
 /* The feature removed behind an #ifdef until we can do it properly
  * with an EXTERNAL bind. */
 
 #define WITH_LDAPI_PRIV_SOCKET
 
 #ifdef WITH_LDAPI_PRIV_SOCKET
-static void ldapsrv_accept_priv(struct stream_connection *c)
+static void ldapsrv_accept_priv_ldapi(struct stream_connection *c)
 {
 	struct ldapsrv_service *ldapsrv_service = talloc_get_type_abort(
 		c->private_data, struct ldapsrv_service);
@@ -1168,12 +1194,12 @@ static void ldapsrv_accept_priv(struct s
 					    "session info");
 		return;
 	}
-	ldapsrv_accept(c, session_info, true);
+	ldapsrv_accept(c, session_info, true, true);
 }
 
-static const struct stream_server_ops ldap_stream_priv_ops = {
+static const struct stream_server_ops ldapi_stream_priv_ops = {
 	.name			= "ldap",
-	.accept_connection	= ldapsrv_accept_priv,
+	.accept_connection	= ldapsrv_accept_priv_ldapi,
 	.recv_handler		= ldapsrv_recv,
 	.send_handler		= ldapsrv_send,
 };
@@ -1375,7 +1401,7 @@ static void ldap_reload_certs(struct ime
   open the ldap server sockets
 */
 static NTSTATUS ldapsrv_task_init(struct task_server *task)
-{	
+{
 	char *ldapi_path;
 #ifdef WITH_LDAPI_PRIV_SOCKET
 	char *priv_dir;
@@ -1385,11 +1411,11 @@ static NTSTATUS ldapsrv_task_init(struct
 
 	switch (lpcfg_server_role(task->lp_ctx)) {
 	case ROLE_STANDALONE:
-		task_server_terminate(task, "ldap_server: no LDAP server required in standalone configuration", 
+		task_server_terminate(task, "ldap_server: no LDAP server required in standalone configuration",
 				      false);
 		return NT_STATUS_INVALID_DOMAIN_ROLE;
 	case ROLE_DOMAIN_MEMBER:
-		task_server_terminate(task, "ldap_server: no LDAP server required in member server configuration", 
+		task_server_terminate(task, "ldap_server: no LDAP server required in member server configuration",
 				      false);
 		return NT_STATUS_INVALID_DOMAIN_ROLE;
 	case ROLE_ACTIVE_DIRECTORY_DC:
@@ -1449,7 +1475,7 @@ static NTSTATUS ldapsrv_task_init(struct
 		load_interface_list(task, task->lp_ctx, &ifaces);
 		num_interfaces = iface_list_count(ifaces);
 
-		/* We have been given an interfaces line, and been 
+		/* We have been given an interfaces line, and been
 		   told to only bind to those interfaces. Create a
 		   socket per interface and bind to only these.
 		*/
@@ -1490,8 +1516,8 @@ static NTSTATUS ldapsrv_task_init(struct
 	}
 
 	status = stream_setup_socket(task, task->event_ctx, task->lp_ctx,
-				     task->model_ops, &ldap_stream_nonpriv_ops,
-				     "unix", ldapi_path, NULL, 
+				     task->model_ops, &ldapi_stream_nonpriv_ops,
+				     "unix", ldapi_path, NULL,
 				     lpcfg_socket_options(task->lp_ctx),
 				     ldap_service, task->process_context);
 	talloc_free(ldapi_path);
@@ -1523,7 +1549,7 @@ static NTSTATUS ldapsrv_task_init(struct
 	}
 
 	status = stream_setup_socket(task, task->event_ctx, task->lp_ctx,
-				     task->model_ops, &ldap_stream_priv_ops,
+				     task->model_ops, &ldapi_stream_priv_ops,
 				     "unix", ldapi_path, NULL,
 				     lpcfg_socket_options(task->lp_ctx),
 				     ldap_service,
diff -Npur samba-4.20.7/source4/ldap_server/ldap_server.h samba-4.20.8/source4/ldap_server/ldap_server.h
--- samba-4.20.7/source4/ldap_server/ldap_server.h	2024-01-29 15:41:26.000000000 +0100
+++ samba-4.20.8/source4/ldap_server/ldap_server.h	2025-03-25 15:40:17.000000000 +0100
@@ -1,19 +1,19 @@
-/* 
+/*
    Unix SMB/CIFS implementation.
    LDAP server
    Copyright (C) Volker Lendecke 2004
    Copyright (C) Stefan Metzmacher 2004
-   
+
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 3 of the License, or
    (at your option) any later version.
-   
+
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
-   
+
    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
@@ -50,6 +50,7 @@ struct ldapsrv_connection {
 
 	bool global_catalog;
 	bool is_privileged;
+	bool is_ldapi;
 	enum ldap_server_require_strong_auth require_strong_auth;
 	bool authz_logged;
 	enum ldap_server_referral_scheme referral_scheme;
diff -Npur samba-4.20.7/source4/librpc/rpc/pyrpc.h samba-4.20.8/source4/librpc/rpc/pyrpc.h
--- samba-4.20.7/source4/librpc/rpc/pyrpc.h	2024-01-29 15:41:26.000000000 +0100
+++ samba-4.20.8/source4/librpc/rpc/pyrpc.h	2025-03-25 15:40:17.000000000 +0100
@@ -50,6 +50,7 @@ typedef struct {
 	struct dcerpc_pipe *pipe;
 	struct dcerpc_binding_handle *binding_handle;
 	struct tevent_context *ev;
+	bool raise_result_exceptions;
 } dcerpc_InterfaceObject;
 
 
diff -Npur samba-4.20.7/source4/librpc/rpc/pyrpc_util.c samba-4.20.8/source4/librpc/rpc/pyrpc_util.c
--- samba-4.20.7/source4/librpc/rpc/pyrpc_util.c	2024-01-29 15:41:26.000000000 +0100
+++ samba-4.20.8/source4/librpc/rpc/pyrpc_util.c	2025-03-25 15:40:17.000000000 +0100
@@ -102,11 +102,29 @@ PyObject *py_dcerpc_interface_init_helpe
 	PyObject *py_lp_ctx = Py_None, *py_credentials = Py_None, *py_basis = Py_None;
 	NTSTATUS status;
 	unsigned int timeout = (unsigned int)-1;
+	int raise_result_exceptions = 1;
 	const char *kwnames[] = {
-		"binding", "lp_ctx", "credentials", "timeout", "basis_connection", NULL
+		"binding",
+		"lp_ctx",
+		"credentials",
+		"timeout",
+		"basis_connection",
+		"raise_result_exceptions",
+		NULL
 	};
+	bool ok;
 
-	if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s|OOIO:samr", discard_const_p(char *, kwnames), &binding_string, &py_lp_ctx, &py_credentials, &timeout, &py_basis)) {
+	ok = PyArg_ParseTupleAndKeywords(args,
+					 kwargs,
+					 "s|OOIOp",
+					 discard_const_p(char *, kwnames),
+					 &binding_string,
+					 &py_lp_ctx,
+					 &py_credentials,
+					 &timeout,
+					 &py_basis,
+					 &raise_result_exceptions);
+	if (!ok) {
 		return NULL;
 	}
 
@@ -122,6 +140,7 @@ PyObject *py_dcerpc_interface_init_helpe
 		return NULL;
 	}
 
+	ret->raise_result_exceptions = (raise_result_exceptions != 0);
 	ret->pipe = NULL;
 	ret->binding_handle = NULL;
 	ret->ev = NULL;
@@ -300,7 +319,7 @@ static PyObject *py_dcerpc_run_function(
 		return NULL;
 	}
 
-	result = md->unpack_out_data(r);
+	result = md->unpack_out_data(r, iface->raise_result_exceptions);
 
 	talloc_free(mem_ctx);
 	return result;
diff -Npur samba-4.20.7/source4/librpc/rpc/pyrpc_util.h samba-4.20.8/source4/librpc/rpc/pyrpc_util.h
--- samba-4.20.7/source4/librpc/rpc/pyrpc_util.h	2024-01-29 15:41:26.000000000 +0100
+++ samba-4.20.8/source4/librpc/rpc/pyrpc_util.h	2025-03-25 15:40:17.000000000 +0100
@@ -34,7 +34,7 @@ void PyErr_SetDCERPCStatus(struct dcerpc
 
 typedef NTSTATUS (*py_dcerpc_call_fn) (struct dcerpc_binding_handle *, TALLOC_CTX *, void *);
 typedef bool (*py_data_pack_fn) (PyObject *args, PyObject *kwargs, void *r);
-typedef PyObject *(*py_data_unpack_fn) (void *r);
+typedef PyObject *(*py_data_unpack_fn) (void *r, bool raise_result_exception);
 
 struct PyNdrRpcMethodDef {
 	const char *name;
diff -Npur samba-4.20.7/source4/rpc_server/lsa/lsa_lookup.c samba-4.20.8/source4/rpc_server/lsa/lsa_lookup.c
--- samba-4.20.7/source4/rpc_server/lsa/lsa_lookup.c	2024-01-29 15:41:26.000000000 +0100
+++ samba-4.20.8/source4/rpc_server/lsa/lsa_lookup.c	2025-03-25 15:40:17.000000000 +0100
@@ -35,6 +35,7 @@ struct dcesrv_lsa_TranslatedItem {
 	uint32_t flags;
 	uint32_t wb_idx;
 	bool done;
+	bool invalid_sid;
 	struct {
 		const char *domain; /* only $DOMAIN\ */
 		const char *namespace; /* $NAMESPACE\ or @$NAMESPACE */
@@ -380,6 +381,10 @@ static NTSTATUS dcesrv_lsa_LookupSids_ba
 			status = view->lookup_sid(state, item);
 			if (NT_STATUS_IS_OK(status)) {
 				item->done = true;
+			} else if (NT_STATUS_EQUAL(status, NT_STATUS_INVALID_SID)) {
+				item->done = true;
+				item->invalid_sid = true;
+				status = NT_STATUS_OK;
 			} else if (NT_STATUS_EQUAL(status, NT_STATUS_NONE_MAPPED)) {
 				status = NT_STATUS_OK;
 			} else if (NT_STATUS_EQUAL(status, NT_STATUS_SOME_NOT_MAPPED)) {
@@ -438,6 +443,7 @@ static NTSTATUS dcesrv_lsa_LookupSids_ba
 	struct dcesrv_lsa_LookupSids_base_state *state)
 {
 	struct lsa_LookupSids3 *r = &state->r;
+	uint32_t num_invalid_sid = 0;
 	uint32_t i;
 
 	for (i=0;i<r->in.sids->num_sids;i++) {
@@ -470,9 +476,18 @@ static NTSTATUS dcesrv_lsa_LookupSids_ba
 		if (item->type != SID_NAME_UNKNOWN) {
 			(*r->out.count)++;
 		}
+		if (item->invalid_sid) {
+			num_invalid_sid++;
+		}
 	}
 
 	if (*r->out.count == 0) {
+		if (num_invalid_sid != 0) {
+			for (i=0;i<r->out.names->count;i++) {
+				r->out.names->names[i].name.string = NULL;
+			}
+			return NT_STATUS_INVALID_SID;
+		}
 		return NT_STATUS_NONE_MAPPED;
 	}
 	if (*r->out.count != r->in.sids->num_sids) {
