[LU-10398] osd_ldiskfs_write_rec() can do partial write Created: 15/Dec/17 Updated: 30/Mar/21 Resolved: 19/Dec/18 |
|
| Status: | Resolved |
| Project: | Lustre |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Type: | Bug | Priority: | Major |
| Reporter: | Mikhail Pershin | Assignee: | Mikhail Pershin |
| Resolution: | Not a Bug | Votes: | 0 |
| Labels: | None | ||
| Severity: | 3 |
| Rank (Obsolete): | 9223372036854775807 |
| Description |
|
osd_ldiskfs_write_rec() is used on server for various local writes, most often for llog. It does write by pages so if chunk of data is crossing page boundary then first part can be written but second can fail, e.g. due to -ENOSPC. This cause partially written data which is corruption in most cases, especially with llog. |
| Comments |
| Comment by Gerrit Updater [ 17/Dec/17 ] |
|
Mike Pershin (mike.pershin@intel.com) uploaded a new patch: https://review.whamcloud.com/30565 |
| Comment by Mikhail Pershin [ 17/Dec/17 ] |
|
I've just added reproducer and quick solution. This is to be discussed. |
| Comment by Mikhail Pershin [ 21/Dec/17 ] |
|
After discussion with Alex it was decided that llog should resolve this but not OSD. Such situation is possible in llog only and it is hard to decide about proper solution in OSD itself. |