nfs: do not extend writes to the entire folio
nfs_update_folio has code to extend a write to the entire page under certain conditions. With the support for large folios this now suddenly extents to the variable sized and potentially much larger folio. Add code to limit the extension to the page boundaries of the start and end of the write, which matches the historic expecation and the code comments. Fixes: b73fe2dd6cd5 ("nfs: add support for large folios") Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Sagi Grimberg <sagi@grimberg.me> Reviewed-by: Benjamin Coddington <bcodding@redhat.com> Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
This commit is contained in:
parent
3921ae0850
commit
39c910a430
@ -1351,8 +1351,12 @@ int nfs_update_folio(struct file *file, struct folio *folio,
|
||||
goto out;
|
||||
|
||||
if (nfs_can_extend_write(file, folio, pagelen)) {
|
||||
count = max(count + offset, pagelen);
|
||||
offset = 0;
|
||||
unsigned int end = count + offset;
|
||||
|
||||
offset = round_down(offset, PAGE_SIZE);
|
||||
if (end < pagelen)
|
||||
end = min(round_up(end, PAGE_SIZE), pagelen);
|
||||
count = end - offset;
|
||||
}
|
||||
|
||||
status = nfs_writepage_setup(ctx, folio, offset, count);
|
||||
|
Loading…
Reference in New Issue
Block a user