The branch, v3-3-test has been updated
       via  0e4182d6fd49afe5b2629552e0b53c6e177275a9 (commit)
      from  d727c40eabc72f9351dcf5cd17a079c83f349c65 (commit)

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-3-test


- Log -----------------------------------------------------------------
commit 0e4182d6fd49afe5b2629552e0b53c6e177275a9
Author: Jeremy Allison <[email protected]>
Date:   Tue Jan 13 11:15:00 2009 -0800

    Fix bug #6019 File corruption in Clustered SMB/NFS environment managed via 
CTDB
    Jeremy.

-----------------------------------------------------------------------

Summary of changes:
 source/lib/sendfile.c |    4 ++--
 source/smbd/reply.c   |    4 ++--
 2 files changed, 4 insertions(+), 4 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source/lib/sendfile.c b/source/lib/sendfile.c
index d1b1785..fb10cae 100644
--- a/source/lib/sendfile.c
+++ b/source/lib/sendfile.c
@@ -65,7 +65,7 @@ ssize_t sys_sendfile(int tofd, int fromfd, const DATA_BLOB 
*header, SMB_OFF_T of
 #endif
                } while (nwritten == -1 && errno == EINTR);
                if (nwritten == -1) {
-                       if (errno == ENOSYS) {
+                       if (errno == ENOSYS || errno == EINVAL) {
                                /* Ok - we're in a world of pain here. We just 
sent
                                 * the header, but the sendfile failed. We have 
to
                                 * emulate the sendfile at an upper layer 
before we
@@ -143,7 +143,7 @@ ssize_t sys_sendfile(int tofd, int fromfd, const DATA_BLOB 
*header, SMB_OFF_T of
                        nwritten = sendfile(tofd, fromfd, &small_offset, 
small_total);
                } while (nwritten == -1 && errno == EINTR);
                if (nwritten == -1) {
-                       if (errno == ENOSYS) {
+                       if (errno == ENOSYS || errno == EINVAL) {
                                /* Ok - we're in a world of pain here. We just 
sent
                                 * the header, but the sendfile failed. We have 
to
                                 * emulate the sendfile at an upper layer 
before we
diff --git a/source/smbd/reply.c b/source/smbd/reply.c
index a613459..c192d4a 100644
--- a/source/smbd/reply.c
+++ b/source/smbd/reply.c
@@ -3230,9 +3230,9 @@ static void send_file_readX(connection_struct *conn, 
struct smb_request *req,
                setup_readX_header((char *)headerbuf, smb_maxcnt);
 
                if ((nread = SMB_VFS_SENDFILE(smbd_server_fd(), fsp, &header, 
startpos, smb_maxcnt)) == -1) {
-                       /* Returning ENOSYS or EINVAL means no data at all was 
sent. 
+                       /* Returning ENOSYS means no data at all was sent.
                           Do this as a normal read. */
-                       if (errno == ENOSYS || errno == EINVAL) {
+                       if (errno == ENOSYS) {
                                goto normal_read;
                        }
 


-- 
Samba Shared Repository

Reply via email to