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

ofd_create_hdl returns 0 instead of ENOSPC causing ESTALE on MDS

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: Lustre 2.12.0, Lustre 2.10.7
    • Labels:
      None
    • Severity:
      3
    • Rank (Obsolete):
      9223372036854775807

      Description

       

      During code analysis I found that LU-6401 brakes ENOSPC handling logic in OSP. 

      osp_precreate_send() returns -ESTALE when OST can't precreate objects i.e. -ENOSPACE:

              if (osp_fid_diff(fid, &d->opd_pre_used_fid) <= 0) {
                      CERROR("%s: precreate fid "DFID" < local used fid "DFID": rc = %d\n", d->opd_obd->obd_name,
                             PFID(fid), PFID(&d->opd_pre_used_fid), -ESTALE);
                      GOTO(out_req, rc = -ESTALE);
              }
      

      However it is not correct. In case of -ENOSPC on OST, MDS should get -ENOSPC.
      For example osp_precreat_reserve() forces local commit to release space and waits for OBD_TIMEOUT.
      I think "LU-6401 uapi: fix up lustre_ostid.h and lustre_fid.h" broke this logic:

      @@ -1781,7 +1781,7 @@ static int ofd_create_hdl(struct tgt_session_info *tsi)
                               granted = 0;
                       }
       
      -                ostid_set_id(&rep_oa->o_oi, ofd_seq_last_oid(oseq));
      +                rc = ostid_set_id(&rep_oa->o_oi, ofd_seq_last_oid(oseq));
               }
               EXIT;
      

      After the patch OST returns 0 in case when osp_precreate_objects() returns -ENOSPC.
       

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                sergey Sergey Cheremencev
                Reporter:
                sergey Sergey Cheremencev
              • Votes:
                0 Vote for this issue
                Watchers:
                3 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: