|
@@ -1024,12 +1024,16 @@ out:
|
|
|
|
|
|
static int nfs4_copy_open_stateid(nfs4_stateid *dst, struct nfs4_state *state)
|
|
|
{
|
|
|
+ const nfs4_stateid *src;
|
|
|
int ret;
|
|
|
int seq;
|
|
|
|
|
|
do {
|
|
|
+ src = &zero_stateid;
|
|
|
seq = read_seqbegin(&state->seqlock);
|
|
|
- nfs4_stateid_copy(dst, &state->stateid);
|
|
|
+ if (test_bit(NFS_OPEN_STATE, &state->flags))
|
|
|
+ src = &state->open_stateid;
|
|
|
+ nfs4_stateid_copy(dst, src);
|
|
|
ret = 0;
|
|
|
smp_rmb();
|
|
|
if (!list_empty(&state->owner->so_seqid.list))
|