From: "Kendrick M. Smith" Subject: patch 03/38: NFSv4 protocol header Date: Tue, 13 Aug 2002 18:56:49 -0400 (EDT) Sender: nfs-admin@lists.sourceforge.net Message-ID: Mime-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Return-path: Received: from berzerk.gpcc.itd.umich.edu ([141.211.2.162]) by usw-sf-list1.sourceforge.net with esmtp (Exim 3.31-VA-mm2 #1 (Debian)) id 17ekaq-0000oJ-00 for ; Tue, 13 Aug 2002 15:56:52 -0700 To: linux-kernel@vger.kernel.org, Errors-To: nfs-admin@lists.sourceforge.net List-Help: List-Post: List-Subscribe: , List-Id: Discussion of NFS under Linux development, interoperability, and testing. List-Unsubscribe: , List-Archive: Instantiate a new file, include/linux/nfs4.h, which contains constants and typedef's for the NFSv4 protocol (by analogy with include/linux/nfs2.h and include/linux/nfs3.h). Also #include this file in a few places where it will be needed later. --- old/include/linux/nfs4.h Thu Aug 8 10:32:21 2002 +++ new/include/linux/nfs4.h Mon Jul 29 11:50:09 2002 @@ -0,0 +1,205 @@ +/* + * include/linux/nfs4.h + * + * NFSv4 protocol definitions. + * + * Copyright (c) 2002 The Regents of the University of Michigan. + * All rights reserved. + * + * Kendrick Smith + * Andy Adamson + */ + +#ifndef _LINUX_NFS4_H +#define _LINUX_NFS4_H + +#define NFS4_VERIFIER_SIZE 8 +#define NFS4_FHSIZE 128 +#define NFS4_MAXNAMLEN NAME_MAX + +#define NFS4_ACCESS_READ 0x0001 +#define NFS4_ACCESS_LOOKUP 0x0002 +#define NFS4_ACCESS_MODIFY 0x0004 +#define NFS4_ACCESS_EXTEND 0x0008 +#define NFS4_ACCESS_DELETE 0x0010 +#define NFS4_ACCESS_EXECUTE 0x0020 + +#define NFS4_FH_PERISTENT 0x0000 +#define NFS4_FH_NOEXPIRE_WITH_OPEN 0x0001 +#define NFS4_FH_VOLATILE_ANY 0x0002 +#define NFS4_FH_VOL_MIGRATION 0x0004 +#define NFS4_FH_VOL_RENAME 0x0008 + +#define NFS4_OPEN_RESULT_CONFIRM 0x0002 + +#define NFS4_SHARE_ACCESS_READ 0x0001 +#define NFS4_SHARE_ACCESS_WRITE 0x0002 +#define NFS4_SHARE_ACCESS_BOTH 0x0003 + +#define NFS4_SET_TO_SERVER_TIME 0 +#define NFS4_SET_TO_CLIENT_TIME 1 + +#define NFS4_ACE_ACCESS_ALLOWED_ACE_TYPE 0 +#define NFS4_ACE_ACCESS_DENIED_ACE_TYPE 1 +#define NFS4_ACE_SYSTEM_AUDIT_ACE_TYPE 2 +#define NFS4_ACE_SYSTEM_ALARM_ACE_TYPE 3 + +typedef char nfs4_verifier[NFS4_VERIFIER_SIZE]; +typedef char nfs4_stateid[16]; + +enum nfs_opnum4 { + OP_ACCESS = 3, + OP_CLOSE = 4, + OP_COMMIT = 5, + OP_CREATE = 6, + OP_DELEGPURGE = 7, + OP_DELEGRETURN = 8, + OP_GETATTR = 9, + OP_GETFH = 10, + OP_LINK = 11, + OP_LOCK = 12, + OP_LOCKT = 13, + OP_LOCKU = 14, + OP_LOOKUP = 15, + OP_LOOKUPP = 16, + OP_NVERIFY = 17, + OP_OPEN = 18, + OP_OPENATTR = 19, + OP_OPEN_CONFIRM = 20, + OP_OPEN_DOWNGRADE = 21, + OP_PUTFH = 22, + OP_PUTPUBFH = 23, + OP_PUTROOTFH = 24, + OP_READ = 25, + OP_READDIR = 26, + OP_READLINK = 27, + OP_REMOVE = 28, + OP_RENAME = 29, + OP_RENEW = 30, + OP_RESTOREFH = 31, + OP_SAVEFH = 32, + OP_SECINFO = 33, + OP_SETATTR = 34, + OP_SETCLIENTID = 35, + OP_SETCLIENTID_CONFIRM = 36, + OP_VERIFY = 37, + OP_WRITE = 38, +}; + +/* + * Note: NF4BAD is not actually part of the protocol; it is just used + * internally by nfsd. + */ +enum nfs_ftype4 { + NF4BAD = 0, + NF4REG = 1, /* Regular File */ + NF4DIR = 2, /* Directory */ + NF4BLK = 3, /* Special File - block device */ + NF4CHR = 4, /* Special File - character device */ + NF4LNK = 5, /* Symbolic Link */ + NF4SOCK = 6, /* Special File - socket */ + NF4FIFO = 7, /* Special File - fifo */ + NF4ATTRDIR = 8, /* Attribute Directory */ + NF4NAMEDATTR = 9 /* Named Attribute */ +}; + +enum open_claim_type4 { + NFS4_OPEN_CLAIM_NULL = 0, + NFS4_OPEN_CLAIM_PREVIOUS = 1, + NFS4_OPEN_CLAIM_DELEGATE_CUR = 2, + NFS4_OPEN_CLAIM_DELEGATE_PREV = 3 +}; + +enum opentype4 { + NFS4_OPEN_NOCREATE = 0, + NFS4_OPEN_CREATE = 1 +}; + +enum createmode4 { + NFS4_CREATE_UNCHECKED = 0, + NFS4_CREATE_GUARDED = 1, + NFS4_CREATE_EXCLUSIVE = 2 +}; + +enum limit_by4 { + NFS4_LIMIT_SIZE = 1, + NFS4_LIMIT_BLOCKS = 2 +}; + +enum open_delegation_type4 { + NFS4_OPEN_DELEGATE_NONE = 0, + NFS4_OPEN_DELEGATE_READ = 1, + NFS4_OPEN_DELEGATE_WRITE = 2 +}; + +/* Mandatory Attributes */ +#define FATTR4_WORD0_SUPPORTED_ATTRS (1) +#define FATTR4_WORD0_TYPE (1 << 1) +#define FATTR4_WORD0_FH_EXPIRE_TYPE (1 << 2) +#define FATTR4_WORD0_CHANGE (1 << 3) +#define FATTR4_WORD0_SIZE (1 << 4) +#define FATTR4_WORD0_LINK_SUPPORT (1 << 5) +#define FATTR4_WORD0_SYMLINK_SUPPORT (1 << 6) +#define FATTR4_WORD0_NAMED_ATTR (1 << 7) +#define FATTR4_WORD0_FSID (1 << 8) +#define FATTR4_WORD0_UNIQUE_HANDLES (1 << 9) +#define FATTR4_WORD0_LEASE_TIME (1 << 10) +#define FATTR4_WORD0_RDATTR_ERROR (1 << 11) + +/* Recommended Attributes */ +#define FATTR4_WORD0_ACL (1 << 12) +#define FATTR4_WORD0_ACLSUPPORT (1 << 13) +#define FATTR4_WORD0_ARCHIVE (1 << 14) +#define FATTR4_WORD0_CANSETTIME (1 << 15) +#define FATTR4_WORD0_CASE_INSENSITIVE (1 << 16) +#define FATTR4_WORD0_CASE_PRESERVING (1 << 17) +#define FATTR4_WORD0_CHOWN_RESTRICTED (1 << 18) +#define FATTR4_WORD0_FILEHANDLE (1 << 19) +#define FATTR4_WORD0_FILEID (1 << 20) +#define FATTR4_WORD0_FILES_AVAIL (1 << 21) +#define FATTR4_WORD0_FILES_FREE (1 << 22) +#define FATTR4_WORD0_FILES_TOTAL (1 << 23) +#define FATTR4_WORD0_FS_LOCATIONS (1 << 24) +#define FATTR4_WORD0_HIDDEN (1 << 25) +#define FATTR4_WORD0_HOMOGENEOUS (1 << 26) +#define FATTR4_WORD0_MAXFILESIZE (1 << 27) +#define FATTR4_WORD0_MAXLINK (1 << 28) +#define FATTR4_WORD0_MAXNAME (1 << 29) +#define FATTR4_WORD0_MAXREAD (1 << 30) +#define FATTR4_WORD0_MAXWRITE (1 << 31) +#define FATTR4_WORD1_MIMETYPE (1) +#define FATTR4_WORD1_MODE (1 << 1) +#define FATTR4_WORD1_NO_TRUNC (1 << 2) +#define FATTR4_WORD1_NUMLINKS (1 << 3) +#define FATTR4_WORD1_OWNER (1 << 4) +#define FATTR4_WORD1_OWNER_GROUP (1 << 5) +#define FATTR4_WORD1_QUOTA_HARD (1 << 6) +#define FATTR4_WORD1_QUOTA_SOFT (1 << 7) +#define FATTR4_WORD1_QUOTA_USED (1 << 8) +#define FATTR4_WORD1_RAWDEV (1 << 9) +#define FATTR4_WORD1_SPACE_AVAIL (1 << 10) +#define FATTR4_WORD1_SPACE_FREE (1 << 11) +#define FATTR4_WORD1_SPACE_TOTAL (1 << 12) +#define FATTR4_WORD1_SPACE_USED (1 << 13) +#define FATTR4_WORD1_SYSTEM (1 << 14) +#define FATTR4_WORD1_TIME_ACCESS (1 << 15) +#define FATTR4_WORD1_TIME_ACCESS_SET (1 << 16) +#define FATTR4_WORD1_TIME_BACKUP (1 << 17) +#define FATTR4_WORD1_TIME_CREATE (1 << 18) +#define FATTR4_WORD1_TIME_DELTA (1 << 19) +#define FATTR4_WORD1_TIME_METADATA (1 << 20) +#define FATTR4_WORD1_TIME_MODIFY (1 << 21) +#define FATTR4_WORD1_TIME_MODIFY_SET (1 << 22) + +#define NFSPROC4_NULL 0 +#define NFSPROC4_COMPOUND 1 +#define NFS4_MINOR_VERSION 0 +#define NFS4_DEBUG 1 + +#endif + +/* + * Local variables: + * c-basic-offset: 8 + * End: + */ --- old/fs/nfs/pagelist.c Wed Jul 24 16:03:25 2002 +++ new/fs/nfs/pagelist.c Mon Jul 29 16:04:10 2002 @@ -14,6 +14,7 @@ #include #include #include +#include #include #include #include --- old/include/linux/nfs_fs.h Wed Jul 24 16:03:25 2002 +++ new/include/linux/nfs_fs.h Thu Aug 8 10:37:17 2002 @@ -24,6 +24,7 @@ #include #include #include +#include #include /* --- old/include/linux/nfsd/const.h Wed Jul 24 16:03:29 2002 +++ new/include/linux/nfsd/const.h Thu Aug 8 09:51:10 2002 @@ -12,6 +12,7 @@ #include #include #include +#include /* * Maximum protocol version supported by knfsd ------------------------------------------------------- This sf.net email is sponsored by: Dice - The leading online job board for high-tech professionals. Search and apply for tech jobs today! http://seeker.dice.com/seeker.epl?rel_code=31 _______________________________________________ NFS maillist - NFS@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/nfs