[SSI] openssi/kernel/cluster/ssi/cfs vfs.c,1.37,1.38

Roger Tsang <[email protected]> Wed, 16 Nov 2011 07:51:16 +0000
Newsgroups gmane.linux.cluster.ssic.cvs
Message-ID <[email protected]>
Update of /cvsroot/ssic-linux/openssi/kernel/cluster/ssi/cfs
In directory vz-cvs-3.sog:/tmp/cvs-serv3265/cluster/ssi/cfs

Modified Files:
      Tag: OPENSSI-FC
	vfs.c 
Log Message:
cfsd_sync, cfsd_dosync: restore flags in task_struct after having done with them.
cfsd_setattr, cfsd_link, cfsd_symlink, cfsd_create: skip write_inode_now() and cfsd_sync_dir(), not needed with token architecture. (#ifdef SSI_EXNFS)


Index: vfs.c
===================================================================
RCS file: /cvsroot/ssic-linux/openssi/kernel/cluster/ssi/cfs/vfs.c,v
retrieving revision 1.37
retrieving revision 1.38
diff -u -d -r1.37 -r1.38
--- vfs.c	15 Dec 2010 08:05:26 -0000	1.37
+++ vfs.c	16 Nov 2011 07:51:14 -0000	1.38
@@ -340,6 +340,7 @@
 		up(&inode->i_sem);		/* cfs_fh_unlock(fhp); */
 		put_write_access(inode);
 	}
+#ifdef SSI_EXNFS
 	if (!err)
 #ifdef CFS_ONLY_REMOTE_IS_CHARD	/* Not recommended for process load-balancing */
 		if ((sbtocmi(hp->sct_sb)->mi_flags & MI_CHARD) && ssi_isremote())
@@ -347,6 +348,7 @@
 		if (CFS_SB_HARD_MIP(sbtocmi(hp->sct_sb))) 
 #endif
 			write_inode_now(inode, 1);
+#endif /* SSI_EXNFS */
 out:
 	return err;
 }
@@ -550,29 +552,34 @@
 			struct file_operations *fop, int datasync)
 {
 	struct inode *inode = dp->d_inode;
+	unsigned long old_flags;
 	int (*fsync) (struct file *, struct dentry *, int);
 
+	old_flags = current->flags;
 	current->flags |= PF_SYNCWRITE;
 	/* We sync buffer to disk just like base. */
 	filemap_fdatawrite(inode->i_mapping);
 	if (fop && (fsync = fop->fsync))
 		fsync(filp, dp, datasync);
 	filemap_fdatawait(inode->i_mapping);
-	current->flags &= ~PF_SYNCWRITE;
+	current->flags = old_flags;
 }
 
 void
 cfsd_sync(struct svrcfstok *hp, loff_t pos, unsigned int count)
 {
 #ifdef CFS_COMMIT_FILE_RANGE
+	unsigned long old_flags;
+
 	dprintk("cfsd: sync file %s\n", hp->sct_dp->d_name.name);
 
 	if (!count)
 		goto sync_whole_file;
 
+	old_flags = current->flags;
 	current->flags |= PF_SYNCWRITE;
 	(void) sync_page_range(hp->sct_ip, hp->sct_ip->i_mapping, pos, count);
-	current->flags &= ~PF_SYNCWRITE;
+	current->flags = old_flags;
 	return;
 
 sync_whole_file:
@@ -1004,6 +1011,7 @@
 
 	*hpp = makehp(dhp->sct_sb, dev, dchild);
 
+#ifdef SSI_EXNFS
 #ifdef CFS_ONLY_REMOTE_IS_CHARD
 	if (sbtocmi(dhp->sct_sb)->mi_flags & MI_CHARD && ssi_isremote())
 #else
@@ -1013,6 +1021,7 @@
 		cfsd_sync_dir(dentry, 0);
 		write_inode_now(dchild->d_inode, 1);
 	}
+#endif /* SSI_EXNFS */
 
 out_up:
 	if (!IS_ERR(dchild))
@@ -1125,6 +1134,7 @@
 	err = vfs_symlink(dentry->d_inode, dnew, path, S_IALLUGO);
 	if (err)
 		goto out_unlock;
+#ifdef SSI_EXNFS
 	if (!err) {
 #ifdef CFS_ONLY_REMOTE_IS_CHARD
 		if (sbtocmi(dhp->sct_sb)->mi_flags & MI_CHARD && ssi_isremote())
@@ -1153,6 +1163,7 @@
 		}
 #endif /* SSI_CFS_FROMNFS */
 	}
+#endif /* SSI_EXNFS */
 
 #ifdef SSI_CFS_NEGDCACHE
 	/* Bump generation number due to directory change */
@@ -1225,6 +1236,7 @@
 	}
 
 	err = vfs_link(dold, dirp, dnew);
+#ifdef SSI_EXNFS
 	if (!err) {
 #ifdef CFS_ONLY_REMOTE_IS_CHARD
 		if (sbtocmi(dhp->sct_sb)->mi_flags & MI_CHARD && ssi_isremote()) {
@@ -1235,6 +1247,7 @@
 			write_inode_now(dest, 1);
 		}
 	}
+#endif /* SSI_EXNFS */
 
 #ifdef SSI_CFS_NEGDCACHE
 	/* Bump generation number due to directory change */


------------------------------------------------------------------------------
RSA(R) Conference 2012
Save $700 by Nov 18
Register now
http://p.sf.net/sfu/rsa-sfdev2dev1