[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