diff options
author | Ralph Boehme <slow@samba.org> | 2019-09-09 11:12:08 +0200 |
---|---|---|
committer | Stefan Metzmacher <metze@samba.org> | 2019-09-10 21:13:09 +0000 |
commit | 6dfeecf345c0a009fff6b233241156eff3160467 (patch) | |
tree | 5f81521df8b4f52665b63e2ccc1a55ffdce62757 /source3/lib/file_id.c | |
parent | cca34da443ed6ee530fcf8c0def63d4b00527ffd (diff) | |
download | samba-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)
Diffstat (limited to 'source3/lib/file_id.c')
-rw-r--r-- | source3/lib/file_id.c | 2 |
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) { /* |