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

FOFB hit a few cases of unlink() returning -EINVAL

Details

    • Bug
    • Resolution: Unresolved
    • Minor
    • None
    • None
    • None
    • 3
    • 9223372036854775807

    Description

      unlink should not fail with -EINVAL

      ll_unlink() should to return -ESTALE to trigger d_revalidate
      instead of failing with -EINVAL.

      debug code shows the origin of the -EINVAL at the client is coming from a failed req with rq_status = -EINVAL:

      __x64_sys_unlink+0x23/0x30
       do_unlinkat+0x292/0x2f0
        vfs_unlink+0xf6/0x1d0
         ll_unlink+0x38b/0x7b0 [lustre]
          lmv_unlink+0x25c/0x760 [lmv]
           mdc_unlink+0x218/0x680 [mdc]
            mdc_reint+0x22/0xd0 [mdc]
             ptlrpc_queue_wait+0x86/0x240 [ptlrpc]
             ...
      	rc = set->set_rc;
      	list_for_each_entry(req, &set->set_requests, rq_set_chain) {
      		LASSERT(req->rq_phase == RQ_PHASE_COMPLETE);
      		if (req->rq_status != 0)
      			rc = req->rq_status; <----- -EINVAL
      	}
             ...
      

      Attachments

        Activity

          People

            stancheff Shaun Tancheff
            stancheff Shaun Tancheff
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated: