[LU-12382] Deadloop on tiny write Created: 04/Jun/19 Updated: 09/Oct/19 Resolved: 25/Jun/19 |
|
| Status: | Resolved |
| Project: | Lustre |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | Lustre 2.13.0, Lustre 2.12.3 |
| Type: | Bug | Priority: | Minor |
| Reporter: | Wang Shilong (Inactive) | Assignee: | Wang Shilong (Inactive) |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Issue Links: |
|
||||||||
| Severity: | 3 | ||||||||
| Rank (Obsolete): | 9223372036854775807 | ||||||||
| Description |
|
For a small write(<4K), we will use tiny write and __generic_file_write_iter() will be called to handle it. On newer kernel(4.14 etc), the function is exported and will do something like following: |->__generic_file_write_iter
|->generic_write_perform()
If iov_iter_count() passed in is 0, generic_write_perform() will try go to forever loop as bytes copied is always calculated as 0. The problem is VFS doesn't always skip IO count zero before it comes to lower layer read/write hook, and we should do it by ourselves. |
| Comments |
| Comment by Gerrit Updater [ 04/Jun/19 ] |
|
Wang Shilong (wshilong@ddn.com) uploaded a new patch: https://review.whamcloud.com/35058 |
| Comment by Gerrit Updater [ 25/Jun/19 ] |
|
Oleg Drokin (green@whamcloud.com) merged in patch https://review.whamcloud.com/35058/ |
| Comment by Peter Jones [ 25/Jun/19 ] |
|
Landed for 2.13 |
| Comment by Gerrit Updater [ 25/Jun/19 ] |
|
Wang Shilong (wshilong@ddn.com) uploaded a new patch: https://review.whamcloud.com/35312 |
| Comment by Gerrit Updater [ 03/Jul/19 ] |
|
Oleg Drokin (green@whamcloud.com) merged in patch https://review.whamcloud.com/35312/ |
| Comment by Gerrit Updater [ 09/Oct/19 ] |
|
deleted wrong pushing |