cifs: stop using generic_writepages
generic_writepages is just a wrapper that calls ->writepages on a range, and thus in the way of eventually removing ->writepage. Switch cifs to just open code it in preparation of removing ->writepage. [note: I suspect just integrating the small wsize case with the rest of the writeback code might be a better idea here, but that needs someone more familiar with the code] Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Paulo Alcantara (SUSE) <pc@cjr.nz> Signed-off-by: Steve French <stfrench@microsoft.com>
This commit is contained in:
Родитель
9381666e28
Коммит
bff9018d3a
|
@ -2646,6 +2646,21 @@ wdata_send_pages(struct cifs_writedata *wdata, unsigned int nr_pages,
|
|||
return rc;
|
||||
}
|
||||
|
||||
static int
|
||||
cifs_writepage_locked(struct page *page, struct writeback_control *wbc);
|
||||
|
||||
static int cifs_write_one_page(struct page *page, struct writeback_control *wbc,
|
||||
void *data)
|
||||
{
|
||||
struct address_space *mapping = data;
|
||||
int ret;
|
||||
|
||||
ret = cifs_writepage_locked(page, wbc);
|
||||
unlock_page(page);
|
||||
mapping_set_error(mapping, ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int cifs_writepages(struct address_space *mapping,
|
||||
struct writeback_control *wbc)
|
||||
{
|
||||
|
@ -2662,10 +2677,11 @@ static int cifs_writepages(struct address_space *mapping,
|
|||
|
||||
/*
|
||||
* If wsize is smaller than the page cache size, default to writing
|
||||
* one page at a time via cifs_writepage
|
||||
* one page at a time.
|
||||
*/
|
||||
if (cifs_sb->ctx->wsize < PAGE_SIZE)
|
||||
return generic_writepages(mapping, wbc);
|
||||
return write_cache_pages(mapping, wbc, cifs_write_one_page,
|
||||
mapping);
|
||||
|
||||
xid = get_xid();
|
||||
if (wbc->range_cyclic) {
|
||||
|
|
Загрузка…
Ссылка в новой задаче