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

It should not update last xid for replay open.

Details

    • Bug
    • Resolution: Fixed
    • Blocker
    • Lustre 2.4.0, Lustre 2.1.5
    • Lustre 2.4.0
    • None
    • 3
    • 3980

    Description

      In recovery, it should not update last xid for open replay, otherwise it will mess the last xid in the last rcvd, which make the following resend (after replay) failed.

      Attachments

        Issue Links

          Activity

            [LU-1571] It should not update last xid for replay open.
            pjones Peter Jones added a comment -

            Landed for 2.4

            pjones Peter Jones added a comment - Landed for 2.4

            We need to update last_rcvd_xid only if open transno is bigger than one in last_rcvd, otherwise that means open wasn't last request from client and doesn't need reconstruct. Please check also LU-971 bug, there was problem with that so we update last_rcvd data for open too but in memory only, looks like it causes LU-1571 now.

            tappro Mikhail Pershin added a comment - We need to update last_rcvd_xid only if open transno is bigger than one in last_rcvd, otherwise that means open wasn't last request from client and doesn't need reconstruct. Please check also LU-971 bug, there was problem with that so we update last_rcvd data for open too but in memory only, looks like it causes LU-1571 now.
            di.wang Di Wang added a comment -

            Considering following case. 1. client open the file(with xid_1), keep the replay open req on the client. 2. client mkdir(with xid_2), server finish the create and drop reply, but update last_rcvd_xid with xid_2.

            MDT restart, init last_rcvd_xid with xid_2

            1. client replay open req. then update last_rcvd_xid with xid_1

            2. then replay finish, resend mkdir req. but last_rcvd_xid has been changed to xid_1. so it can not recognize the resend.

            di.wang Di Wang added a comment - Considering following case. 1. client open the file(with xid_1), keep the replay open req on the client. 2. client mkdir(with xid_2), server finish the create and drop reply, but update last_rcvd_xid with xid_2. MDT restart, init last_rcvd_xid with xid_2 1. client replay open req. then update last_rcvd_xid with xid_1 2. then replay finish, resend mkdir req. but last_rcvd_xid has been changed to xid_1. so it can not recognize the resend.
            di.wang Di Wang added a comment - http://review.whamcloud.com/3195

            People

              green Oleg Drokin
              di.wang Di Wang
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: