/* * V9FS cache definitions. * * Copyright (C) 2009 by Abhishek Kulkarni * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to: * Free Software Foundation * 51 Franklin Street, Fifth Floor * Boston, MA 02111-1301 USA * */ #ifndef _9P_CACHE_H #define _9P_CACHE_H #ifdef CONFIG_9P_FSCACHE #include #include extern struct fscache_netfs v9fs_cache_netfs; extern const struct fscache_cookie_def v9fs_cache_session_index_def; extern const struct fscache_cookie_def v9fs_cache_inode_index_def; extern void v9fs_cache_session_get_cookie(struct v9fs_session_info *v9ses); extern void v9fs_cache_session_put_cookie(struct v9fs_session_info *v9ses); extern void v9fs_cache_inode_get_cookie(struct inode *inode); extern void v9fs_cache_inode_put_cookie(struct inode *inode); extern void v9fs_cache_inode_flush_cookie(struct inode *inode); extern void v9fs_cache_inode_set_cookie(struct inode *inode, struct file *filp); extern void v9fs_cache_inode_reset_cookie(struct inode *inode); extern int __v9fs_cache_register(void); extern void __v9fs_cache_unregister(void); extern int __v9fs_fscache_release_page(struct page *page, gfp_t gfp); extern void __v9fs_fscache_invalidate_page(struct page *page); extern int __v9fs_readpage_from_fscache(struct inode *inode, struct page *page); extern int __v9fs_readpages_from_fscache(struct inode *inode, struct address_space *mapping, 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); static inline int v9fs_fscache_release_page(struct page *page, gfp_t gfp) { return __v9fs_fscache_release_page(page, gfp); } static inline void v9fs_fscache_invalidate_page(struct page *page) { __v9fs_fscache_invalidate_page(page); } static inline int v9fs_readpage_from_fscache(struct inode *inode, struct page *page) { return __v9fs_readpage_from_fscache(inode, page); } static inline int v9fs_readpages_from_fscache(struct inode *inode, struct address_space *mapping, struct list_head *pages, unsigned *nr_pages) { return __v9fs_readpages_from_fscache(inode, mapping, pages, nr_pages); } static inline void v9fs_readpage_to_fscache(struct inode *inode, struct page *page) { if (PageFsCache(page)) __v9fs_readpage_to_fscache(inode, page); } static inline void v9fs_uncache_page(struct inode *inode, struct page *page) { struct v9fs_inode *v9inode = V9FS_I(inode); fscache_uncache_page(v9inode->fscache, page); BUG_ON(PageFsCache(page)); } 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 void v9fs_cache_inode_get_cookie(struct inode *inode) { } static inline void v9fs_cache_inode_put_cookie(struct inode *inode) { } static inline void v9fs_cache_inode_set_cookie(struct inode *inode, struct file *file) { } static inline int v9fs_fscache_release_page(struct page *page, gfp_t gfp) { return 1; } static inline void v9fs_fscache_invalidate_page(struct page *page) {} static inline int v9fs_readpage_from_fscache(struct inode *inode, struct page *page) { return -ENOBUFS; } static inline int v9fs_readpages_from_fscache(struct inode *inode, struct address_space *mapping, struct list_head *pages, unsigned *nr_pages) { return -ENOBUFS; } static inline void v9fs_readpage_to_fscache(struct inode *inode, struct page *page) {} static inline void v9fs_uncache_page(struct inode *inode, struct page *page) {} static inline void v9fs_fscache_wait_on_page_write(struct inode *inode, struct page *page) { return; } #endif /* CONFIG_9P_FSCACHE */ #endif /* _9P_CACHE_H */ 15:50:18 -0500'>2017-02-03trace: rename trace_print_hex_seq arg and add kdocDaniel Borkmann2-3/+3 2017-02-03bridge: uapi: add per vlan tunnel infoRoopa Prabhu3-0/+13 2017-02-03vxlan: support fdb and learning in COLLECT_METADATA modeRoopa Prabhu1-0/+1 2017-02-03ip_tunnels: new IP_TUNNEL_INFO_BRIDGE flag for ip_tunnel_info modeRoopa Prabhu1-0/+1 2017-02-03net/sched: act_ife: Change to use ife moduleYotam Gigi2-10/+1 2017-02-03net: Introduce ife encapsulation moduleYotam Gigi3-0/+70 2017-02-03net/sched: act_ife: Unexport ife_tlv_meta_encodeYotam Gigi1-2/+0 2017-02-03tcp: add tcp_mss_clamp() helperEric Dumazet1-0/+9 2017-02-02net: add LINUX_MIB_PFMEMALLOCDROP counterEric Dumazet1-0/+1 2017-02-02net: phy: marvell: Add support for 88e1545 PHYAndrew Lunn1-0/+1 2017-02-02unix: add ioctl to open a unix socket file with O_PATHAndrey Vagin1-0/+2 2017-02-02net: phy: Marvell: Add mv88e6390 internal PHYAndrew Lunn1-0/+6 2017-02-02Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/netDavid S. Miller9-30/+40 2017-02-02netfilter: allow logging from non-init namespacesMichal Kubeček1-0/+3 2017-02-02ipvs: free ip_vs_dest structs when refcnt=0David Windsor1-1/+1 2017-02-02netfilter: merge ctinfo into nfct pointer storage areaFlorian Westphal2-17/+15 2017-02-02netfilter: guarantee 8 byte minalign for template addressesFlorian Westphal1-0/+2 2017-02-02netfilter: add and use nf_ct_set helperFlorian Westphal2-2/+9 2017-02-02skbuff: add and use skb_nfct helperFlorian Westphal2-4/+11 2017-02-02netfilter: reduce direct skb->nfct usageFlorian Westphal1-3/+6 2017-02-02netfilter: conntrack: no need to pass ctinfo to error handlerFlorian Westphal1-1/+1