[LU-11070] Partial page write by NFS Created: 02/Jun/18 Updated: 17/Aug/18 |
|
| Status: | Open |
| Project: | Lustre |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Type: | Bug | Priority: | Minor |
| Reporter: | Rahul Deshmukh (Inactive) | Assignee: | Rahul Deshmukh (Inactive) |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Severity: | 3 |
| Rank (Obsolete): | 9223372036854775807 |
| Description |
|
When we were using Lustre below NFS then it is observed that the write Obseravtion as per code analysis is that below function is causing the issue: static int fill_in_write_vector(struct kvec *vec, struct nfsd4_write *write) { int i = 1; int buflen = write->wr_buflen; vec[0].iov_base = write->wr_head.iov_base; vec[0].iov_len = min_t(int, buflen, write->wr_head.iov_len); <====== buflen -= vec[0].iov_len; while (buflen) { vec[i].iov_base = page_address(write->wr_pagelist[i - 1]); vec[i].iov_len = min_t(int, PAGE_SIZE, buflen); buflen -= vec[i].iov_len; i++; } return i; } nfsd4_write() { : nvecs = fill_in_write_vector(rqstp->rq_vec, write); : }
i.e. 0th vector is filled with min of buflen or wr_head and rest differently Because of this, first and last page is not aligned. Interestingly when such request hit Lustre write path, as the first page is Possible Solution: As we can see here first partial size vector causing all following page size Seeking feedback on this approach or any question/suggestion/concern on the same ? Following stats are collected without and with patch.
lustre-2.10.4 lustre-2.10.4/w proto-type patch |
| Comments |
| Comment by Gerrit Updater [ 02/Jun/18 ] |
|
Rahul Deshmukh (rdeshmukh@ddn.com) uploaded a new patch: https://review.whamcloud.com/32611 |