Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2efda799 authored by Aneesh Kumar K.V's avatar Aneesh Kumar K.V Committed by Eric Van Hensbergen
Browse files

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: default avatarAneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
Signed-off-by: default avatarVenkateswararao Jujjuri <jvrao@linux.vnet.ibm.com>
Signed-off-by: default avatarEric Van Hensbergen <ericvh@gmail.com>
parent 20656a49
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -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);
}
+14 −2
Original line number Diff line number Diff line
@@ -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 */
+2 −0
Original line number Diff line number Diff line
@@ -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;
}