]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
s3:lib: round itime to NTTIME resolution in make_file_id_from_itime()
authorRalph Boehme <slow@samba.org>
Mon, 9 Sep 2019 09:12:08 +0000 (11:12 +0200)
committerRalph Boehme <slow@samba.org>
Tue, 10 Sep 2019 19:05:29 +0000 (19:05 +0000)
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>
source3/lib/file_id.c

index 7d4fb006afec805ca37a50efca60b2b2ae618cc1..21f22ffbf3bec3dcae927fe94243e1800cc920ba 100644 (file)
@@ -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) {
                /*