diff options
Diffstat (limited to 'fs/xfs/xfs_mru_cache.h')
| -rw-r--r-- | fs/xfs/xfs_mru_cache.h | 31 | 
1 files changed, 12 insertions, 19 deletions
diff --git a/fs/xfs/xfs_mru_cache.h b/fs/xfs/xfs_mru_cache.h index 36dd3ec8b4e..fb5245ba5ff 100644 --- a/fs/xfs/xfs_mru_cache.h +++ b/fs/xfs/xfs_mru_cache.h @@ -18,24 +18,15 @@  #ifndef __XFS_MRU_CACHE_H__  #define __XFS_MRU_CACHE_H__ +struct xfs_mru_cache; -/* Function pointer type for callback to free a client's data pointer. */ -typedef void (*xfs_mru_cache_free_func_t)(unsigned long, void*); +struct xfs_mru_cache_elem { +	struct list_head list_node; +	unsigned long	key; +}; -typedef struct xfs_mru_cache -{ -	struct radix_tree_root	store;     /* Core storage data structure.  */ -	struct list_head	*lists;    /* Array of lists, one per grp.  */ -	struct list_head	reap_list; /* Elements overdue for reaping. */ -	spinlock_t		lock;      /* Lock to protect this struct.  */ -	unsigned int		grp_count; /* Number of discrete groups.    */ -	unsigned int		grp_time;  /* Time period spanned by grps.  */ -	unsigned int		lru_grp;   /* Group containing time zero.   */ -	unsigned long		time_zero; /* Time first element was added. */ -	xfs_mru_cache_free_func_t free_func; /* Function pointer for freeing. */ -	struct delayed_work	work;      /* Workqueue data for reaping.   */ -	unsigned int		queued;	   /* work has been queued */ -} xfs_mru_cache_t; +/* Function pointer type for callback to free a client's data pointer. */ +typedef void (*xfs_mru_cache_free_func_t)(struct xfs_mru_cache_elem *elem);  int xfs_mru_cache_init(void);  void xfs_mru_cache_uninit(void); @@ -44,10 +35,12 @@ int xfs_mru_cache_create(struct xfs_mru_cache **mrup, unsigned int lifetime_ms,  			     xfs_mru_cache_free_func_t free_func);  void xfs_mru_cache_destroy(struct xfs_mru_cache *mru);  int xfs_mru_cache_insert(struct xfs_mru_cache *mru, unsigned long key, -				void *value); -void * xfs_mru_cache_remove(struct xfs_mru_cache *mru, unsigned long key); +		struct xfs_mru_cache_elem *elem); +struct xfs_mru_cache_elem * +xfs_mru_cache_remove(struct xfs_mru_cache *mru, unsigned long key);  void xfs_mru_cache_delete(struct xfs_mru_cache *mru, unsigned long key); -void *xfs_mru_cache_lookup(struct xfs_mru_cache *mru, unsigned long key); +struct xfs_mru_cache_elem * +xfs_mru_cache_lookup(struct xfs_mru_cache *mru, unsigned long key);  void xfs_mru_cache_done(struct xfs_mru_cache *mru);  #endif /* __XFS_MRU_CACHE_H__ */  | 
