[SCM] Samba Shared Repository - branch master updated
Jeremy Allison
jra at samba.org
Thu Mar 31 23:59:01 UTC 2022
The branch, master has been updated
via 4b0296995cc smbd: consolidate nested if expressions
via 643da37fd13 smbd: remove itime and file_id logic and code
via 8ad0febd134 vfs: bump VFS version to 47
via 8532d7b38cd CI: consolidate SMB2-FILEID and SMB2-FILEID-UNIQUE torture test suites
via 24f4bea5b8e vfs_fruit: change default for "fruit:zero_file_id" option to yes
from 9fa67ba8eeb vfs_shadow_copy2: implement readdir()
https://git.samba.org/?p=samba.git;a=shortlog;h=master
- Log -----------------------------------------------------------------
commit 4b0296995cc316910279f7adeb083d3f17b3e4ab
Author: Ralph Boehme <slow at samba.org>
Date: Tue Mar 29 17:29:18 2022 +0200
smbd: consolidate nested if expressions
Signed-off-by: Ralph Boehme <slow at samba.org>
Reviewed-by: Jeremy Allison <jra at samba.org>
Autobuild-User(master): Jeremy Allison <jra at samba.org>
Autobuild-Date(master): Thu Mar 31 23:58:54 UTC 2022 on sn-devel-184
commit 643da37fd139413651a6198fb0f6e550f7de6584
Author: Ralph Boehme <slow at samba.org>
Date: Mon Mar 28 11:48:37 2022 +0200
smbd: remove itime and file_id logic and code
This bases File-Ids on the inode numbers again. The whole stuff was
added because at that time Apple clients
1. would be upset by inode number reusage and
2. had a client side bug in their fallback implemetentation that
assigns File-Ids on the client side in case the server provides
File-Ids of 0.
After discussion with folks at Apple it should be safe these days to
rely on the Mac to generate its own File-Ids and let Samba return 0
File-Ids.
Signed-off-by: Ralph Boehme <slow at samba.org>
Reviewed-by: Jeremy Allison <jra at samba.org>
commit 8ad0febd1347ddf355581da38eea89228f89507b
Author: Ralph Boehme <slow at samba.org>
Date: Wed Mar 30 14:27:26 2022 +0200
vfs: bump VFS version to 47
The VFS version bump to 47 was missed when adding SMB_VFS_FSTATAT(). While at
it, fix the version history.
Signed-off-by: Ralph Boehme <slow at samba.org>
Reviewed-by: Jeremy Allison <jra at samba.org>
commit 8532d7b38cdb8538336d9ffc8e818e818e2d72d9
Author: Ralph Boehme <slow at samba.org>
Date: Mon Mar 28 12:38:58 2022 +0200
CI: consolidate SMB2-FILEID and SMB2-FILEID-UNIQUE torture test suites
We don't need seperate test suites here, all tests are related to
File-Ids.
Signed-off-by: Ralph Boehme <slow at samba.org>
Reviewed-by: Jeremy Allison <jra at samba.org>
commit 24f4bea5b8eb3c71ca85c9444d57b736078525d9
Author: Ralph Boehme <slow at samba.org>
Date: Tue Mar 29 17:38:15 2022 +0200
vfs_fruit: change default for "fruit:zero_file_id" option to yes
After discussion with folks at Apple it should be safe these days to rely on the
Mac to generate its own File-Ids and let Samba return 0 File-Ids.
Signed-off-by: Ralph Boehme <slow at samba.org>
Reviewed-by: Jeremy Allison <jra at samba.org>
-----------------------------------------------------------------------
Summary of changes:
docs-xml/manpages/vfs_fruit.8.xml | 8 ++--
librpc/idl/xattr.idl | 7 ++++
source3/include/includes.h | 8 ----
source3/include/proto.h | 2 -
source3/include/vfs.h | 9 +++--
source3/lib/file_id.c | 36 -----------------
source3/lib/file_id.h | 6 ---
source3/lib/system.c | 78 -------------------------------------
source3/modules/test_vfs_gpfs.c | 54 -------------------------
source3/modules/vfs_ceph.c | 4 --
source3/modules/vfs_default.c | 4 --
source3/modules/vfs_fruit.c | 2 +-
source3/modules/vfs_glusterfs.c | 4 --
source3/modules/vfs_gpfs.c | 43 --------------------
source3/rpc_server/mdssvc/mdssvc.c | 21 ++--------
source3/script/tests/test_itime.sh | 39 -------------------
source3/selftest/tests.py | 4 --
source3/smbd/dosmode.c | 59 ++++++++++------------------
source3/smbd/open.c | 44 +++------------------
source3/smbd/smb2_create.c | 8 ++--
source3/smbd/smb2_query_directory.c | 27 -------------
source3/smbd/trans2.c | 11 +++++-
source4/selftest/tests.py | 1 -
source4/torture/smb2/create.c | 41 ++-----------------
source4/torture/smb2/smb2.c | 1 -
25 files changed, 67 insertions(+), 454 deletions(-)
delete mode 100755 source3/script/tests/test_itime.sh
Changeset truncated at 500 lines:
diff --git a/docs-xml/manpages/vfs_fruit.8.xml b/docs-xml/manpages/vfs_fruit.8.xml
index bfaf8e42919..4caf308a612 100644
--- a/docs-xml/manpages/vfs_fruit.8.xml
+++ b/docs-xml/manpages/vfs_fruit.8.xml
@@ -397,12 +397,12 @@
identifier if the client has negotiated AAPL.</para>
<para>Mac applications and / or the Mac SMB client code expect the
on-disk file identifier to have the semantics of HFS+ Catalog Node
- Identifier (CNID). Samba provides File-IDs based on a file's
- initial creation date if the option <smbconfoption name="store dos
- attributes"/> is enabled. Returning a file identifier of
+ Identifier (CNID). Samba provides File-IDs based on a file's inode
+ number which gets recycled across file creation and deletion and
+ can therefor not be used for Mac client. Returning a file identifier of
zero causes the Mac client to stop using and trusting the file id
returned from the server.</para>
- <para>The default is <emphasis>no</emphasis>.</para>
+ <para>The default is <emphasis>yes</emphasis>.</para>
</listitem>
</varlistentry>
diff --git a/librpc/idl/xattr.idl b/librpc/idl/xattr.idl
index a2c4f25d0fd..82d4ec5a473 100644
--- a/librpc/idl/xattr.idl
+++ b/librpc/idl/xattr.idl
@@ -94,12 +94,19 @@ interface xattr
NTTIME create_time;
} xattr_DosInfo4;
+ typedef struct {
+ xattr_DosInfoValidFlags valid_flags;
+ uint32 attrib;
+ NTTIME create_time;
+ } xattr_DosInfo5;
+
typedef [public,switch_type(uint16)] union {
[case(0xFFFF)] xattr_DosInfoFFFFCompat compatinfoFFFF;
[case(1)] xattr_DosInfo1 info1;
[case(2)] xattr_DosInfo2Old oldinfo2;
[case(3)] xattr_DosInfo3 info3;
[case(4)] xattr_DosInfo4 info4;
+ [case(5)] xattr_DosInfo5 info5;
} xattr_DosInfo;
typedef [public] struct {
diff --git a/source3/include/includes.h b/source3/include/includes.h
index 510a0b96539..ee0628eb31a 100644
--- a/source3/include/includes.h
+++ b/source3/include/includes.h
@@ -183,8 +183,6 @@ typedef sig_atomic_t volatile SIG_ATOMIC_T;
/* Is birthtime real, or was it calculated ? */
#define ST_EX_IFLAG_CALCULATED_BTIME (1 << 0)
-#define ST_EX_IFLAG_CALCULATED_ITIME (1 << 1)
-#define ST_EX_IFLAG_CALCULATED_FILE_ID (1 << 2)
/*
* Type for stat structure.
@@ -193,7 +191,6 @@ typedef sig_atomic_t volatile SIG_ATOMIC_T;
struct stat_ex {
dev_t st_ex_dev;
ino_t st_ex_ino;
- uint64_t st_ex_file_id;
mode_t st_ex_mode;
nlink_t st_ex_nlink;
uid_t st_ex_uid;
@@ -204,11 +201,6 @@ struct stat_ex {
struct timespec st_ex_mtime;
struct timespec st_ex_ctime;
struct timespec st_ex_btime; /* birthtime */
- /*
- * Immutable original birth time aka invented time. Set when a file
- * is created, never changes thereafter. May not be set by the client.
- */
- struct timespec st_ex_itime; /* invented time */
blksize_t st_ex_blksize;
blkcnt_t st_ex_blocks;
diff --git a/source3/include/proto.h b/source3/include/proto.h
index 916032a931d..2f96a35c531 100644
--- a/source3/include/proto.h
+++ b/source3/include/proto.h
@@ -170,12 +170,10 @@ int sys_fcntl_ptr(int fd, int cmd, void *arg);
int sys_fcntl_long(int fd, int cmd, long arg);
int sys_fcntl_int(int fd, int cmd, int arg);
void update_stat_ex_mtime(struct stat_ex *dst, struct timespec write_ts);
-void update_stat_ex_itime(struct stat_ex *dst, struct timespec itime);
void update_stat_ex_create_time(struct stat_ex *dst, struct timespec create_time);
void update_stat_ex_file_id(struct stat_ex *dst, uint64_t file_id);
void update_stat_ex_from_saved_stat(struct stat_ex *dst,
const struct stat_ex *src);
-void create_clock_itime(struct stat_ex *dst);
int sys_stat(const char *fname, SMB_STRUCT_STAT *sbuf,
bool fake_dir_create_times);
int sys_fstat(int fd, SMB_STRUCT_STAT *sbuf,
diff --git a/source3/include/vfs.h b/source3/include/vfs.h
index 333fdba1548..2694cb5dffc 100644
--- a/source3/include/vfs.h
+++ b/source3/include/vfs.h
@@ -360,13 +360,16 @@
* Version 45 - Remove SYS_ACL_BLOB_GET_FILE
* Version 45 - Add SMB_VFS_FCHFLAGS
* Version 45 - Remove SMB_VFS_GETXATTR
+ * Change to Version 46 - will ship with 4.16
* Version 46 - Rename SMB_VFS_KERNEL_FLOCK to SMB_VFS_FILESYSTEM_SHAREMODE
* Version 46 - Add flags and xferlen args to SMB_VFS_OFFLOAD_READ_RECV
- * Version 46 - Add SMB_VFS_FSTATAT
- * Version 46 - Change SMB_VFS_GET_REAL_FILENAME to return NTSTATUS
+ * Change to Version 47 - will ship with 4.17
+ * Version 47 - Add SMB_VFS_FSTATAT
+ * Version 47 - Change SMB_VFS_GET_REAL_FILENAME to return NTSTATUS
+ * Version 47 - remove st_ex_itime from struct stat_ex
*/
-#define SMB_VFS_INTERFACE_VERSION 46
+#define SMB_VFS_INTERFACE_VERSION 47
/*
All intercepted VFS operations must be declared as static functions inside module source
diff --git a/source3/lib/file_id.c b/source3/lib/file_id.c
index 6bfcf1463d2..545437afefa 100644
--- a/source3/lib/file_id.c
+++ b/source3/lib/file_id.c
@@ -80,39 +80,3 @@ void pull_file_id_24(const char *buf, struct file_id *id)
id->extid = IVAL(buf, 16);
id->extid |= ((uint64_t)IVAL(buf,20))<<32;
}
-
-uint64_t make_file_id_from_itime(const struct stat_ex *st)
-{
- struct timespec itime = st->st_ex_itime;
- ino_t ino = st->st_ex_ino;
- uint64_t file_id_low;
- uint64_t file_id;
-
- if (st->st_ex_iflags & ST_EX_IFLAG_CALCULATED_ITIME) {
- return ino;
- }
-
- round_timespec_to_nttime(&itime);
-
- file_id_low = itime.tv_nsec;
- if (file_id_low == 0) {
- /*
- * This could be by coincidence, but more likely the filesystem
- * is only giving us seconds granularity. We need more fine
- * grained granularity for the File-ID, so combine with the
- * inode number.
- */
- file_id_low = ino & ((1 << 30) - 1);
- }
-
- /*
- * Set the high bit so ideally File-IDs based on inode numbers and
- * File-IDs based on Birth Time use disjoint ranges, given inodes never
- * have the high bit set.
- */
- file_id = ((uint64_t)1) << 63;
- file_id |= (uint64_t)itime.tv_sec << 30;
- file_id |= file_id_low;
-
- return file_id;
-}
diff --git a/source3/lib/file_id.h b/source3/lib/file_id.h
index 630d154c077..255b1ddc5c5 100644
--- a/source3/lib/file_id.h
+++ b/source3/lib/file_id.h
@@ -41,10 +41,4 @@ void push_file_id_16(char *buf, const struct file_id *id);
void push_file_id_24(char *buf, const struct file_id *id);
void pull_file_id_24(const char *buf, struct file_id *id);
-/*
- * Make a SMB File-ID from itime
- */
-struct stat_ex;
-uint64_t make_file_id_from_itime(const struct stat_ex *st);
-
#endif
diff --git a/source3/lib/system.c b/source3/lib/system.c
index 00d31692e00..da92d9b64c8 100644
--- a/source3/lib/system.c
+++ b/source3/lib/system.c
@@ -210,9 +210,6 @@ static void make_create_timespec(const struct stat *pst, struct stat_ex *dst,
dst->st_ex_btime = calc_create_time_stat(pst);
dst->st_ex_iflags |= ST_EX_IFLAG_CALCULATED_BTIME;
}
-
- dst->st_ex_itime = dst->st_ex_btime;
- dst->st_ex_iflags |= ST_EX_IFLAG_CALCULATED_ITIME;
}
/****************************************************************************
@@ -239,19 +236,6 @@ void update_stat_ex_create_time(struct stat_ex *dst,
dst->st_ex_iflags &= ~ST_EX_IFLAG_CALCULATED_BTIME;
}
-void update_stat_ex_itime(struct stat_ex *dst,
- struct timespec itime)
-{
- dst->st_ex_itime = itime;
- dst->st_ex_iflags &= ~ST_EX_IFLAG_CALCULATED_ITIME;
-}
-
-void update_stat_ex_file_id(struct stat_ex *dst, uint64_t file_id)
-{
- dst->st_ex_file_id = file_id;
- dst->st_ex_iflags &= ~ST_EX_IFLAG_CALCULATED_FILE_ID;
-}
-
void update_stat_ex_from_saved_stat(struct stat_ex *dst,
const struct stat_ex *src)
{
@@ -262,14 +246,6 @@ void update_stat_ex_from_saved_stat(struct stat_ex *dst,
if (!(src->st_ex_iflags & ST_EX_IFLAG_CALCULATED_BTIME)) {
update_stat_ex_create_time(dst, src->st_ex_btime);
}
-
- if (!(src->st_ex_iflags & ST_EX_IFLAG_CALCULATED_ITIME)) {
- update_stat_ex_itime(dst, src->st_ex_itime);
- }
-
- if (!(src->st_ex_iflags & ST_EX_IFLAG_CALCULATED_FILE_ID)) {
- update_stat_ex_file_id(dst, src->st_ex_file_id);
- }
}
void init_stat_ex_from_stat (struct stat_ex *dst,
@@ -306,60 +282,6 @@ void init_stat_ex_from_stat (struct stat_ex *dst,
#else
dst->st_ex_flags = 0;
#endif
- dst->st_ex_file_id = dst->st_ex_ino;
- dst->st_ex_iflags |= ST_EX_IFLAG_CALCULATED_FILE_ID;
-}
-
-/*******************************************************************
- Create a clock-derived itime (invented) time. Used to generate
- the fileid.
-********************************************************************/
-
-void create_clock_itime(struct stat_ex *dst)
-{
- NTTIME tval;
- struct timespec itime;
- uint64_t mixin;
- uint8_t rval;
-
- /* Start with the system clock. */
- itime = timespec_current();
-
- /* Convert to NTTIME. */
- tval = unix_timespec_to_nt_time(itime);
-
- /*
- * In case the system clock is poor granularity
- * (happens on VM or docker images) then mix in
- * 8 bits of randomness.
- */
- generate_random_buffer((unsigned char *)&rval, 1);
- mixin = rval;
-
- /*
- * Shift up by 55 bits. This gives us approx 114 years
- * of headroom.
- */
- mixin <<= 55;
-
- /* And OR into the nttime. */
- tval |= mixin;
-
- /*
- * Convert to a unix timespec, ignoring any
- * constraints on seconds being higher than
- * TIME_T_MAX or lower than TIME_T_MIN. These
- * are only needed to allow unix display time functions
- * to work correctly, and this is being used to
- * generate a fileid. All we care about is the
- * NTTIME being valid across all NTTIME ranges
- * (which we carefully ensured above).
- */
-
- itime = nt_time_to_unix_timespec_raw(tval);
-
- /* And set as a generated itime. */
- update_stat_ex_itime(dst, itime);
}
/*******************************************************************
diff --git a/source3/modules/test_vfs_gpfs.c b/source3/modules/test_vfs_gpfs.c
index b03a46a352d..44454f8f40a 100644
--- a/source3/modules/test_vfs_gpfs.c
+++ b/source3/modules/test_vfs_gpfs.c
@@ -84,59 +84,6 @@ static void test_dosmode_to_gpfs_winattrs(void **state)
GPFS_WINATTR_SYSTEM);
}
-static void test_gpfs_get_file_id(void **state)
-{
- struct gpfs_iattr64 iattr;
- uint64_t fileid1, fileid2;
- NTSTATUS status;
-
- /*
- * Ensure that the generated fileid only depends on the
- * ia_inode, ia_gen and ia_modsnapid fields in struct
- * gpfs_iattr64 and any changes to these fields result in a
- * different file id.
- */
-
- memset(&iattr, 1, sizeof(iattr));
- iattr.ia_inode = 0x11;
- iattr.ia_gen = 0x22;
- iattr.ia_modsnapid = 0x33;
- status = vfs_gpfs_get_file_id(&iattr, &fileid1);
- assert_true(NT_STATUS_IS_OK(status));
-
- memset(&iattr, 2, sizeof(iattr));
- iattr.ia_inode = 0x11;
- iattr.ia_gen = 0x22;
- iattr.ia_modsnapid = 0x33;
- status = vfs_gpfs_get_file_id(&iattr, &fileid2);
- assert_true(NT_STATUS_IS_OK(status));
- assert_int_equal(fileid1, fileid2);
-
- iattr.ia_inode = 0x44;
- iattr.ia_gen = 0x22;
- iattr.ia_modsnapid = 0x33;
- status = vfs_gpfs_get_file_id(&iattr, &fileid2);
- assert_true(NT_STATUS_IS_OK(status));
- assert_true(NT_STATUS_IS_OK(status));
- assert_int_not_equal(fileid1, fileid2);
-
- iattr.ia_inode = 0x11;
- iattr.ia_gen = 0x44;
- iattr.ia_modsnapid = 0x33;
- status = vfs_gpfs_get_file_id(&iattr, &fileid2);
- assert_true(NT_STATUS_IS_OK(status));
- assert_true(NT_STATUS_IS_OK(status));
- assert_int_not_equal(fileid1, fileid2);
-
- iattr.ia_inode = 0x11;
- iattr.ia_gen = 0x22;
- iattr.ia_modsnapid = 0x44;
- status = vfs_gpfs_get_file_id(&iattr, &fileid2);
- assert_true(NT_STATUS_IS_OK(status));
- assert_true(NT_STATUS_IS_OK(status));
- assert_int_not_equal(fileid1, fileid2);
-}
-
int main(int argc, char **argv)
{
const struct CMUnitTest tests[] = {
@@ -146,7 +93,6 @@ int main(int argc, char **argv)
#endif /* #ifdef HAVE_KERNEL_OPLOCKS_LINUX */
cmocka_unit_test(test_gpfs_winattrs_to_dosmode),
cmocka_unit_test(test_dosmode_to_gpfs_winattrs),
- cmocka_unit_test(test_gpfs_get_file_id),
};
cmocka_set_message_output(CM_OUTPUT_SUBUNIT);
diff --git a/source3/modules/vfs_ceph.c b/source3/modules/vfs_ceph.c
index 9188b7991d4..44c9cf3053a 100644
--- a/source3/modules/vfs_ceph.c
+++ b/source3/modules/vfs_ceph.c
@@ -749,12 +749,8 @@ static void init_stat_ex_from_ceph_statx(struct stat_ex *dst, const struct ceph_
dst->st_ex_btime = stx->stx_btime;
dst->st_ex_ctime = stx->stx_ctime;
dst->st_ex_mtime = stx->stx_mtime;
- dst->st_ex_itime = dst->st_ex_btime;
- dst->st_ex_iflags = ST_EX_IFLAG_CALCULATED_ITIME;
dst->st_ex_blksize = stx->stx_blksize;
dst->st_ex_blocks = stx->stx_blocks;
- dst->st_ex_file_id = dst->st_ex_ino;
- dst->st_ex_iflags |= ST_EX_IFLAG_CALCULATED_FILE_ID;
}
static int cephwrap_stat(struct vfs_handle_struct *handle,
diff --git a/source3/modules/vfs_default.c b/source3/modules/vfs_default.c
index 6c4f15ba39f..7108402a407 100644
--- a/source3/modules/vfs_default.c
+++ b/source3/modules/vfs_default.c
@@ -3294,10 +3294,6 @@ static uint64_t vfswrap_fs_file_id(struct vfs_handle_struct *handle,
{
uint64_t file_id;
- if (!(psbuf->st_ex_iflags & ST_EX_IFLAG_CALCULATED_FILE_ID)) {
- return psbuf->st_ex_file_id;
- }
-
if (handle->conn->base_share_dev == psbuf->st_ex_dev) {
return (uint64_t)psbuf->st_ex_ino;
}
diff --git a/source3/modules/vfs_fruit.c b/source3/modules/vfs_fruit.c
index 75ddf3226b7..3c19aad8b0a 100644
--- a/source3/modules/vfs_fruit.c
+++ b/source3/modules/vfs_fruit.c
@@ -360,7 +360,7 @@ static int init_fruit_config(vfs_handle_struct *handle)
config->aapl_zero_file_id =
lp_parm_bool(SNUM(handle->conn), FRUIT_PARAM_TYPE_NAME,
- "zero_file_id", false);
+ "zero_file_id", true);
config->readdir_attr_rsize = lp_parm_bool(
SNUM(handle->conn), "readdir_attr", "aapl_rsize", true);
diff --git a/source3/modules/vfs_glusterfs.c b/source3/modules/vfs_glusterfs.c
index bce73094c54..56a403b5547 100644
--- a/source3/modules/vfs_glusterfs.c
+++ b/source3/modules/vfs_glusterfs.c
@@ -71,16 +71,12 @@ static void smb_stat_ex_from_stat(struct stat_ex *dst, const struct stat *src)
dst->st_ex_btime.tv_sec = src->st_mtime;
dst->st_ex_blksize = src->st_blksize;
dst->st_ex_blocks = src->st_blocks;
- dst->st_ex_file_id = dst->st_ex_ino;
- dst->st_ex_iflags |= ST_EX_IFLAG_CALCULATED_FILE_ID;
#ifdef STAT_HAVE_NSEC
dst->st_ex_atime.tv_nsec = src->st_atime_nsec;
dst->st_ex_mtime.tv_nsec = src->st_mtime_nsec;
dst->st_ex_ctime.tv_nsec = src->st_ctime_nsec;
dst->st_ex_btime.tv_nsec = src->st_mtime_nsec;
#endif
- dst->st_ex_itime = dst->st_ex_btime;
- dst->st_ex_iflags |= ST_EX_IFLAG_CALCULATED_ITIME;
}
/* pre-opened glfs_t */
diff --git a/source3/modules/vfs_gpfs.c b/source3/modules/vfs_gpfs.c
index 5ef1f5f2e73..5c2b2c3705e 100644
--- a/source3/modules/vfs_gpfs.c
+++ b/source3/modules/vfs_gpfs.c
@@ -1434,40 +1434,6 @@ static unsigned int vfs_gpfs_dosmode_to_winattrs(uint32_t dosmode)
return winattrs;
}
-static NTSTATUS vfs_gpfs_get_file_id(struct gpfs_iattr64 *iattr,
- uint64_t *fileid)
-{
- uint8_t input[sizeof(gpfs_ino64_t) +
- sizeof(gpfs_gen64_t) +
- sizeof(gpfs_snapid64_t)];
- uint8_t digest[gnutls_hash_get_len(GNUTLS_DIG_SHA1)];
- int rc;
-
- DBG_DEBUG("ia_inode 0x%llx, ia_gen 0x%llx, ia_modsnapid 0x%llx\n",
- iattr->ia_inode, iattr->ia_gen, iattr->ia_modsnapid);
-
- SBVAL(input,
- 0, iattr->ia_inode);
- SBVAL(input,
- sizeof(gpfs_ino64_t), iattr->ia_gen);
- SBVAL(input,
- sizeof(gpfs_ino64_t) + sizeof(gpfs_gen64_t), iattr->ia_modsnapid);
-
- GNUTLS_FIPS140_SET_LAX_MODE();
- rc = gnutls_hash_fast(GNUTLS_DIG_SHA1, input, sizeof(input), &digest);
- GNUTLS_FIPS140_SET_STRICT_MODE();
-
- if (rc != 0) {
- return gnutls_error_to_ntstatus(rc,
- NT_STATUS_HASH_NOT_SUPPORTED);
- }
-
- memcpy(fileid, &digest, sizeof(*fileid));
- DBG_DEBUG("file_id 0x%" PRIx64 "\n", *fileid);
-
- return NT_STATUS_OK;
-}
-
static struct timespec gpfs_timestruc64_to_timespec(struct gpfs_timestruc64 g)
{
return (struct timespec) { .tv_sec = g.tv_sec, .tv_nsec = g.tv_nsec };
@@ -1484,8 +1450,6 @@ static NTSTATUS vfs_gpfs_fget_dos_attributes(struct vfs_handle_struct *handle,
struct gpfs_iattr64 iattr = { };
unsigned int litemask = 0;
struct timespec ts;
- uint64_t file_id;
- NTSTATUS status;
int ret;
SMB_VFS_HANDLE_GET_DATA(handle, config,
@@ -1556,17 +1520,10 @@ static NTSTATUS vfs_gpfs_fget_dos_attributes(struct vfs_handle_struct *handle,
return map_nt_error_from_unix(errno);
}
- ZERO_STRUCT(file_id);
- status = vfs_gpfs_get_file_id(&iattr, &file_id);
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
ts = gpfs_timestruc64_to_timespec(iattr.ia_createtime);
*dosmode |= vfs_gpfs_winattrs_to_dosmode(iattr.ia_winflags);
update_stat_ex_create_time(&fsp->fsp_name->st, ts);
- update_stat_ex_file_id(&fsp->fsp_name->st, file_id);
return NT_STATUS_OK;
}
diff --git a/source3/rpc_server/mdssvc/mdssvc.c b/source3/rpc_server/mdssvc/mdssvc.c
index 956e097eaf4..d159b86e64d 100644
--
Samba Shared Repository
More information about the samba-cvs
mailing list