The branch, v4-21-stable has been updated
       via  cc104bd1f42 VERSION: Disable GIT_SNAPSHOT for the 4.21.5 release.
       via  1e6a8496fe5 WHATSNEW: Add release notes for Samba 4.21.5.
       via  1f9c1dad691 vfs: Fix Bug 15791, vfs_acl_tdb unlinkat()
       via  fbd038e3db9 vfs: Fix a lock order violation in unlinkat_acl_tdb()
       via  cd0b2f6df72 vfs_ceph_new: Add path based fallback for 
SMB_VFS_FNTIMES
       via  8f3bc967657 vfs_ceph_new: Add path based fallback for SMB_VFS_FCHMOD
       via  997b4736797 vfs_ceph_new: Add path based fallback for SMB_VFS_FCHOWN
       via  9d9998a528b s3/lib: fix matching interfaces with multiple assigned 
IPs
       via  6533b3db6ce vfs_ceph_new: detect case sensitivity in CephFS
       via  f57377d1b9c vfs_glusterfs: Retrieve fs capabilities using 
vfs_get_fs_capabilities
       via  2a70febce8a vfs_ceph_new: Retrieve fs capabilties using 
vfs_get_fs_capabilities
       via  32e6aefa86d vfs_ceph_new: Populate fs capabilities within 
vfs_ceph_statvfs
       via  3b5c47c40f2 vfs_ceph: Retrieve fs capabilties using 
vfs_get_fs_capabilities
       via  78ab723ea2b vfs_ceph: Populate fs capabilities within 
cephwrap_statvfs
       via  904341acc5f vfs_default: Retrieve fs capabilites using 
vfs_get_fs_capabilties
       via  8c7d9f39d9f s3/smbd: Add a helper to fetch fs capabilities
       via  37a74eb39a9 smbd: consolidate fs capabilities code in 
vfswrap_fs_capabilities()
       via  40d2b73f24b vfs_ceph_new: Do not resolve by inode number
       via  d9151f66cc3 vfs_ceph_new: Handle absolute path in vfs_ceph_ll_walk
       via  6b997c180f5 vfs_ceph_new: Remove unused code in cephmount_mount_fs()
       via  08f2d5abca6 vfs_ceph_new: Remove redundant re-intialization to NULL
       via  101c2999830 vfs_ceph_new: use libcephfs nonblocking API for 
async-io ops
       via  f04ad3933b5 vfs_ceph_new: Remove unused symbol for ceph_readdir
       via  2900b44971e source3/wscript: Introduce auto mode to build ceph vfs 
modules
       via  d7ac6062d61 s3:utils: Remove call of ads_startup() from 
net_ads_keytab_create()
       via  92253a4708b s3:libads: Make sure that REALM is always added to 
keytab principals
       via  c0e3cabdb70 lib:krb5_wrap: Add smb_krb5_parse_name_flags()
       via  b7843d0f422 vfs_shadow_copy2: Use VFS interface to derive mount 
point
       via  cb882609555 ctdb-utils: Fix incorrect FSF address
       via  480f27625dd python:tdb_util: "samba-tool domain backup offline" 
hangs
       via  fdb73ecba3b provision: always use a large transaction index cache
       via  15232a62876 netcmd: Increase the transaction_index_cache_size to 
200k for schemaupgrade
       via  6dbb7b0b108 VERSION: Bump version up to Samba 4.21.5...
      from  0b084c0bc6f VERSION: Disable GIT_SNAPSHOT for the 4.21.4 release.

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


- Log -----------------------------------------------------------------
-----------------------------------------------------------------------

Summary of changes:
 VERSION                                     |   2 +-
 WHATSNEW.txt                                |  81 ++-
 ctdb/utils/pmda/Install                     |   3 +-
 ctdb/utils/pmda/Remove                      |   3 +-
 ctdb/utils/pmda/domain.h                    |   3 +-
 ctdb/utils/pmda/help                        |   3 +-
 ctdb/utils/pmda/pmda_ctdb.c                 |   3 +-
 ctdb/utils/pmda/pmns                        |   3 +-
 lib/krb5_wrap/krb5_samba.c                  |  39 +-
 lib/krb5_wrap/krb5_samba.h                  |   5 +
 python/samba/netcmd/domain/schemaupgrade.py |   6 +-
 python/samba/provision/__init__.py          |   9 +-
 python/samba/tdb_util.py                    |   5 +-
 source3/lib/interface.c                     |   5 +-
 source3/libads/kerberos_keytab.c            |  19 +-
 source3/modules/vfs_acl_tdb.c               |  51 +-
 source3/modules/vfs_ceph.c                  |   7 +-
 source3/modules/vfs_ceph_new.c              | 858 ++++++++++++++++++++--------
 source3/modules/vfs_default.c               |  61 +-
 source3/modules/vfs_glusterfs.c             |   6 +-
 source3/modules/vfs_shadow_copy2.c          |  31 +-
 source3/smbd/proto.h                        |   2 +
 source3/smbd/smb2_trans2.c                  |  18 +-
 source3/smbd/vfs.c                          |  72 +++
 source3/utils/net_ads.c                     |  11 -
 source3/wscript                             |  24 +-
 26 files changed, 940 insertions(+), 390 deletions(-)


