Fix for getting allocate_file_space to return the correct errno.
authorJeremy Allison <jra@samba.org>
Mon, 6 Aug 2001 19:21:23 +0000 (19:21 +0000)
committerJeremy Allison <jra@samba.org>
Mon, 6 Aug 2001 19:21:23 +0000 (19:21 +0000)
Jeremy.
(This used to be commit 298595e8cb0ac4f5b5ad9a522cca79d030d7e0fc)

source3/smbd/vfs.c

index 84aa81c38c2464d4f70cf8922669f998dd1d1239..70e0c8657bf33a9df92a7dedcf80da736ac39556 100644 (file)
@@ -357,7 +357,7 @@ int vfs_allocate_file_space(files_struct *fsp, SMB_OFF_T len)
                        SMB_OFF_T current_len_to_write = MIN(sizeof(zero_space),len_to_write);
 
                        retlen = vfs_ops->write(fsp,fsp->fd,zero_space,current_len_to_write);
-                       if (retlen != current_len_to_write) {
+                       if (retlen <= 0) {
                                /* Write fail - return to original size. */
                                int save_errno = errno;
                                fsp->conn->vfs_ops.ftruncate(fsp, fsp->fd, st.st_size);
@@ -370,7 +370,7 @@ int vfs_allocate_file_space(files_struct *fsp, SMB_OFF_T len)
                        DEBUG(10,("vfs_allocate_file_space: file %s, grow. wrote %.0f\n",
                                        fsp->fsp_name, (double)current_len_to_write ));
 
-                       len_to_write -= current_len_to_write;
+                       len_to_write -= retlen;
                }
                set_filelen_write_cache(fsp, len);
        }