Author: jpeach
Date: 2005-09-03 07:23:15 +0000 (Sat, 03 Sep 2005)
New Revision: 9986

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=9986

Log:
Merge 9984:9985 from samba/branches/SAMBA_3_0.

Modified:
   trunk/source/smbd/aio.c
   trunk/source/smbd/fileio.c
   trunk/source/smbd/files.c
   trunk/source/smbd/reply.c


Changeset:
Modified: trunk/source/smbd/aio.c
===================================================================
--- trunk/source/smbd/aio.c     2005-09-03 07:19:28 UTC (rev 9985)
+++ trunk/source/smbd/aio.c     2005-09-03 07:23:15 UTC (rev 9986)
@@ -475,9 +475,7 @@
                }
                                                                                
                                                   
                DEBUG(3,("handle_aio_write: fnum=%d num=%d wrote=%d\n", 
fsp->fnum, (int)numtowrite, (int)nwritten));
-               if (lp_syncalways(SNUM(fsp->conn)) || write_through) {
-                       sync_file(fsp->conn,fsp);
-               }
+               sync_file(fsp->conn,fsp, write_through);
        }
 
        show_msg(outbuf);

Modified: trunk/source/smbd/fileio.c
===================================================================
--- trunk/source/smbd/fileio.c  2005-09-03 07:19:28 UTC (rev 9985)
+++ trunk/source/smbd/fileio.c  2005-09-03 07:23:15 UTC (rev 9986)
@@ -834,15 +834,18 @@
 sync a file
 ********************************************************************/
 
-void sync_file(connection_struct *conn, files_struct *fsp)
+void sync_file(connection_struct *conn, files_struct *fsp, BOOL write_through)
 {
-       if(lp_strict_sync(SNUM(conn)) && fsp->fh->fd != -1) {
+               if (fsp->fh->fd == -1)
+               return;
+
+       if (lp_strict_sync(SNUM(conn)) &&
+           (lp_syncalways(SNUM(conn)) || write_through)) {
                flush_write_cache(fsp, SYNC_FLUSH);
                SMB_VFS_FSYNC(fsp,fsp->fh->fd);
        }
 }
 
-
 /************************************************************
  Perform a stat whether a valid fd or not.
 ************************************************************/

Modified: trunk/source/smbd/files.c
===================================================================
--- trunk/source/smbd/files.c   2005-09-03 07:19:28 UTC (rev 9985)
+++ trunk/source/smbd/files.c   2005-09-03 07:23:15 UTC (rev 9986)
@@ -418,7 +418,7 @@
        for (fsp=Files;fsp;fsp=next) {
                next=fsp->next;
                if ((conn == fsp->conn) && (fsp->fh->fd != -1)) {
-                       sync_file(conn,fsp);
+                       sync_file(conn, fsp, True /* write through */);
                }
        }
 }

Modified: trunk/source/smbd/reply.c
===================================================================
--- trunk/source/smbd/reply.c   2005-09-03 07:19:28 UTC (rev 9985)
+++ trunk/source/smbd/reply.c   2005-09-03 07:23:15 UTC (rev 9986)
@@ -2776,8 +2776,7 @@
  
        SSVAL(outbuf,smb_vwv0,total_written);
 
-       if ((lp_syncalways(SNUM(conn)) || write_through) && 
lp_strict_sync(SNUM(conn)))
-               sync_file(conn,fsp);
+       sync_file(conn, fsp, write_through);
 
        DEBUG(3,("writebraw2 fnum=%d start=%.0f num=%d wrote=%d\n",
                fsp->fnum, (double)startpos, 
(int)numtowrite,(int)total_written));
@@ -2842,8 +2841,7 @@
                nwritten = write_file(fsp,data,startpos,numtowrite);
        }
   
-       if (lp_syncalways(SNUM(conn)))
-               sync_file(conn,fsp);
+       sync_file(conn, fsp, False /* write through */);
 
        if(((nwritten == 0) && (numtowrite != 0))||(nwritten < 0)) {
                END_PROFILE(SMBwriteunlock);
@@ -2930,8 +2928,7 @@
        } else
                nwritten = write_file(fsp,data,startpos,numtowrite);
   
-       if (lp_syncalways(SNUM(conn)))
-               sync_file(conn,fsp);
+       sync_file(conn, fsp, False);
 
        if(((nwritten == 0) && (numtowrite != 0))||(nwritten < 0)) {
                END_PROFILE(SMBwrite);
@@ -3058,8 +3055,7 @@
        DEBUG(3,("writeX fnum=%d num=%d wrote=%d\n",
                fsp->fnum, (int)numtowrite, (int)nwritten));
 
-       if (lp_syncalways(SNUM(conn)) || write_through)
-               sync_file(conn,fsp);
+       sync_file(conn, fsp, write_through);
 
        END_PROFILE(SMBwriteX);
        return chain_reply(inbuf,outbuf,length,bufsize);
@@ -3156,7 +3152,7 @@
        if (!fsp) {
                file_sync_all(conn);
        } else {
-               sync_file(conn,fsp);
+               sync_file(conn,fsp, True);
        }
        
        DEBUG(3,("flush\n"));
@@ -5454,8 +5450,7 @@
 
        nwritten = write_file(fsp,data,startpos,numtowrite);
 
-       if(lp_syncalways(SNUM(conn)) || write_through)
-               sync_file(conn,fsp);
+       sync_file(conn, fsp, write_through);
   
        if(nwritten < (ssize_t)numtowrite) {
                END_PROFILE(SMBwriteBmpx);
@@ -5567,8 +5562,7 @@
 
        nwritten = write_file(fsp,data,startpos,numtowrite);
 
-       if(lp_syncalways(SNUM(conn)) || write_through)
-               sync_file(conn,fsp);
+       sync_file(conn, fsp, write_through);
   
        if (nwritten < (ssize_t)numtowrite) {
                if(write_through) {

Reply via email to