• Benjamin Coddington's avatar
    pnfs: Fix the check for requests in range of layout segment · 08cb5b0f
    Benjamin Coddington authored
    It's possible and acceptable for NFS to attempt to add requests beyond the
    range of the current pgio->pg_lseg, a case which should be caught and
    limited by the pg_test operation.  However, the current handling of this
    case replaces pgio->pg_lseg with a new layout segment (after a WARN) within
    that pg_test operation.  That will cause all the previously added requests
    to be submitted with this new layout segment, which may not be valid for
    those requests.
    
    Fix this problem by only returning zero for the number of bytes to coalesce
    from pg_test for this case which allows any previously added requests to
    complete on the current layout segment.  The check for requests starting
    out of range of the layout segment moves to pg_init, so that the
    replacement of pgio->pg_lseg will be done when the next request is added.
    Signed-off-by: default avatarBenjamin Coddington <bcodding@redhat.com>
    Signed-off-by: default avatarTrond Myklebust <trond.myklebust@primarydata.com>
    08cb5b0f
pnfs.c 73.2 KB