mirror of
https://github.com/torvalds/linux.git
synced 2026-05-27 00:22:00 +02:00
NFS: Fix the marking of the folio as up to date
Since all callers of nfs_page_group_covers_page() have already ensured that there is only one group member, all that is required is to check that the entire folio contains dirty data. Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
This commit is contained in:
parent
b7b8574225
commit
c12b6a7b12
|
|
@ -237,59 +237,17 @@ static void nfs_mapping_set_error(struct folio *folio, int error)
|
|||
}
|
||||
|
||||
/*
|
||||
* nfs_page_group_search_locked
|
||||
* @head - head request of page group
|
||||
* @page_offset - offset into page
|
||||
* nfs_page_covers_folio
|
||||
* @req: struct nfs_page
|
||||
*
|
||||
* Search page group with head @head to find a request that contains the
|
||||
* page offset @page_offset.
|
||||
*
|
||||
* Returns a pointer to the first matching nfs request, or NULL if no
|
||||
* match is found.
|
||||
*
|
||||
* Must be called with the page group lock held
|
||||
*/
|
||||
static struct nfs_page *
|
||||
nfs_page_group_search_locked(struct nfs_page *head, unsigned int page_offset)
|
||||
{
|
||||
struct nfs_page *req;
|
||||
|
||||
req = head;
|
||||
do {
|
||||
if (page_offset >= req->wb_pgbase &&
|
||||
page_offset < (req->wb_pgbase + req->wb_bytes))
|
||||
return req;
|
||||
|
||||
req = req->wb_this_page;
|
||||
} while (req != head);
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/*
|
||||
* nfs_page_group_covers_page
|
||||
* @head - head request of page group
|
||||
*
|
||||
* Return true if the page group with head @head covers the whole page,
|
||||
* returns false otherwise
|
||||
* Return true if the request covers the whole folio.
|
||||
* Note that the caller should ensure all subrequests have been joined
|
||||
*/
|
||||
static bool nfs_page_group_covers_page(struct nfs_page *req)
|
||||
{
|
||||
unsigned int len = nfs_folio_length(nfs_page_to_folio(req));
|
||||
struct nfs_page *tmp;
|
||||
unsigned int pos = 0;
|
||||
|
||||
nfs_page_group_lock(req);
|
||||
|
||||
for (;;) {
|
||||
tmp = nfs_page_group_search_locked(req->wb_head, pos);
|
||||
if (!tmp)
|
||||
break;
|
||||
pos = tmp->wb_pgbase + tmp->wb_bytes;
|
||||
}
|
||||
|
||||
nfs_page_group_unlock(req);
|
||||
return pos >= len;
|
||||
return req->wb_pgbase == 0 && req->wb_bytes == len;
|
||||
}
|
||||
|
||||
/* We can set the PG_uptodate flag if we see that a write request
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user