[LU-1571] It should not update last xid for replay open. Created: 27/Jun/12 Updated: 17/Mar/14 Resolved: 24/Feb/13 |
|
| Status: | Resolved |
| Project: | Lustre |
| Component/s: | None |
| Affects Version/s: | Lustre 2.4.0 |
| Fix Version/s: | Lustre 2.4.0, Lustre 2.1.5 |
| Type: | Bug | Priority: | Blocker |
| Reporter: | Di Wang | Assignee: | Oleg Drokin |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Issue Links: |
|
||||||||
| Severity: | 3 | ||||||||
| Rank (Obsolete): | 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. |
| Comments |
| Comment by Di Wang [ 27/Jun/12 ] |
| Comment by Di Wang [ 27/Jun/12 ] |
|
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. |
| Comment by Mikhail Pershin [ 05/Jul/12 ] |
|
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 |
| Comment by Peter Jones [ 24/Feb/13 ] |
|
Landed for 2.4 |