diff options
author | Ralph Boehme <slow@samba.org> | 2019-09-09 11:12:08 +0200 |
---|---|---|
committer | Ralph Boehme <slow@samba.org> | 2019-09-10 19:05:29 +0000 |
commit | 84abeaa60ffced276da2b28b8add6efaa6da5ca6 (patch) | |
tree | 299e34b27e0cdf38e4f8c4318121989c1894d520 /source3/lib | |
parent | 5403bb22e6cb39baf6dc1b91558744d41e9f6f64 (diff) | |
download | samba-84abeaa60ffced276da2b28b8add6efaa6da5ca6.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>
Diffstat (limited to 'source3/lib')
-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) { /* |