提交 2efda799 编写于 作者: A Aneesh Kumar K.V 提交者: Eric Van Hensbergen

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: NAneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
Signed-off-by: NVenkateswararao Jujjuri <jvrao@linux.vnet.ibm.com>
Signed-off-by: NEric Van Hensbergen <ericvh@gmail.com>
上级 20656a49
...@@ -461,3 +461,14 @@ void __v9fs_readpage_to_fscache(struct inode *inode, struct page *page) ...@@ -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, ...@@ -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, ...@@ -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, ...@@ -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) ...@@ -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;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册