• J. Bruce Fields's avatar
    nfsd4: cleanup handling of nfsv4.0 closed stateid's · 9411b1d4
    J. Bruce Fields authored
    Closed stateid's are kept around a little while to handle close replays
    in the 4.0 case.  So we stash them in the last-used stateid in the
    oo_last_closed_stateid field of the open owner.  We can free that in
    encode_seqid_op_tail once the seqid on the open owner is next
    incremented.  But we don't want to do that on the close itself; so we
    set NFS4_OO_PURGE_CLOSE flag set on the open owner, skip freeing it the
    first time through encode_seqid_op_tail, then when we see that flag set
    next time we free it.
    
    This is unnecessarily baroque.
    
    Instead, just move the logic that increments the seqid out of the xdr
    code and into the operation code itself.
    
    The justification given for the current placement is that we need to
    wait till the last minute to be sure we know whether the status is a
    sequence-id-mutating error or not, but examination of the code shows
    that can't actually happen.
    Reported-by: default avatarYanchuan Nian <ycnian@gmail.com>
    Tested-by: default avatarYanchuan Nian <ycnian@gmail.com>
    Signed-off-by: default avatarJ. Bruce Fields <bfields@redhat.com>
    9411b1d4
nfs4proc.c 52.5 KB