diff options
| author | J. Bruce Fields <bfields@redhat.com> | 2011-12-12 15:00:35 -0500 |
|---|---|---|
| committer | J. Bruce Fields <bfields@redhat.com> | 2011-12-12 15:27:00 -0500 |
| commit | f32f3c2d3f09a586349ca9180885dc8741290fd9 (patch) | |
| tree | 99a08c14a8d400f20f366c310c8f588f2ce3b9cf /fs/nfsd/nfs4state.c | |
| parent | f5c8593b94190aabdcf207a544f082c7816c4fe6 (diff) | |
nfsd4: initialize special stateid's at compile time
Stateid's with "other" ("opaque") field all zeros or all ones are
reserved. We define all_ones separately on the off chance there will be
more such some day, though currently all the other special stateid's
have zero other field.
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
Diffstat (limited to 'fs/nfsd/nfs4state.c')
| -rw-r--r-- | fs/nfsd/nfs4state.c | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c index 6ab677913f9c..213da7b7e7d3 100644 --- a/fs/nfsd/nfs4state.c +++ b/fs/nfsd/nfs4state.c | |||
| @@ -49,12 +49,20 @@ | |||
| 49 | time_t nfsd4_lease = 90; /* default lease time */ | 49 | time_t nfsd4_lease = 90; /* default lease time */ |
| 50 | time_t nfsd4_grace = 90; | 50 | time_t nfsd4_grace = 90; |
| 51 | static time_t boot_time; | 51 | static time_t boot_time; |
| 52 | static stateid_t zerostateid; /* bits all 0 */ | 52 | |
| 53 | static stateid_t onestateid; /* bits all 1 */ | 53 | #define all_ones {{~0,~0},~0} |
| 54 | static const stateid_t one_stateid = { | ||
| 55 | .si_generation = ~0, | ||
| 56 | .si_opaque = all_ones, | ||
| 57 | }; | ||
| 58 | static const stateid_t zero_stateid = { | ||
| 59 | /* all fields zero */ | ||
| 60 | }; | ||
| 61 | |||
| 54 | static u64 current_sessionid = 1; | 62 | static u64 current_sessionid = 1; |
| 55 | 63 | ||
| 56 | #define ZERO_STATEID(stateid) (!memcmp((stateid), &zerostateid, sizeof(stateid_t))) | 64 | #define ZERO_STATEID(stateid) (!memcmp((stateid), &zero_stateid, sizeof(stateid_t))) |
| 57 | #define ONE_STATEID(stateid) (!memcmp((stateid), &onestateid, sizeof(stateid_t))) | 65 | #define ONE_STATEID(stateid) (!memcmp((stateid), &one_stateid, sizeof(stateid_t))) |
| 58 | 66 | ||
| 59 | /* forward declarations */ | 67 | /* forward declarations */ |
| 60 | static int check_for_locks(struct nfs4_file *filp, struct nfs4_lockowner *lowner); | 68 | static int check_for_locks(struct nfs4_file *filp, struct nfs4_lockowner *lowner); |
| @@ -4564,7 +4572,6 @@ nfs4_state_init(void) | |||
| 4564 | } | 4572 | } |
| 4565 | for (i = 0; i < LOCKOWNER_INO_HASH_SIZE; i++) | 4573 | for (i = 0; i < LOCKOWNER_INO_HASH_SIZE; i++) |
| 4566 | INIT_LIST_HEAD(&lockowner_ino_hashtbl[i]); | 4574 | INIT_LIST_HEAD(&lockowner_ino_hashtbl[i]); |
| 4567 | memset(&onestateid, ~0, sizeof(stateid_t)); | ||
| 4568 | INIT_LIST_HEAD(&close_lru); | 4575 | INIT_LIST_HEAD(&close_lru); |
| 4569 | INIT_LIST_HEAD(&client_lru); | 4576 | INIT_LIST_HEAD(&client_lru); |
| 4570 | INIT_LIST_HEAD(&del_recall_lru); | 4577 | INIT_LIST_HEAD(&del_recall_lru); |
