summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRalph Boehme <slow@samba.org>2019-09-09 11:12:08 +0200
committerStefan Metzmacher <metze@samba.org>2019-09-10 21:13:09 +0000
commit6dfeecf345c0a009fff6b233241156eff3160467 (patch)
tree5f81521df8b4f52665b63e2ccc1a55ffdce62757
parentcca34da443ed6ee530fcf8c0def63d4b00527ffd (diff)
downloadsamba-6dfeecf345c0a009fff6b233241156eff3160467.tar.gz
s3:lib: round itime to NTTIME resolution in make_file_id_from_itime()
The rounding is needed because when a file is created via eg an SMB2 CREATE request, we need to calculate the correct File-ID for the QFID Create-Context or for a subsequent GETINFO SMB request on the same file-handle. Any later metadata request that received the File-ID will do so by going through dos_mode() -> ... -> parse_dos_attribute_blob(), where the File-ID will be calculated from the on-disk itime which has NTTIME resolution. As long as that is the only available itime backend, I'm rounding itime inside make_file_id_from_itime(), not in the callers. BUG: https://bugzilla.samba.org/show_bug.cgi?id=14121 Signed-off-by: Ralph Boehme <slow@samba.org> Reviewed-by: Stefan Metzmacher <metze@samba.org> (cherry picked from commit 84abeaa60ffced276da2b28b8add6efaa6da5ca6)
-rw-r--r--source3/lib/file_id.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/source3/lib/file_id.c b/source3/lib/file_id.c
index 7d4fb006afe..21f22ffbf3b 100644
--- a/source3/lib/file_id.c
+++ b/source3/lib/file_id.c
@@ -102,6 +102,8 @@ uint64_t make_file_id_from_itime(SMB_STRUCT_STAT *st)
return ino;
}
+ round_timespec_to_nttime(&itime);
+
file_id_low = itime.tv_nsec;
if (file_id_low == 0) {
/*