linux/include/linux/nfs_fs_sb.h
<<
>>
Prefs
   1#ifndef _NFS_FS_SB
   2#define _NFS_FS_SB
   3
   4#include <linux/list.h>
   5#include <linux/backing-dev.h>
   6#include <linux/wait.h>
   7
   8#include <asm/atomic.h>
   9
  10struct nfs_iostats;
  11struct nlm_host;
  12
  13/*
  14 * The nfs_client identifies our client state to the server.
  15 */
  16struct nfs_client {
  17        atomic_t                cl_count;
  18        int                     cl_cons_state;  /* current construction state (-ve: init error) */
  19#define NFS_CS_READY            0               /* ready to be used */
  20#define NFS_CS_INITING          1               /* busy initialising */
  21        unsigned long           cl_res_state;   /* NFS resources state */
  22#define NFS_CS_CALLBACK         1               /* - callback started */
  23#define NFS_CS_IDMAP            2               /* - idmap started */
  24#define NFS_CS_RENEWD           3               /* - renewd started */
  25        struct sockaddr_storage cl_addr;        /* server identifier */
  26        size_t                  cl_addrlen;
  27        char *                  cl_hostname;    /* hostname of server */
  28        struct list_head        cl_share_link;  /* link in global client list */
  29        struct list_head        cl_superblocks; /* List of nfs_server structs */
  30
  31        struct rpc_clnt *       cl_rpcclient;
  32        const struct nfs_rpc_ops *rpc_ops;      /* NFS protocol vector */
  33        int                     cl_proto;       /* Network transport protocol */
  34
  35        struct rpc_cred         *cl_machine_cred;
  36
  37#ifdef CONFIG_NFS_V4
  38        u64                     cl_clientid;    /* constant */
  39        nfs4_verifier           cl_confirm;
  40        unsigned long           cl_state;
  41
  42        struct rb_root          cl_openowner_id;
  43        struct rb_root          cl_lockowner_id;
  44
  45        /*
  46         * The following rwsem ensures exclusive access to the server
  47         * while we recover the state following a lease expiration.
  48         */
  49        struct rw_semaphore     cl_sem;
  50
  51        struct list_head        cl_delegations;
  52        struct rb_root          cl_state_owners;
  53        spinlock_t              cl_lock;
  54
  55        unsigned long           cl_lease_time;
  56        unsigned long           cl_last_renewal;
  57        struct delayed_work     cl_renewd;
  58
  59        struct rpc_wait_queue   cl_rpcwaitq;
  60
  61        /* used for the setclientid verifier */
  62        struct timespec         cl_boot_time;
  63
  64        /* idmapper */
  65        struct idmap *          cl_idmap;
  66
  67        /* Our own IP address, as a null-terminated string.
  68         * This is used to generate the clientid, and the callback address.
  69         */
  70        char                    cl_ipaddr[48];
  71        unsigned char           cl_id_uniquifier;
  72#endif
  73};
  74
  75/*
  76 * NFS client parameters stored in the superblock.
  77 */
  78struct nfs_server {
  79        struct nfs_client *     nfs_client;     /* shared client and NFS4 state */
  80        struct list_head        client_link;    /* List of other nfs_server structs
  81                                                 * that share the same client
  82                                                 */
  83        struct list_head        master_link;    /* link in master servers list */
  84        struct rpc_clnt *       client;         /* RPC client handle */
  85        struct rpc_clnt *       client_acl;     /* ACL RPC client handle */
  86        struct nlm_host         *nlm_host;      /* NLM client handle */
  87        struct nfs_iostats *    io_stats;       /* I/O statistics */
  88        struct backing_dev_info backing_dev_info;
  89        atomic_long_t           writeback;      /* number of writeback pages */
  90        int                     flags;          /* various flags */
  91        unsigned int            caps;           /* server capabilities */
  92        unsigned int            rsize;          /* read size */
  93        unsigned int            rpages;         /* read size (in pages) */
  94        unsigned int            wsize;          /* write size */
  95        unsigned int            wpages;         /* write size (in pages) */
  96        unsigned int            wtmult;         /* server disk block size */
  97        unsigned int            dtsize;         /* readdir size */
  98        unsigned short          port;           /* "port=" setting */
  99        unsigned int            bsize;          /* server block size */
 100        unsigned int            acregmin;       /* attr cache timeouts */
 101        unsigned int            acregmax;
 102        unsigned int            acdirmin;
 103        unsigned int            acdirmax;
 104        unsigned int            namelen;
 105
 106        struct nfs_fsid         fsid;
 107        __u64                   maxfilesize;    /* maximum file size */
 108        unsigned long           mount_time;     /* when this fs was mounted */
 109        dev_t                   s_dev;          /* superblock dev numbers */
 110
 111#ifdef CONFIG_NFS_V4
 112        u32                     attr_bitmask[2];/* V4 bitmask representing the set
 113                                                   of attributes supported on this
 114                                                   filesystem */
 115        u32                     acl_bitmask;    /* V4 bitmask representing the ACEs
 116                                                   that are supported on this
 117                                                   filesystem */
 118#endif
 119        void (*destroy)(struct nfs_server *);
 120
 121        atomic_t active; /* Keep trace of any activity to this server */
 122        wait_queue_head_t active_wq;  /* Wait for any activity to stop  */
 123
 124        /* mountd-related mount options */
 125        struct sockaddr_storage mountd_address;
 126        size_t                  mountd_addrlen;
 127        u32                     mountd_version;
 128        unsigned short          mountd_port;
 129        unsigned short          mountd_protocol;
 130};
 131
 132/* Server capabilities */
 133#define NFS_CAP_READDIRPLUS     (1U << 0)
 134#define NFS_CAP_HARDLINKS       (1U << 1)
 135#define NFS_CAP_SYMLINKS        (1U << 2)
 136#define NFS_CAP_ACLS            (1U << 3)
 137#define NFS_CAP_ATOMIC_OPEN     (1U << 4)
 138
 139#endif
 140
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.