OpenCores
URL https://opencores.org/ocsvn/test_project/test_project/trunk

Subversion Repositories test_project

[/] [test_project/] [trunk/] [linux_sd_driver/] [include/] [linux/] [nfs_fs_sb.h] - Blame information for rev 81

Go to most recent revision | Details | Compare with Previous | View Log

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

powered by: WebSVN 2.1.0

© copyright 1999-2025 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.