/* * Ceph cache definitions. * * Copyright (C) 2013 by Adfin Solutions, Inc. All Rights Reserved. * Written by Milosz Tanski (milosz@adfin.com) * * 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 _CEPH_CACHE_H #define _CEPH_CACHE_H #ifdef CONFIG_CEPH_FSCACHE extern struct fscache_netfs ceph_cache_netfs; int ceph_fscache_register(void); void ceph_fscache_unregister(void); int ceph_fscache_register_fs(struct ceph_fs_client* fsc); void ceph_fscache_unregister_fs(struct ceph_fs_client* fsc); void ceph_fscache_register_inode_cookie(struct inode *inode); void ceph_fscache_unregister_inode_cookie(struct ceph_inode_info* ci); void ceph_fscache_file_set_cookie(struct inode *inode, struct file *filp); void ceph_fscache_revalidate_cookie(struct ceph_inode_info *ci); int ceph_readpage_from_fscache(struct inode *inode, struct page *page); int ceph_readpages_from_fscache(struct inode *inode, struct address_space *mapping, struct list_head *pages, unsigned *nr_pages); void ceph_readpage_to_fscache(struct inode *inode, struct page *page); void ceph_invalidate_fscache_page(struct inode* inode, struct page *page); static inline void ceph_fscache_inode_init(struct ceph_inode_info *ci) { ci->fscache = NULL; ci->i_fscache_gen = 0; } static inline void ceph_fscache_invalidate(struct inode *inode) { fscache_invalidate(ceph_inode(inode)->fscache); } static inline void ceph_fscache_uncache_page(struct inode *inode, struct page *page) { struct ceph_inode_info *ci = ceph_inode(inode); return fscache_uncache_page(ci->fscache, page); } static inline int ceph_release_fscache_page(struct page *page, gfp_t gfp) { struct inode* inode = page->mapping->host; struct ceph_inode_info *ci = ceph_inode(inode); return fscache_maybe_release_page(ci->fscache, page, gfp); } static inline void ceph_fscache_readpage_cancel(struct inode *inode, struct page *page) { struct ceph_inode_info *ci = ceph_inode(inode); if (fscache_cookie_valid(ci->fscache) && PageFsCache(page)) __fscache_uncache_page(ci->fscache, page); } static inline void ceph_fscache_readpages_cancel(struct inode *inode, struct list_head *pages) { struct ceph_inode_info *ci = ceph_inode(inode); return fscache_readpages_cancel(ci->fscache, pages); } static inline void ceph_disable_fscache_readpage(struct ceph_inode_info *ci) { ci->i_fscache_gen = ci->i_rdcache_gen - 1; } #else static inline int ceph_fscache_register(void) { return 0; } static inline void ceph_fscache_unregister(void) { } static inline int ceph_fscache_register_fs(struct ceph_fs_client* fsc) { return 0; } static inline void ceph_fscache_unregister_fs(struct ceph_fs_client* fsc) { } static inline void ceph_fscache_inode_init(struct ceph_inode_info *ci) { } static inline void ceph_fscache_register_inode_cookie(struct inode *inode) { } static inline void ceph_fscache_unregister_inode_cookie(struct ceph_inode_info* ci) { } static inline void ceph_fscache_file_set_cookie(struct inode *inode, struct file *filp) { } static inline void ceph_fscache_revalidate_cookie(struct ceph_inode_info *ci) { } static inline void ceph_fscache_uncache_page(struct inode *inode, struct page *pages) { } static inline int ceph_readpage_from_fscache(struct inode* inode, struct page *page) { return -ENOBUFS; } static inline int ceph_readpages_from_fscache(struct inode *inode, struct address_space *mapping, struct list_head *pages, unsigned *nr_pages) { return -ENOBUFS; } static inline void ceph_readpage_to_fscache(struct inode *inode, struct page *page) { } static inline void ceph_fscache_invalidate(struct inode *inode) { } static inline void ceph_invalidate_fscache_page(struct inode *inode, struct page *page) { } static inline int ceph_release_fscache_page(struct page *page, gfp_t gfp) { return 1; } static inline void ceph_fscache_readpage_cancel(struct inode *inode, struct page *page) { } static inline void ceph_fscache_readpages_cancel(struct inode *inode, struct list_head *pages) { } static inline void ceph_disable_fscache_readpage(struct ceph_inode_info *ci) { } #endif #endif d>2017-01-27 12:36:39 -0800 commit2fb78e89405f4321b86274a0c24b30896dd50529 (patch) tree4de241e242441b80bd3f0022fc546bb07374571f /include/drm/drm_encoder.h parentdd3b9f25c867cb2507a45e436d6ede8eb08e7b05 (diff)parentc14024dbb156c8392908aaa822097d27c6af8ec8 (diff)
Merge branch 'for-linus' of git://git.kernel.dk/linux-block
Pull block fixes from Jens Axboe: "A set of fixes for this series. This contains: - Set of fixes for the nvme target code - A revert of patch from this merge window, causing a regression with WRITE_SAME on iSCSI targets at least. - A fix for a use-after-free in the new O_DIRECT bdev code. - Two fixes for the xen-blkfront driver" * 'for-linus' of git://git.kernel.dk/linux-block: Revert "sd: remove __data_len hack for WRITE SAME" nvme-fc: use blk_rq_nr_phys_segments nvmet-rdma: Fix missing dma sync to nvme data structures nvmet: Call fatal_error from keep-alive timout expiration nvmet: cancel fatal error and flush async work before free controller nvmet: delete controllers deletion upon subsystem release nvmet_fc: correct logic in disconnect queue LS handling block: fix use after free in __blkdev_direct_IO xen-blkfront: correct maximum segment accounting xen-blkfront: feature flags handling adjustments
Diffstat (limited to 'include/drm/drm_encoder.h')