Uploaded image for project: 'Lustre'
  1. Lustre
  2. LU-904

import invalidation doesn't fail all requests

Details

    • Bug
    • Resolution: Fixed
    • Minor
    • Lustre 2.3.0
    • None
    • None
    • 3
    • 4632

    Description

      When client invaliates import on eviction, it only abort the requests in sending list (imp_sending_list) and delay list (imp_delayed_list), but the requests which are in request set but not linked in sending/delayed list will not be failed out, then those requests will stay across eviction and be sent later, which could probably cause data corruption at the end.

      Those leaked requests are usually the retry request, for instance: in brw_interpret(), if we found a request failed for a recoverable error, we'll try to generate a new request and retry it, such retry request will usually be kept in the request set for a while, see ptlrpc_send_new_req():

              if (req->rq_sent && (req->rq_sent > cfs_time_current_sec()))
                      RETURN (0);
      

      so if the import invalidation happened before the request is being added into sending or delayed list, the request will not be aborted.

      We probably need another list to track those requests and make sure they are failed out during invalidation.

      Attachments

        Activity

          People

            niu Niu Yawei (Inactive)
            niu Niu Yawei (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: