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:
Aneesh Kumar K.V 2011-02-28 17:03:56 +05:30 committed by Eric Van Hensbergen
parent 20656a49ef
commit 2efda7998b
3 changed files with 27 additions and 2 deletions

View File

@ -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);
}

View File

@ -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 */

View File

@ -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;
} }