mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	NFSv4: Detect support for OPEN4_SHARE_ACCESS_WANT_OPEN_XOR_DELEGATION
If the server supports the NFSv4.2 protocol extension to optimise away returning a stateid when it returns a delegation, then we cache that information in another capability flag. Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com> Signed-off-by: Lance Shelton <lance.shelton@hammerspace.com> Reviewed-by: Jeff Layton <jlayton@kernel.org> Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com> Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
This commit is contained in:
		
							parent
							
								
									707f13b3d0
								
							
						
					
					
						commit
						d2a00cceb9
					
				
					 3 changed files with 7 additions and 0 deletions
				
			
		| 
						 | 
				
			
			@ -3990,6 +3990,10 @@ static int _nfs4_server_capabilities(struct nfs_server *server, struct nfs_fh *f
 | 
			
		|||
				sizeof(server->attr_bitmask));
 | 
			
		||||
		server->attr_bitmask_nl[2] &= ~FATTR4_WORD2_SECURITY_LABEL;
 | 
			
		||||
 | 
			
		||||
		if (res.open_caps.oa_share_access_want[0] &
 | 
			
		||||
		    NFS4_SHARE_WANT_OPEN_XOR_DELEGATION)
 | 
			
		||||
			server->caps |= NFS_CAP_OPEN_XOR;
 | 
			
		||||
 | 
			
		||||
		memcpy(server->cache_consistency_bitmask, res.attr_bitmask, sizeof(server->cache_consistency_bitmask));
 | 
			
		||||
		server->cache_consistency_bitmask[0] &= FATTR4_WORD0_CHANGE|FATTR4_WORD0_SIZE;
 | 
			
		||||
		server->cache_consistency_bitmask[1] &= FATTR4_WORD1_TIME_METADATA|FATTR4_WORD1_TIME_MODIFY;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -278,6 +278,7 @@ struct nfs_server {
 | 
			
		|||
#define NFS_CAP_LGOPEN		(1U << 5)
 | 
			
		||||
#define NFS_CAP_CASE_INSENSITIVE	(1U << 6)
 | 
			
		||||
#define NFS_CAP_CASE_PRESERVING	(1U << 7)
 | 
			
		||||
#define NFS_CAP_OPEN_XOR	(1U << 12)
 | 
			
		||||
#define NFS_CAP_DELEGTIME	(1U << 13)
 | 
			
		||||
#define NFS_CAP_POSIX_LOCK	(1U << 14)
 | 
			
		||||
#define NFS_CAP_UIDGID_NOMAP	(1U << 15)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -46,6 +46,7 @@
 | 
			
		|||
#define NFS4_OPEN_RESULT_CONFIRM		0x0002
 | 
			
		||||
#define NFS4_OPEN_RESULT_LOCKTYPE_POSIX		0x0004
 | 
			
		||||
#define NFS4_OPEN_RESULT_PRESERVE_UNLINKED	0x0008
 | 
			
		||||
#define NFS4_OPEN_RESULT_NO_OPEN_STATEID	0x0010
 | 
			
		||||
#define NFS4_OPEN_RESULT_MAY_NOTIFY_LOCK	0x0020
 | 
			
		||||
 | 
			
		||||
#define NFS4_SHARE_ACCESS_MASK	0x000F
 | 
			
		||||
| 
						 | 
				
			
			@ -70,6 +71,7 @@
 | 
			
		|||
#define NFS4_SHARE_PUSH_DELEG_WHEN_UNCONTENDED		0x20000
 | 
			
		||||
 | 
			
		||||
#define NFS4_SHARE_WANT_DELEG_TIMESTAMPS		0x100000
 | 
			
		||||
#define NFS4_SHARE_WANT_OPEN_XOR_DELEGATION		0x200000
 | 
			
		||||
 | 
			
		||||
#define NFS4_CDFC4_FORE	0x1
 | 
			
		||||
#define NFS4_CDFC4_BACK 0x2
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue