This ensures we preserve btime, itime and File-ID.
As the Durable Handles code calls vfs_stat_fsp() in the DH disconnect function,
previously the btime was lost and NOT stored in the cookie. With this change the
cookie will store the correct btime (and iflags), which requires us to call
dos_mode() in the reconnect function to ensure we pass
vfs_default_durable_reconnect_check_stat().
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>
Autobuild-User(master): Ralph Böhme <slow@samba.org>
Autobuild-Date(master): Tue Sep 10 20:22:21 UTC 2019 on sn-devel-184
+++ /dev/null
-^samba3.smb2.fileid.fileid\(nt4_dc\)
return NT_STATUS_OBJECT_NAME_NOT_FOUND;
}
+ (void)dos_mode(fsp->conn, fsp->fsp_name);
+
ok = vfs_default_durable_reconnect_check_stat(&cookie.stat_info,
&fsp->fsp_name->st,
fsp_str_dbg(fsp));
NTSTATUS vfs_stat_fsp(files_struct *fsp)
{
int ret;
+ struct stat_ex saved_stat = fsp->fsp_name->st;
if(fsp->fh->fd == -1) {
if (fsp->posix_flags & FSP_POSIX_FLAGS_OPEN) {
if (ret == -1) {
return map_nt_error_from_unix(errno);
}
+ update_stat_ex_from_saved_stat(&fsp->fsp_name->st, &saved_stat);
return NT_STATUS_OK;
}