VisionFive2 Linux kernel

StarFive Tech Linux Kernel for VisionFive (JH7110) boards (mirror)

More than 9999 Commits   33 Branches   57 Tags
1f327613224e3 (Thomas Gleixner   2019-05-28 09:57:16 -0700   1) /* SPDX-License-Identifier: GPL-2.0-only */
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500   2) /*
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500   3)  * V9FS cache definitions.
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500   4)  *
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500   5)  *  Copyright (C) 2009 by Abhishek Kulkarni <adkulkar@umail.iu.edu>
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500   6)  */
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500   7) 
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500   8) #ifndef _9P_CACHE_H
7c7afc440c8ec (Tzvetelin Katchov 2015-10-07 20:15:21 -0400   9) #define _9P_CACHE_H
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500  10) #ifdef CONFIG_9P_FSCACHE
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500  11) #include <linux/fscache.h>
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500  12) #include <linux/spinlock.h>
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500  13) 
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500  14) extern struct fscache_netfs v9fs_cache_netfs;
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500  15) extern const struct fscache_cookie_def v9fs_cache_session_index_def;
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500  16) extern const struct fscache_cookie_def v9fs_cache_inode_index_def;
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500  17) 
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500  18) extern void v9fs_cache_session_get_cookie(struct v9fs_session_info *v9ses);
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500  19) extern void v9fs_cache_session_put_cookie(struct v9fs_session_info *v9ses);
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500  20) 
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500  21) extern void v9fs_cache_inode_get_cookie(struct inode *inode);
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500  22) extern void v9fs_cache_inode_put_cookie(struct inode *inode);
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500  23) extern void v9fs_cache_inode_flush_cookie(struct inode *inode);
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500  24) extern void v9fs_cache_inode_set_cookie(struct inode *inode, struct file *filp);
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500  25) extern void v9fs_cache_inode_reset_cookie(struct inode *inode);
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500  26) 
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500  27) extern int __v9fs_cache_register(void);
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500  28) extern void __v9fs_cache_unregister(void);
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500  29) 
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500  30) extern int __v9fs_fscache_release_page(struct page *page, gfp_t gfp);
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500  31) extern void __v9fs_fscache_invalidate_page(struct page *page);
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500  32) extern int __v9fs_readpage_from_fscache(struct inode *inode,
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500  33) 					struct page *page);
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500  34) extern int __v9fs_readpages_from_fscache(struct inode *inode,
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500  35) 					 struct address_space *mapping,
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500  36) 					 struct list_head *pages,
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500  37) 					 unsigned *nr_pages);
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500  38) extern void __v9fs_readpage_to_fscache(struct inode *inode, struct page *page);
2efda7998bbc5 (Aneesh Kumar K.V  2011-02-28 17:03:56 +0530  39) extern void __v9fs_fscache_wait_on_page_write(struct inode *inode,
2efda7998bbc5 (Aneesh Kumar K.V  2011-02-28 17:03:56 +0530  40) 					      struct page *page);
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500  41) 
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500  42) static inline int v9fs_fscache_release_page(struct page *page,
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500  43) 					    gfp_t gfp)
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500  44) {
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500  45) 	return __v9fs_fscache_release_page(page, gfp);
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500  46) }
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500  47) 
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500  48) static inline void v9fs_fscache_invalidate_page(struct page *page)
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500  49) {
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500  50) 	__v9fs_fscache_invalidate_page(page);
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500  51) }
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500  52) 
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500  53) static inline int v9fs_readpage_from_fscache(struct inode *inode,
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500  54) 					     struct page *page)
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500  55) {
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500  56) 	return __v9fs_readpage_from_fscache(inode, page);
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500  57) }
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500  58) 
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500  59) static inline int v9fs_readpages_from_fscache(struct inode *inode,
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500  60) 					      struct address_space *mapping,
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500  61) 					      struct list_head *pages,
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500  62) 					      unsigned *nr_pages)
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500  63) {
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500  64) 	return __v9fs_readpages_from_fscache(inode, mapping, pages,
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500  65) 					     nr_pages);
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500  66) }
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500  67) 
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500  68) static inline void v9fs_readpage_to_fscache(struct inode *inode,
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500  69) 					    struct page *page)
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500  70) {
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500  71) 	if (PageFsCache(page))
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500  72) 		__v9fs_readpage_to_fscache(inode, page);
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500  73) }
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500  74) 
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500  75) static inline void v9fs_uncache_page(struct inode *inode, struct page *page)
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500  76) {
a78ce05d5d342 (Aneesh Kumar K.V  2011-02-28 17:04:02 +0530  77) 	struct v9fs_inode *v9inode = V9FS_I(inode);
a78ce05d5d342 (Aneesh Kumar K.V  2011-02-28 17:04:02 +0530  78) 	fscache_uncache_page(v9inode->fscache, page);
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500  79) 	BUG_ON(PageFsCache(page));
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500  80) }
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500  81) 
2efda7998bbc5 (Aneesh Kumar K.V  2011-02-28 17:03:56 +0530  82) static inline void v9fs_fscache_wait_on_page_write(struct inode *inode,
2efda7998bbc5 (Aneesh Kumar K.V  2011-02-28 17:03:56 +0530  83) 						   struct page *page)
2efda7998bbc5 (Aneesh Kumar K.V  2011-02-28 17:03:56 +0530  84) {
2efda7998bbc5 (Aneesh Kumar K.V  2011-02-28 17:03:56 +0530  85) 	return __v9fs_fscache_wait_on_page_write(inode, page);
2efda7998bbc5 (Aneesh Kumar K.V  2011-02-28 17:03:56 +0530  86) }
2efda7998bbc5 (Aneesh Kumar K.V  2011-02-28 17:03:56 +0530  87) 
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500  88) #else /* CONFIG_9P_FSCACHE */
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500  89) 
ceaec15d49f29 (Al Viro           2013-09-17 08:07:11 -0400  90) static inline void v9fs_cache_inode_get_cookie(struct inode *inode)
ceaec15d49f29 (Al Viro           2013-09-17 08:07:11 -0400  91) {
ceaec15d49f29 (Al Viro           2013-09-17 08:07:11 -0400  92) }
ceaec15d49f29 (Al Viro           2013-09-17 08:07:11 -0400  93) 
ceaec15d49f29 (Al Viro           2013-09-17 08:07:11 -0400  94) static inline void v9fs_cache_inode_put_cookie(struct inode *inode)
ceaec15d49f29 (Al Viro           2013-09-17 08:07:11 -0400  95) {
ceaec15d49f29 (Al Viro           2013-09-17 08:07:11 -0400  96) }
ceaec15d49f29 (Al Viro           2013-09-17 08:07:11 -0400  97) 
ceaec15d49f29 (Al Viro           2013-09-17 08:07:11 -0400  98) static inline void v9fs_cache_inode_set_cookie(struct inode *inode, struct file *file)
ceaec15d49f29 (Al Viro           2013-09-17 08:07:11 -0400  99) {
ceaec15d49f29 (Al Viro           2013-09-17 08:07:11 -0400 100) }
ceaec15d49f29 (Al Viro           2013-09-17 08:07:11 -0400 101) 
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500 102) static inline int v9fs_fscache_release_page(struct page *page,
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500 103) 					    gfp_t gfp) {
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500 104) 	return 1;
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500 105) }
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500 106) 
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500 107) static inline void v9fs_fscache_invalidate_page(struct page *page) {}
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500 108) 
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500 109) static inline int v9fs_readpage_from_fscache(struct inode *inode,
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500 110) 					     struct page *page)
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500 111) {
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500 112) 	return -ENOBUFS;
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500 113) }
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500 114) 
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500 115) static inline int v9fs_readpages_from_fscache(struct inode *inode,
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500 116) 					      struct address_space *mapping,
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500 117) 					      struct list_head *pages,
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500 118) 					      unsigned *nr_pages)
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500 119) {
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500 120) 	return -ENOBUFS;
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500 121) }
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500 122) 
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500 123) static inline void v9fs_readpage_to_fscache(struct inode *inode,
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500 124) 					    struct page *page)
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500 125) {}
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500 126) 
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500 127) static inline void v9fs_uncache_page(struct inode *inode, struct page *page)
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500 128) {}
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500 129) 
2efda7998bbc5 (Aneesh Kumar K.V  2011-02-28 17:03:56 +0530 130) static inline void v9fs_fscache_wait_on_page_write(struct inode *inode,
2efda7998bbc5 (Aneesh Kumar K.V  2011-02-28 17:03:56 +0530 131) 						   struct page *page)
2efda7998bbc5 (Aneesh Kumar K.V  2011-02-28 17:03:56 +0530 132) {
2efda7998bbc5 (Aneesh Kumar K.V  2011-02-28 17:03:56 +0530 133) 	return;
2efda7998bbc5 (Aneesh Kumar K.V  2011-02-28 17:03:56 +0530 134) }
2efda7998bbc5 (Aneesh Kumar K.V  2011-02-28 17:03:56 +0530 135) 
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500 136) #endif /* CONFIG_9P_FSCACHE */
60e78d2c993e5 (Abhishek Kulkarni 2009-09-23 13:00:27 -0500 137) #endif /* _9P_CACHE_H */