linux/drivers/md/dm-cache-policy-internal.h

/* SPDX-License-Identifier: GPL-2.0-only */
/*
 * Copyright (C) 2012 Red Hat. All rights reserved.
 *
 * This file is released under the GPL.
 */

#ifndef DM_CACHE_POLICY_INTERNAL_H
#define DM_CACHE_POLICY_INTERNAL_H

#include <linux/vmalloc.h>
#include "dm-cache-policy.h"

/*----------------------------------------------------------------*/

static inline int policy_lookup(struct dm_cache_policy *p, dm_oblock_t oblock, dm_cblock_t *cblock,
				int data_dir, bool fast_copy, bool *background_queued)
{}

static inline int policy_lookup_with_work(struct dm_cache_policy *p,
					  dm_oblock_t oblock, dm_cblock_t *cblock,
					  int data_dir, bool fast_copy,
					  struct policy_work **work)
{}

static inline int policy_get_background_work(struct dm_cache_policy *p,
					     bool idle, struct policy_work **result)
{}

static inline void policy_complete_background_work(struct dm_cache_policy *p,
						   struct policy_work *work,
						   bool success)
{}

static inline void policy_set_dirty(struct dm_cache_policy *p, dm_cblock_t cblock)
{}

static inline void policy_clear_dirty(struct dm_cache_policy *p, dm_cblock_t cblock)
{}

static inline int policy_load_mapping(struct dm_cache_policy *p,
				      dm_oblock_t oblock, dm_cblock_t cblock,
				      bool dirty, uint32_t hint, bool hint_valid)
{}

static inline int policy_invalidate_mapping(struct dm_cache_policy *p,
					    dm_cblock_t cblock)
{}

static inline uint32_t policy_get_hint(struct dm_cache_policy *p,
				       dm_cblock_t cblock)
{}

static inline dm_cblock_t policy_residency(struct dm_cache_policy *p)
{}

static inline void policy_tick(struct dm_cache_policy *p, bool can_block)
{}

static inline int policy_emit_config_values(struct dm_cache_policy *p, char *result,
					    unsigned int maxlen, ssize_t *sz_ptr)
{}

static inline int policy_set_config_value(struct dm_cache_policy *p,
					  const char *key, const char *value)
{}

static inline void policy_allow_migrations(struct dm_cache_policy *p, bool allow)
{}

/*----------------------------------------------------------------*/

/*
 * Some utility functions commonly used by policies and the core target.
 */
static inline size_t bitset_size_in_bytes(unsigned int nr_entries)
{}

static inline unsigned long *alloc_bitset(unsigned int nr_entries)
{}

static inline void clear_bitset(void *bitset, unsigned int nr_entries)
{}

static inline void free_bitset(unsigned long *bits)
{}

/*----------------------------------------------------------------*/

/*
 * Creates a new cache policy given a policy name, a cache size, an origin size and the block size.
 */
struct dm_cache_policy *dm_cache_policy_create(const char *name, dm_cblock_t cache_size,
					       sector_t origin_size, sector_t block_size);

/*
 * Destroys the policy.  This drops references to the policy module as well
 * as calling it's destroy method.  So always use this rather than calling
 * the policy->destroy method directly.
 */
void dm_cache_policy_destroy(struct dm_cache_policy *p);

/*
 * In case we've forgotten.
 */
const char *dm_cache_policy_get_name(struct dm_cache_policy *p);

const unsigned int *dm_cache_policy_get_version(struct dm_cache_policy *p);

size_t dm_cache_policy_get_hint_size(struct dm_cache_policy *p);

/*----------------------------------------------------------------*/

#endif /* DM_CACHE_POLICY_INTERNAL_H */