Changeset truncated at 500 lines:

diff --git a/VERSION b/VERSION
index a8a8ae01d2a..f0179480db1 100644
--- a/VERSION
+++ b/VERSION
@@ -27,7 +27,7 @@ SAMBA_COPYRIGHT_STRING="Copyright Andrew Tridgell and the 
Samba Team 1992-2024"
 ########################################################
 SAMBA_VERSION_MAJOR=4
 SAMBA_VERSION_MINOR=21
-SAMBA_VERSION_RELEASE=4
+SAMBA_VERSION_RELEASE=5
 
 ########################################################
 # If a official release has a serious bug              #
diff --git a/WHATSNEW.txt b/WHATSNEW.txt
index 6d5e65dd043..873b4ec20df 100644
--- a/WHATSNEW.txt
+++ b/WHATSNEW.txt
@@ -1,3 +1,81 @@
+                   ==============================
+                   Release Notes for Samba 4.21.5
+                           March 31, 2025
+                   ==============================
+
+
+This is the latest stable release of the Samba 4.21 release series.
+
+
+Changes since 4.21.4
+--------------------
+
+o  Douglas Bagnall <[email protected]>
+   * BUG 15795: ldb index cache is too small on known large transactions
+     (schemaupgrade, provision).
+
+o  Ralph Boehme <[email protected]>
+   * BUG 15822: Enable support for cephfs case insensitive behavior.
+   * BUG 15823: Subnet based interfaces definition not listening on all covered
+     IP addresses.
+
+o  Pavel Filipenský <[email protected]>
+   * BUG 15727: net ad join fails with "Failed to join domain: failed to create
+     kerberos keytab".
+
+o  Xavi Hernandez <[email protected]>
+   * BUG 15822: Enable support for cephfs case insensitive behavior.
+
+o  Volker Lendecke <[email protected]>
+   * BUG 15791: Remove of file or directory not possible with vfs_acl_tdb.
+
+o  Andréas Leroux <[email protected]>
+   * BUG 15795: ldb index cache is too small on known large transactions
+     (schemaupgrade, provision).
+
+o  Anoop C S <[email protected]>
+   * BUG 15797: Unable to connect to CephFS subvolume shares with
+     vfs_shadow_copy2.
+   * BUG 15810: Add async io API from libcephfs to ceph_new VFS module.
+   * BUG 15818: vfs_ceph_new module does not work with other modules for
+     snapshot management.
+   * BUG 15822: Enable support for cephfs case insensitive behavior.
+   * BUG 15834: vfs_ceph_new: Add path based fallback for SMB_VFS_FCHOWN,
+     SMB_VFS_FCHMOD and SMB_VFS_FNTIMES.
+
+o  Martin Schwenke <[email protected]>
+   * BUG 15820: Incorrect FSF address in ctdb pcp scripts.
+
+o  Shachar Sharon <[email protected]>
+   * BUG 15810: Add async io API from libcephfs to ceph_new VFS module.
+
+o  Andrea Venturoli <[email protected]>
+   * 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.21.4
                          February 17, 2025
