summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>2012-09-05 10:46:16 -0700
committerJeremy Allison <jra@samba.org>2012-09-05 20:43:31 +0200
commitd7fb237810f10c7a7d44cf425163152811eba64c (patch)
tree0bca5fc80f483754065483de17cd447e1d7c627a
parent5e492f8d324d269c2eb0e12f6dca2cb8133c4b8e (diff)
downloadsamba-d7fb237810f10c7a7d44cf425163152811eba64c.tar.gz
samba-d7fb237810f10c7a7d44cf425163152811eba64c.tar.bz2
samba-d7fb237810f10c7a7d44cf425163152811eba64c.zip
Remove an unncessary FTRUNCATE call in the open path. We can rely on O_TRUC.
Suggested by Volker.
-rw-r--r--source3/smbd/open.c30
1 files changed, 1 insertions, 29 deletions
diff --git a/source3/smbd/open.c b/source3/smbd/open.c
index 6378521d76..9c4ba369cd 100644
--- a/source3/smbd/open.c
+++ b/source3/smbd/open.c
@@ -710,13 +710,6 @@ static NTSTATUS open_file(files_struct *fsp,
const char *wild;
int ret;
- /*
- * We can't actually truncate here as the file may be locked.
- * open_file_ntcreate will take care of the truncate later. JRA.
- */
-
- local_flags &= ~O_TRUNC;
-
#if defined(O_NONBLOCK) && defined(S_ISFIFO)
/*
* We would block on opening a FIFO with no one else on the
@@ -725,6 +718,7 @@ static NTSTATUS open_file(files_struct *fsp,
*/
if (file_existed && S_ISFIFO(smb_fname->st.st_ex_mode)) {
+ local_flags &= ~O_TRUNC; /* Can't truncate a FIFO. */
local_flags |= O_NONBLOCK;
}
#endif
@@ -2382,10 +2376,6 @@ static NTSTATUS open_file_ntcreate(connection_struct *conn,
(unsigned int)unx_mode, (unsigned int)access_mask,
(unsigned int)open_access_mask));
- /*
- * open_file strips any O_TRUNC flags itself.
- */
-
fsp_open = open_file(fsp, conn, req, parent_dir,
flags|flags2, unx_mode, access_mask,
open_access_mask, &new_file_created);
@@ -2575,24 +2565,6 @@ static NTSTATUS open_file_ntcreate(connection_struct *conn,
*/
/*
- * If requested, truncate the file.
- */
-
- if (!new_file_created && (flags2&O_TRUNC)) {
- /*
- * We are modifying the file after open - update the stat
- * struct..
- */
- if ((SMB_VFS_FTRUNCATE(fsp, 0) == -1) ||
- (SMB_VFS_FSTAT(fsp, &smb_fname->st)==-1)) {
- status = map_nt_error_from_unix(errno);
- TALLOC_FREE(lck);
- fd_close(fsp);
- return status;
- }
- }
-
- /*
* According to Samba4, SEC_FILE_READ_ATTRIBUTE is always granted,
* but we don't have to store this - just ignore it on access check.
*/