/*
 * Copyright(c) 2012-2018 Intel Corporation
 * SPDX-License-Identifier: BSD-3-Clause-Clear
 */

#ifndef __METADATA_UPDATER_PRIV_H__
#define __METADATA_UPDATER_PRIV_H__

#include "../ocf_def_priv.h"
#include "metadata_io.h"

struct ocf_metadata_updater {
	/* Metadata flush synchronizer context */
	struct ocf_metadata_io_syncher {
		struct list_head in_progress_head;
		struct list_head pending_head;
		env_mutex lock;
	} syncher;

	void *priv;
};


int metadata_updater_check_overlaps(ocf_cache_t cache,
                struct metadata_io_request *req);

int ocf_metadata_updater_init(struct ocf_cache *cache);

void ocf_metadata_updater_kick(struct ocf_cache *cache);

void ocf_metadata_updater_stop(struct ocf_cache *cache);

#endif /* __METADATA_UPDATER_PRIV_H__ */