@@ -83,8 +161,7 @@ database (https://bugzilla.samba.org/).
 ======================================================================
 
 
-Release notes for older releases follow:
-----------------------------------------
+----------------------------------------------------------------------
                    ==============================
                    Release Notes for Samba 4.21.3
                           January 06, 2025
diff --git a/ctdb/utils/pmda/Install b/ctdb/utils/pmda/Install
index a56a63506a8..bd12b7486cf 100644
--- a/ctdb/utils/pmda/Install
+++ b/ctdb/utils/pmda/Install
@@ -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 --git a/ctdb/utils/pmda/Remove b/ctdb/utils/pmda/Remove
index 7d1c509e50e..8bf0fe76e15 100644
--- a/ctdb/utils/pmda/Remove
+++ b/ctdb/utils/pmda/Remove
@@ -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 --git a/ctdb/utils/pmda/domain.h b/ctdb/utils/pmda/domain.h
index 0bed7fef599..b00d32d90dc 100644
--- a/ctdb/utils/pmda/domain.h
+++ b/ctdb/utils/pmda/domain.h
@@ -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 --git a/ctdb/utils/pmda/help b/ctdb/utils/pmda/help
index 0e9984eab3a..26b5385b0da 100644
--- a/ctdb/utils/pmda/help
+++ b/ctdb/utils/pmda/help
@@ -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 --git a/ctdb/utils/pmda/pmda_ctdb.c b/ctdb/utils/pmda/pmda_ctdb.c
index 4f7933de9c5..7ac8a3b38d1 100644
--- a/ctdb/utils/pmda/pmda_ctdb.c
+++ b/ctdb/utils/pmda/pmda_ctdb.c
@@ -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 --git a/ctdb/utils/pmda/pmns b/ctdb/utils/pmda/pmns
index dc7e3ac2bfa..c9f6644d52f 100644
--- a/ctdb/utils/pmda/pmns
+++ b/ctdb/utils/pmda/pmns
@@ -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 --git a/lib/krb5_wrap/krb5_samba.c b/lib/krb5_wrap/krb5_samba.c
index 451616c79e5..0a4a7ea986f 100644
--- a/lib/krb5_wrap/krb5_samba.c
+++ b/lib/krb5_wrap/krb5_samba.c
@@ -836,6 +836,29 @@ krb5_error_code smb_krb5_get_allowed_etypes(krb5_context 
context,
 krb5_error_code smb_krb5_parse_name(krb5_context context,
                                    const char *name,
                                    krb5_principal *principal)
+{
+       return smb_krb5_parse_name_flags(context, name, 0, principal);
+}
+
+/**
+ * @brief Convert a string principal name to a Kerberos principal.
+ *
+ * @param[in]  context  The library context
+ *
+ * @param[in]  name     The principal as a unix charset string.
+ *
+ * @param[in]  flags    Flags for krb5_parse_name_flags()
+ *
+ * @param[out] principal The newly allocated principal.
+ *
+ * Use krb5_free_principal() to free a principal when it is no longer needed.
+ *
+ * @return 0 on success, a Kerberos error code otherwise.
+ */
+krb5_error_code smb_krb5_parse_name_flags(krb5_context context,
+                                         const char *name,
+                                         int flags,
+                                         krb5_principal *principal)
 {
        krb5_error_code ret;
        char *utf8_name;
@@ -843,17 +866,19 @@ krb5_error_code smb_krb5_parse_name(krb5_context context,
        TALLOC_CTX *frame = talloc_stackframe();
 
        if (!push_utf8_talloc(frame, &utf8_name, name, &converted_size)) {
-               talloc_free(frame);
+               TALLOC_FREE(frame);
                return ENOMEM;
        }
+       TALLOC_FREE(frame);
 
-       ret = krb5_parse_name(context, utf8_name, principal);
-       if (ret == KRB5_PARSE_MALFORMED) {
-               ret = krb5_parse_name_flags(context, utf8_name,
-                                           KRB5_PRINCIPAL_PARSE_ENTERPRISE,
-                                           principal);
+       ret = krb5_parse_name_flags(context, utf8_name, flags, principal);
+       if (ret != KRB5_PARSE_MALFORMED) {
+               return ret;
        }
-       TALLOC_FREE(frame);
+
+       flags |= KRB5_PRINCIPAL_PARSE_ENTERPRISE;
+       ret = krb5_parse_name_flags(context, utf8_name, flags, principal);
+
        return ret;
 }
 
diff --git a/lib/krb5_wrap/krb5_samba.h b/lib/krb5_wrap/krb5_samba.h
index 0acf567371c..9da8a2b4806 100644
--- a/lib/krb5_wrap/krb5_samba.h
+++ b/lib/krb5_wrap/krb5_samba.h
@@ -186,6 +186,11 @@ krb5_error_code smb_krb5_parse_name(krb5_context context,
                                const char *name, /* in unix charset */
                                 krb5_principal *principal);
 
+krb5_error_code smb_krb5_parse_name_flags(krb5_context context,
+                                         const char *name, /* unix charset */
+                                         int flags,
+                                         krb5_principal *principal);
+
 krb5_error_code smb_krb5_unparse_name(TALLOC_CTX *mem_ctx,
                                      krb5_context context,
                                      krb5_const_principal principal,
diff --git a/python/samba/netcmd/domain/schemaupgrade.py 
b/python/samba/netcmd/domain/schemaupgrade.py
index ff00a771b20..33b942ca460 100644
--- a/python/samba/netcmd/domain/schemaupgrade.py
+++ b/python/samba/netcmd/domain/schemaupgrade.py
@@ -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 --git a/python/samba/provision/__init__.py 
b/python/samba/provision/__init__.py
index dea50aa364e..f091ccf2f18 100644
--- a/python/samba/provision/__init__.py
+++ b/python/samba/provision/__init__.py
@@ -1299,12 +1299,9 @@ def setup_samdb(path, session_info, provision_backend, 
lp, names,
         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 --git a/python/samba/tdb_util.py b/python/samba/tdb_util.py
index 99b6e02e03f..202fbdb3f8b 100644
--- a/python/samba/tdb_util.py
+++ b/python/samba/tdb_util.py
@@ -37,9 +37,10 @@ def tdb_copy(file1, file2, readonly=False):
         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 --git a/source3/lib/interface.c b/source3/lib/interface.c
index 032362b4da3..5f351999e41 100644
--- a/source3/lib/interface.c
+++ b/source3/lib/interface.c
@@ -624,9 +624,12 @@ static void interpret_interface(char *token)
                                }
                                add_interface(&probed_ifaces[i]);
                                probed_ifaces[i].netmask = saved_mask;
-                               return;
+                               added = true;
                        }
                }
+               if (added) {
+                       return;
+               }
                DEBUG(2,("interpret_interface: Can't determine ip for "
                        "broadcast address %s\n",
                        token));
diff --git a/source3/libads/kerberos_keytab.c b/source3/libads/kerberos_keytab.c
index 5913db299ad..49a892e5a55 100644
--- a/source3/libads/kerberos_keytab.c
+++ b/source3/libads/kerberos_keytab.c
@@ -364,12 +364,29 @@ static krb5_error_code pw2kt_process_add_info(struct 
pw2kt_keytab_state *state2,
        krb5_principal princ = NULL;
        krb5_principal *a = NULL;
        size_t len;
+       const char *realm = NULL;
 
-       ret = smb_krb5_parse_name(state2->context, princs, &princ);
+       ret = smb_krb5_parse_name_flags(state2->context,
+                                       princs,
+                                       KRB5_PRINCIPAL_PARSE_NO_DEF_REALM,
+                                       &princ);
        if (ret != 0) {
                DBG_ERR("Failed to parse principal: %s\n", princs);
                return ret;
        }
+       /* Add realm part if missing (e.g. SPNs synced from DC) */
+       realm = smb_krb5_principal_get_realm(state2, state2->context, princ);
+       if (realm == NULL || *realm == 0) {
+               ret = smb_krb5_principal_set_realm(state2->context,
+                                                  princ,
+                                                  lp_realm());
+               if (ret != 0) {
+                       DBG_ERR("Failed to add realm to principal: %s\n",
+                               princs);
+                       return ret;
+               }
+       }
+
        len = talloc_array_length(state2->princ_array);
        a = talloc_realloc(state2,
                           state2->princ_array,
diff --git a/source3/modules/vfs_acl_tdb.c b/source3/modules/vfs_acl_tdb.c
index 5ecba7ba757..fb99c58b2f7 100644
--- a/source3/modules/vfs_acl_tdb.c
+++ b/source3/modules/vfs_acl_tdb.c
@@ -58,7 +58,7 @@ static bool acl_tdb_init(void)
 
        become_root();
        acl_db = db_open(NULL, dbname, 0, TDB_DEFAULT, O_RDWR|O_CREAT, 0600,
-                        DBWRAP_LOCK_ORDER_1, DBWRAP_FLAG_NONE);
+                        DBWRAP_LOCK_ORDER_2, DBWRAP_FLAG_NONE);
        unbecome_root();
 
        if (acl_db == NULL) {
@@ -195,38 +195,43 @@ static int unlinkat_acl_tdb(vfs_handle_struct *handle,
                        const struct smb_filename *smb_fname,
                        int flags)
 {
-       struct smb_filename *smb_fname_tmp = NULL;
-       struct db_context *db = acl_db;
-       int ret = -1;
-
-       smb_fname_tmp = cp_smb_filename_nostream(talloc_tos(), smb_fname);
-       if (smb_fname_tmp == NULL) {
-               errno = ENOMEM;
-               goto out;
-       }
+       struct stat_ex st = {};
+       int ret;
 
-       ret = vfs_stat(handle->conn, smb_fname_tmp);
-       if (ret == -1) {
-               goto out;
+       if (!is_named_stream(smb_fname)) {
+               if (VALID_STAT(smb_fname->st)) {
+                       st = smb_fname->st;
+               } else {
+                       ret = SMB_VFS_NEXT_FSTATAT(handle,
+                                                  dirfsp,
+                                                  smb_fname,
+                                                  &st,
+                                                  AT_SYMLINK_NOFOLLOW);
+                       if (ret == -1) {
+                               return ret;
+                       }
+               }
        }
 
        if (flags & AT_REMOVEDIR) {
-               ret = rmdir_acl_common(handle,
-                               dirfsp,
-                               smb_fname_tmp);
+               ret = rmdir_acl_common(handle, dirfsp, smb_fname);
        } else {
-               ret = unlink_acl_common(handle,
-                               dirfsp,
-                               smb_fname_tmp,
-                               flags);
+               ret = unlink_acl_common(handle, dirfsp, smb_fname, flags);
        }
 
        if (ret == -1) {
-               goto out;
+               return -1;
+       }
+
+       if (is_named_stream(smb_fname)) {
+               /*
+                * ACLs only stored for basenames
+                */
+               return ret;
        }
 
-       acl_tdb_delete(handle, db, &smb_fname_tmp->st);
- out:
+       acl_tdb_delete(handle, acl_db, &st);
+
        return ret;
 }
 
diff --git a/source3/modules/vfs_ceph.c b/source3/modules/vfs_ceph.c
index fd450af16c2..a72061d5d9d 100644
--- a/source3/modules/vfs_ceph.c
+++ b/source3/modules/vfs_ceph.c
@@ -363,6 +363,9 @@ static int cephwrap_statvfs(struct vfs_handle_struct 
*handle,
        statbuf->TotalFileNodes = statvfs_buf.f_files;
        statbuf->FreeFileNodes = statvfs_buf.f_ffree;
        statbuf->FsIdentifier = statvfs_buf.f_fsid;
+       statbuf->FsCapabilities =
+               FILE_CASE_SENSITIVE_SEARCH | FILE_CASE_PRESERVED_NAMES;
+
        DBG_DEBUG("[CEPH] f_bsize: %ld, f_blocks: %ld, f_bfree: %ld, "
                  "f_bavail: %ld\n",
                  (long int)statvfs_buf.f_bsize,
@@ -377,9 +380,7 @@ static uint32_t cephwrap_fs_capabilities(
        struct vfs_handle_struct *handle,
        enum timestamp_set_resolution *p_ts_res)
 {
-       uint32_t caps = FILE_CASE_SENSITIVE_SEARCH | FILE_CASE_PRESERVED_NAMES;
-
-       *p_ts_res = TIMESTAMP_SET_NT_OR_BETTER;
+       uint32_t caps = vfs_get_fs_capabilities(handle->conn, p_ts_res);
 
        return caps;
 }
diff --git a/source3/modules/vfs_ceph_new.c b/source3/modules/vfs_ceph_new.c
index 1cb04f1f9ee..4622d8659cd 100644
--- a/source3/modules/vfs_ceph_new.c
+++ b/source3/modules/vfs_ceph_new.c
@@ -102,6 +102,9 @@ static const struct enum_list enum_vfs_cephfs_proxy_vals[] 
= {
 #define CEPH_FN(_name) typeof(_name) *_name ## _fn
 
 struct vfs_ceph_config {
+#if HAVE_CEPH_ASYNCIO
+       struct tevent_threaded_context *tctx;
+#endif
        const char *conf_file;
        const char *user_id;
        const char *fsname;
@@ -110,7 +113,15 @@ struct vfs_ceph_config {
        enum vfs_cephfs_proxy_mode proxy;
        void *libhandle;
 
-       CEPH_FN(ceph_ll_lookup_inode);
+       /*


-- 
Samba Shared Repository

Reply via email to