fs/9p: [fscache] wait for page write in cached mode
We need to call fscache_wait_on_page_write in launder_page for fscache Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com> Signed-off-by: Venkateswararao Jujjuri <jvrao@linux.vnet.ibm.com> Signed-off-by: Eric Van Hensbergen <ericvh@gmail.com>
This commit is contained in:
parent
20656a49ef
commit
2efda7998b
3 changed files with 27 additions and 2 deletions
|
@ -461,3 +461,14 @@ void __v9fs_readpage_to_fscache(struct inode *inode, struct page *page)
|
|||
if (ret != 0)
|
||||
v9fs_uncache_page(inode, page);
|
||||
}
|
||||
|
||||
/*
|
||||
* wait for a page to complete writing to the cache
|
||||
*/
|
||||
void __v9fs_fscache_wait_on_page_write(struct inode *inode, struct page *page)
|
||||
{
|
||||
const struct v9fs_cookie *vcookie = v9fs_inode2cookie(inode);
|
||||
P9_DPRINTK(P9_DEBUG_FSC, "inode %p page %p", inode, page);
|
||||
if (PageFsCache(page))
|
||||
fscache_wait_on_page_write(vcookie->fscache, page);
|
||||
}
|
||||
|
|
|
@ -64,8 +64,8 @@ extern int __v9fs_readpages_from_fscache(struct inode *inode,
|
|||
struct list_head *pages,
|
||||
unsigned *nr_pages);
|
||||
extern void __v9fs_readpage_to_fscache(struct inode *inode, struct page *page);
|
||||
|
||||
|
||||
extern void __v9fs_fscache_wait_on_page_write(struct inode *inode,
|
||||
struct page *page);
|
||||
/**
|
||||
* v9fs_cache_register - Register v9fs file system with the cache
|
||||
*/
|
||||
|
@ -131,6 +131,12 @@ static inline void v9fs_vcookie_set_qid(struct inode *inode,
|
|||
spin_unlock(&vcookie->lock);
|
||||
}
|
||||
|
||||
static inline void v9fs_fscache_wait_on_page_write(struct inode *inode,
|
||||
struct page *page)
|
||||
{
|
||||
return __v9fs_fscache_wait_on_page_write(inode, page);
|
||||
}
|
||||
|
||||
#else /* CONFIG_9P_FSCACHE */
|
||||
|
||||
static inline int v9fs_cache_register(void)
|
||||
|
@ -172,5 +178,11 @@ static inline void v9fs_vcookie_set_qid(struct inode *inode,
|
|||
struct p9_qid *qid)
|
||||
{}
|
||||
|
||||
static inline void v9fs_fscache_wait_on_page_write(struct inode *inode,
|
||||
struct page *page)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
#endif /* CONFIG_9P_FSCACHE */
|
||||
#endif /* _9P_CACHE_H */
|
||||
|
|
|
@ -151,6 +151,8 @@ static void v9fs_invalidate_page(struct page *page, unsigned long offset)
|
|||
|
||||
static int v9fs_launder_page(struct page *page)
|
||||
{
|
||||
struct inode *inode = page->mapping->host;
|
||||
v9fs_fscache_wait_on_page_write(inode, page);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue