cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

cache.h (3714B)


      1/* SPDX-License-Identifier: GPL-2.0-only */
      2/*
      3 * Ceph cache definitions.
      4 *
      5 *  Copyright (C) 2013 by Adfin Solutions, Inc. All Rights Reserved.
      6 *  Written by Milosz Tanski (milosz@adfin.com)
      7 */
      8
      9#ifndef _CEPH_CACHE_H
     10#define _CEPH_CACHE_H
     11
     12#include <linux/netfs.h>
     13
     14#ifdef CONFIG_CEPH_FSCACHE
     15#include <linux/fscache.h>
     16
     17int ceph_fscache_register_fs(struct ceph_fs_client* fsc, struct fs_context *fc);
     18void ceph_fscache_unregister_fs(struct ceph_fs_client* fsc);
     19
     20void ceph_fscache_register_inode_cookie(struct inode *inode);
     21void ceph_fscache_unregister_inode_cookie(struct ceph_inode_info* ci);
     22
     23void ceph_fscache_use_cookie(struct inode *inode, bool will_modify);
     24void ceph_fscache_unuse_cookie(struct inode *inode, bool update);
     25
     26void ceph_fscache_update(struct inode *inode);
     27void ceph_fscache_invalidate(struct inode *inode, bool dio_write);
     28
     29static inline struct fscache_cookie *ceph_fscache_cookie(struct ceph_inode_info *ci)
     30{
     31	return netfs_i_cookie(&ci->netfs);
     32}
     33
     34static inline void ceph_fscache_resize(struct inode *inode, loff_t to)
     35{
     36	struct ceph_inode_info *ci = ceph_inode(inode);
     37	struct fscache_cookie *cookie = ceph_fscache_cookie(ci);
     38
     39	if (cookie) {
     40		ceph_fscache_use_cookie(inode, true);
     41		fscache_resize_cookie(cookie, to);
     42		ceph_fscache_unuse_cookie(inode, true);
     43	}
     44}
     45
     46static inline void ceph_fscache_unpin_writeback(struct inode *inode,
     47						struct writeback_control *wbc)
     48{
     49	fscache_unpin_writeback(wbc, ceph_fscache_cookie(ceph_inode(inode)));
     50}
     51
     52static inline int ceph_fscache_dirty_folio(struct address_space *mapping,
     53		struct folio *folio)
     54{
     55	struct ceph_inode_info *ci = ceph_inode(mapping->host);
     56
     57	return fscache_dirty_folio(mapping, folio, ceph_fscache_cookie(ci));
     58}
     59
     60static inline int ceph_begin_cache_operation(struct netfs_io_request *rreq)
     61{
     62	struct fscache_cookie *cookie = ceph_fscache_cookie(ceph_inode(rreq->inode));
     63
     64	return fscache_begin_read_operation(&rreq->cache_resources, cookie);
     65}
     66
     67static inline bool ceph_is_cache_enabled(struct inode *inode)
     68{
     69	return fscache_cookie_enabled(ceph_fscache_cookie(ceph_inode(inode)));
     70}
     71
     72static inline void ceph_fscache_note_page_release(struct inode *inode)
     73{
     74	struct ceph_inode_info *ci = ceph_inode(inode);
     75
     76	fscache_note_page_release(ceph_fscache_cookie(ci));
     77}
     78#else /* CONFIG_CEPH_FSCACHE */
     79static inline int ceph_fscache_register_fs(struct ceph_fs_client* fsc,
     80					   struct fs_context *fc)
     81{
     82	return 0;
     83}
     84
     85static inline void ceph_fscache_unregister_fs(struct ceph_fs_client* fsc)
     86{
     87}
     88
     89static inline void ceph_fscache_register_inode_cookie(struct inode *inode)
     90{
     91}
     92
     93static inline void ceph_fscache_unregister_inode_cookie(struct ceph_inode_info* ci)
     94{
     95}
     96
     97static inline void ceph_fscache_use_cookie(struct inode *inode, bool will_modify)
     98{
     99}
    100
    101static inline void ceph_fscache_unuse_cookie(struct inode *inode, bool update)
    102{
    103}
    104
    105static inline void ceph_fscache_update(struct inode *inode)
    106{
    107}
    108
    109static inline void ceph_fscache_invalidate(struct inode *inode, bool dio_write)
    110{
    111}
    112
    113static inline struct fscache_cookie *ceph_fscache_cookie(struct ceph_inode_info *ci)
    114{
    115	return NULL;
    116}
    117
    118static inline void ceph_fscache_resize(struct inode *inode, loff_t to)
    119{
    120}
    121
    122static inline void ceph_fscache_unpin_writeback(struct inode *inode,
    123						struct writeback_control *wbc)
    124{
    125}
    126
    127static inline int ceph_fscache_dirty_folio(struct address_space *mapping,
    128		struct folio *folio)
    129{
    130	return filemap_dirty_folio(mapping, folio);
    131}
    132
    133static inline bool ceph_is_cache_enabled(struct inode *inode)
    134{
    135	return false;
    136}
    137
    138static inline int ceph_begin_cache_operation(struct netfs_io_request *rreq)
    139{
    140	return -ENOBUFS;
    141}
    142
    143static inline void ceph_fscache_note_page_release(struct inode *inode)
    144{
    145}
    146#endif /* CONFIG_CEPH_FSCACHE */
    147
    148#endif