Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 21 Apr 2017 23:01:32 +0000 (UTC)
From:      Rick Macklem <rmacklem@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r317276 - head/sys/fs/nfs
Message-ID:  <201704212301.v3LN1Wl9045377@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: rmacklem
Date: Fri Apr 21 23:01:32 2017
New Revision: 317276
URL: https://svnweb.freebsd.org/changeset/base/317276

Log:
  Don't set ND_NOMOREDATA for a failed Setattr operation (NFSv4).
  
  The NFSv4 Setattr operation always has reply data even when it fails,
  so don't set the ND_NOMOREDATA for it. This would only affect unusual
  cases where Setattr fails and the RPC code wants to parse the rest of
  the compound. Detected during recent development related to the pNFS server.
  
  MFC after:	2 weeks

Modified:
  head/sys/fs/nfs/nfs_commonkrpc.c

Modified: head/sys/fs/nfs/nfs_commonkrpc.c
==============================================================================
--- head/sys/fs/nfs/nfs_commonkrpc.c	Fri Apr 21 22:38:26 2017	(r317275)
+++ head/sys/fs/nfs/nfs_commonkrpc.c	Fri Apr 21 23:01:32 2017	(r317276)
@@ -1043,8 +1043,10 @@ tryagain:
 			/*
 			 * If this op's status is non-zero, mark
 			 * that there is no more data to process.
+			 * The exception is Setattr, which always has xdr
+			 * when it has failed.
 			 */
-			if (j)
+			if (j != 0 && i != NFSV4OP_SETATTR)
 				nd->nd_flag |= ND_NOMOREDATA;
 
 			/*



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201704212301.v3LN1Wl9045377>