svn commit: samba r21131 - in branches/SAMBA_3_0/source/smbd: .

vlendec at samba.org vlendec at samba.org
Sat Feb 3 16:53:53 GMT 2007


Author: vlendec
Date: 2007-02-03 16:53:52 +0000 (Sat, 03 Feb 2007)
New Revision: 21131

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

Log:
Some notify fixes
Modified:
   branches/SAMBA_3_0/source/smbd/trans2.c
   branches/SAMBA_3_0/source/smbd/vfs.c


Changeset:
Modified: branches/SAMBA_3_0/source/smbd/trans2.c
===================================================================
--- branches/SAMBA_3_0/source/smbd/trans2.c	2007-02-03 13:31:47 UTC (rev 21130)
+++ branches/SAMBA_3_0/source/smbd/trans2.c	2007-02-03 16:53:52 UTC (rev 21131)
@@ -3779,6 +3779,11 @@
 				const SMB_STRUCT_STAT *psbuf,
 				struct utimbuf tvs)
 {
+	uint32 action =
+		FILE_NOTIFY_CHANGE_LAST_ACCESS
+		|FILE_NOTIFY_CHANGE_LAST_WRITE;
+
+	
 	if (!VALID_STAT(*psbuf)) {
 		return NT_STATUS_OBJECT_NAME_NOT_FOUND;
 	}
@@ -3786,10 +3791,12 @@
 	/* get some defaults (no modifications) if any info is zero or -1. */
 	if (null_mtime(tvs.actime)) {
 		tvs.actime = psbuf->st_atime;
+		action &= ~FILE_NOTIFY_CHANGE_LAST_ACCESS;
 	}
 
 	if (null_mtime(tvs.modtime)) {
 		tvs.modtime = psbuf->st_mtime;
+		action &= ~FILE_NOTIFY_CHANGE_LAST_WRITE;
 	}
 
 	DEBUG(6,("smb_set_file_time: actime: %s " , ctime(&tvs.actime)));
@@ -3826,6 +3833,9 @@
 	if(file_utime(conn, fname, &tvs)!=0) {
 		return map_nt_error_from_unix(errno);
 	}
+	if (action != 0) {
+		notify_fname(conn, NOTIFY_ACTION_MODIFIED, action, fname);
+	}
 	return NT_STATUS_OK;
 }
 

Modified: branches/SAMBA_3_0/source/smbd/vfs.c
===================================================================
--- branches/SAMBA_3_0/source/smbd/vfs.c	2007-02-03 13:31:47 UTC (rev 21130)
+++ branches/SAMBA_3_0/source/smbd/vfs.c	2007-02-03 16:53:52 UTC (rev 21131)
@@ -514,8 +514,13 @@
 	release_level_2_oplocks_on_change(fsp);
 	DEBUG(10,("vfs_set_filelen: ftruncate %s to len %.0f\n", fsp->fsp_name, (double)len));
 	flush_write_cache(fsp, SIZECHANGE_FLUSH);
-	if ((ret = SMB_VFS_FTRUNCATE(fsp, fsp->fh->fd, len)) != -1)
+	if ((ret = SMB_VFS_FTRUNCATE(fsp, fsp->fh->fd, len)) != -1) {
 		set_filelen_write_cache(fsp, len);
+		notify_fname(fsp->conn, NOTIFY_ACTION_MODIFIED,
+			     FILE_NOTIFY_CHANGE_SIZE
+			     | FILE_NOTIFY_CHANGE_ATTRIBUTES,
+			     fsp->fsp_name);
+	}
 
 	return ret;
 }



More information about the samba-cvs mailing list