mirror of
https://github.com/torvalds/linux.git
synced 2024-11-23 04:31:50 +00:00
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
@ -461,3 +461,14 @@ void __v9fs_readpage_to_fscache(struct inode *inode, struct page *page)
|
|||||||
if (ret != 0)
|
if (ret != 0)
|
||||||
v9fs_uncache_page(inode, page);
|
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,
|
struct list_head *pages,
|
||||||
unsigned *nr_pages);
|
unsigned *nr_pages);
|
||||||
extern void __v9fs_readpage_to_fscache(struct inode *inode, struct page *page);
|
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
|
* 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);
|
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 */
|
#else /* CONFIG_9P_FSCACHE */
|
||||||
|
|
||||||
static inline int v9fs_cache_register(void)
|
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)
|
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 /* CONFIG_9P_FSCACHE */
|
||||||
#endif /* _9P_CACHE_H */
|
#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)
|
static int v9fs_launder_page(struct page *page)
|
||||||
{
|
{
|
||||||
|
struct inode *inode = page->mapping->host;
|
||||||
|
v9fs_fscache_wait_on_page_write(inode, page);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user