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;
|
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,
|
static int cifs_writepages(struct address_space *mapping,
|
||||||
struct writeback_control *wbc)
|
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
|
* 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)
|
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();
|
xid = get_xid();
|
||||||
if (wbc->range_cyclic) {
|
if (wbc->range_cyclic) {
|
||||||
|
|
Загрузка…
Ссылка в новой задаче