xref: /openbmc/linux/fs/xfs/xfs_mru_cache.h (revision 0b61f8a4)
10b61f8a4SDave Chinner // SPDX-License-Identifier: GPL-2.0
22a82b8beSDavid Chinner /*
32a82b8beSDavid Chinner  * Copyright (c) 2006-2007 Silicon Graphics, Inc.
42a82b8beSDavid Chinner  * All Rights Reserved.
52a82b8beSDavid Chinner  */
62a82b8beSDavid Chinner #ifndef __XFS_MRU_CACHE_H__
72a82b8beSDavid Chinner #define __XFS_MRU_CACHE_H__
82a82b8beSDavid Chinner 
922328d71SChristoph Hellwig struct xfs_mru_cache;
1022328d71SChristoph Hellwig 
1122328d71SChristoph Hellwig struct xfs_mru_cache_elem {
1222328d71SChristoph Hellwig 	struct list_head list_node;
1322328d71SChristoph Hellwig 	unsigned long	key;
1422328d71SChristoph Hellwig };
152a82b8beSDavid Chinner 
162a82b8beSDavid Chinner /* Function pointer type for callback to free a client's data pointer. */
177fcd3efaSChristoph Hellwig typedef void (*xfs_mru_cache_free_func_t)(void *, struct xfs_mru_cache_elem *);
182a82b8beSDavid Chinner 
192a82b8beSDavid Chinner int xfs_mru_cache_init(void);
202a82b8beSDavid Chinner void xfs_mru_cache_uninit(void);
217fcd3efaSChristoph Hellwig int xfs_mru_cache_create(struct xfs_mru_cache **mrup, void *data,
227fcd3efaSChristoph Hellwig 		unsigned int lifetime_ms, unsigned int grp_count,
232a82b8beSDavid Chinner 		xfs_mru_cache_free_func_t free_func);
242a82b8beSDavid Chinner void xfs_mru_cache_destroy(struct xfs_mru_cache *mru);
252a82b8beSDavid Chinner int xfs_mru_cache_insert(struct xfs_mru_cache *mru, unsigned long key,
2622328d71SChristoph Hellwig 		struct xfs_mru_cache_elem *elem);
2722328d71SChristoph Hellwig struct xfs_mru_cache_elem *
2822328d71SChristoph Hellwig xfs_mru_cache_remove(struct xfs_mru_cache *mru, unsigned long key);
292a82b8beSDavid Chinner void xfs_mru_cache_delete(struct xfs_mru_cache *mru, unsigned long key);
3022328d71SChristoph Hellwig struct xfs_mru_cache_elem *
3122328d71SChristoph Hellwig xfs_mru_cache_lookup(struct xfs_mru_cache *mru, unsigned long key);
322a82b8beSDavid Chinner void xfs_mru_cache_done(struct xfs_mru_cache *mru);
332a82b8beSDavid Chinner 
342a82b8beSDavid Chinner #endif /* __XFS_MRU_CACHE_H__ */
35