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

uptodate.h (2311B)


      1/* SPDX-License-Identifier: GPL-2.0-or-later */
      2/*
      3 * uptodate.h
      4 *
      5 * Cluster uptodate tracking
      6 *
      7 * Copyright (C) 2002, 2004, 2005 Oracle.  All rights reserved.
      8 */
      9
     10#ifndef OCFS2_UPTODATE_H
     11#define OCFS2_UPTODATE_H
     12
     13/*
     14 * The caching code relies on locking provided by the user of
     15 * struct ocfs2_caching_info.  These operations connect that up.
     16 */
     17struct ocfs2_caching_operations {
     18	/*
     19	 * A u64 representing the owning structure.  Usually this
     20	 * is the block number (i_blkno or whatnot).  This is used so
     21	 * that caching log messages can identify the owning structure.
     22	 */
     23	u64	(*co_owner)(struct ocfs2_caching_info *ci);
     24
     25	/* The superblock is needed during I/O. */
     26	struct super_block *(*co_get_super)(struct ocfs2_caching_info *ci);
     27	/*
     28	 * Lock and unlock the caching data.  These will not sleep, and
     29	 * should probably be spinlocks.
     30	 */
     31	void	(*co_cache_lock)(struct ocfs2_caching_info *ci);
     32	void	(*co_cache_unlock)(struct ocfs2_caching_info *ci);
     33
     34	/*
     35	 * Lock and unlock for disk I/O.  These will sleep, and should
     36	 * be mutexes.
     37	 */
     38	void	(*co_io_lock)(struct ocfs2_caching_info *ci);
     39	void	(*co_io_unlock)(struct ocfs2_caching_info *ci);
     40};
     41
     42int __init init_ocfs2_uptodate_cache(void);
     43void exit_ocfs2_uptodate_cache(void);
     44
     45void ocfs2_metadata_cache_init(struct ocfs2_caching_info *ci,
     46			       const struct ocfs2_caching_operations *ops);
     47void ocfs2_metadata_cache_purge(struct ocfs2_caching_info *ci);
     48void ocfs2_metadata_cache_exit(struct ocfs2_caching_info *ci);
     49
     50u64 ocfs2_metadata_cache_owner(struct ocfs2_caching_info *ci);
     51void ocfs2_metadata_cache_io_lock(struct ocfs2_caching_info *ci);
     52void ocfs2_metadata_cache_io_unlock(struct ocfs2_caching_info *ci);
     53
     54int ocfs2_buffer_uptodate(struct ocfs2_caching_info *ci,
     55			  struct buffer_head *bh);
     56void ocfs2_set_buffer_uptodate(struct ocfs2_caching_info *ci,
     57			       struct buffer_head *bh);
     58void ocfs2_set_new_buffer_uptodate(struct ocfs2_caching_info *ci,
     59				   struct buffer_head *bh);
     60void ocfs2_remove_from_cache(struct ocfs2_caching_info *ci,
     61			     struct buffer_head *bh);
     62void ocfs2_remove_xattr_clusters_from_cache(struct ocfs2_caching_info *ci,
     63					    sector_t block,
     64					    u32 c_len);
     65int ocfs2_buffer_read_ahead(struct ocfs2_caching_info *ci,
     66			    struct buffer_head *bh);
     67
     68#endif /* OCFS2_UPTODATE_H */