mirror of
https://github.com/samba-team/samba.git
synced 2024-12-23 17:34:34 +03:00
smbd: Reset O_NONBLOCK on open files
See the comment inline :-) Bug: https://bugzilla.samba.org/show_bug.cgi?id=12268 Signed-off-by: Volker Lendecke <vl@samba.org> Reviewed-by: Simo <simo@samba.org> Autobuild-User(master): Volker Lendecke <vl@samba.org> Autobuild-Date(master): Thu Sep 15 20:21:41 CEST 2016 on sn-devel-144
This commit is contained in:
parent
064d240323
commit
e69b17d603
@ -901,6 +901,25 @@ static NTSTATUS open_file(files_struct *fsp,
|
||||
return status;
|
||||
}
|
||||
|
||||
if (local_flags & O_NONBLOCK) {
|
||||
/*
|
||||
* GPFS can return ETIMEDOUT for pread on
|
||||
* nonblocking file descriptors when files
|
||||
* migrated to tape need to be recalled. I
|
||||
* could imagine this happens elsehwere
|
||||
* too. With blocking file descriptors this
|
||||
* does not happen.
|
||||
*/
|
||||
ret = set_blocking(fsp->fh->fd, true);
|
||||
if (ret == -1) {
|
||||
status = map_nt_error_from_unix(errno);
|
||||
DBG_WARNING("Could not set fd to blocking: "
|
||||
"%s\n", strerror(errno));
|
||||
fd_close(fsp);
|
||||
return status;
|
||||
}
|
||||
}
|
||||
|
||||
ret = SMB_VFS_FSTAT(fsp, &smb_fname->st);
|
||||
if (ret == -1) {
|
||||
/* If we have an fd, this stat should succeed. */
|
||||
|
Loading…
Reference in New Issue
Block a user