home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / src / linux-headers-2.6.28-15 / include / linux / nfs_fs_sb.h < prev    next >
Encoding:
C/C++ Source or Header  |  2008-12-24  |  4.1 KB  |  139 lines

  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.  
  10. struct nfs_iostats;
  11. struct nlm_host;
  12.  
  13. /*
  14.  * The nfs_client identifies our client state to the server.
  15.  */
  16. struct 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.  */
  78. struct 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.  
  123.     /* mountd-related mount options */
  124.     struct sockaddr_storage    mountd_address;
  125.     size_t            mountd_addrlen;
  126.     u32            mountd_version;
  127.     unsigned short        mountd_port;
  128.     unsigned short        mountd_protocol;
  129. };
  130.  
  131. /* Server capabilities */
  132. #define NFS_CAP_READDIRPLUS    (1U << 0)
  133. #define NFS_CAP_HARDLINKS    (1U << 1)
  134. #define NFS_CAP_SYMLINKS    (1U << 2)
  135. #define NFS_CAP_ACLS        (1U << 3)
  136. #define NFS_CAP_ATOMIC_OPEN    (1U << 4)
  137.  
  138. #endif
  139.