From 9a04ae232a3da869526834a41178e5ab660e924c Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Thu, 2 Dec 2010 17:52:11 -0800 Subject: [PATCH] Replace lseek()/write()/lseek() triple with pwrite call. We already emulate this inside pwrite under the covers. Jeremy. (cherry picked from commit 6a528564cb2f19905b3d4380bcad05f5c6ef8550) --- source3/modules/vfs_default.c | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/source3/modules/vfs_default.c b/source3/modules/vfs_default.c index 79f66db6d92..648aa34fcc3 100644 --- a/source3/modules/vfs_default.c +++ b/source3/modules/vfs_default.c @@ -886,7 +886,6 @@ static int vfswrap_ftruncate(vfs_handle_struct *handle, files_struct *fsp, SMB_O int result = -1; SMB_STRUCT_STAT st; char c = 0; - SMB_OFF_T currpos; START_PROFILE(syscall_ftruncate); @@ -909,10 +908,6 @@ static int vfswrap_ftruncate(vfs_handle_struct *handle, files_struct *fsp, SMB_O /* According to W. R. Stevens advanced UNIX prog. Pure 4.3 BSD cannot extend a file with ftruncate. Provide alternate implementation for this */ - currpos = SMB_VFS_LSEEK(fsp, 0, SEEK_CUR); - if (currpos == -1) { - goto done; - } /* Do an fstat to see if the file is longer than the requested size in which case the ftruncate above should have @@ -939,15 +934,10 @@ static int vfswrap_ftruncate(vfs_handle_struct *handle, files_struct *fsp, SMB_O goto done; } - if (SMB_VFS_LSEEK(fsp, len-1, SEEK_SET) != len -1) - goto done; - - if (SMB_VFS_WRITE(fsp, &c, 1)!=1) + if (SMB_VFS_PWRITE(fsp, &c, 1, len-1)!=1) { goto done; + } - /* Seek to where we were */ - if (SMB_VFS_LSEEK(fsp, currpos, SEEK_SET) != currpos) - goto done; result = 0; done: -- 2.11.4.GIT