Bläddra i källkod

Merge branch 'for-2.6.33' of git://linux-nfs.org/~bfields/linux

* 'for-2.6.33' of git://linux-nfs.org/~bfields/linux:
  sunrpc: fix peername failed on closed listener
  nfsd: make sure data is on disk before calling ->fsync
  nfsd: fix "insecure" export option
Linus Torvalds 15 år sedan
förälder
incheckning
93939f4e5d
2 ändrade filer med 3 tillägg och 5 borttagningar
  1. 1 4
      fs/nfsd/vfs.c
  2. 2 1
      net/sunrpc/svc_xprt.c

+ 1 - 4
fs/nfsd/vfs.c

@@ -780,12 +780,9 @@ static inline int nfsd_dosync(struct file *filp, struct dentry *dp,
 	int (*fsync) (struct file *, struct dentry *, int);
 	int (*fsync) (struct file *, struct dentry *, int);
 	int err;
 	int err;
 
 
-	err = filemap_fdatawrite(inode->i_mapping);
+	err = filemap_write_and_wait(inode->i_mapping);
 	if (err == 0 && fop && (fsync = fop->fsync))
 	if (err == 0 && fop && (fsync = fop->fsync))
 		err = fsync(filp, dp, 0);
 		err = fsync(filp, dp, 0);
-	if (err == 0)
-		err = filemap_fdatawait(inode->i_mapping);
-
 	return err;
 	return err;
 }
 }
 
 

+ 2 - 1
net/sunrpc/svc_xprt.c

@@ -699,7 +699,8 @@ int svc_recv(struct svc_rqst *rqstp, long timeout)
 	spin_unlock_bh(&pool->sp_lock);
 	spin_unlock_bh(&pool->sp_lock);
 
 
 	len = 0;
 	len = 0;
-	if (test_bit(XPT_LISTENER, &xprt->xpt_flags)) {
+	if (test_bit(XPT_LISTENER, &xprt->xpt_flags) &&
+	    !test_bit(XPT_CLOSE, &xprt->xpt_flags)) {
 		struct svc_xprt *newxpt;
 		struct svc_xprt *newxpt;
 		newxpt = xprt->xpt_ops->xpo_accept(xprt);
 		newxpt = xprt->xpt_ops->xpo_accept(xprt);
 		if (newxpt) {
 		if (newxpt) {