#ifndef _BDEV_LONGHORN_SNAPSHOT__H_
#define _BDEV_LONGHORN_SNAPSHOT__H_
#include "spdk/lvol.h"


void bdev_longhorn_snapshot_remote(const char *addr,
                                   const char *name,
                                   const char *lvs,
                                   const char *snapshot,
                                   spdk_lvol_op_complete cb_fn,
                                   void *cb_arg);

struct block {
	uint64_t block;
	TAILQ_ENTRY(block) next;
};

struct block_diff {
	TAILQ_HEAD(, block) blocks;

	uint64_t blocksize;
	
	uint64_t num_diff;

	uint64_t size1;
        uint64_t size2;

};


typedef void (*compare_bdev_cb)(int status, struct block_diff *diff, void *arg);

void bdev_longhorn_compare(const char *bdev_name1,
                           const char *bdev_name2,
                           uint64_t blocksize,
                           compare_bdev_cb cb_fn,
                           void *cb_arg);
int
longhorn_volume_snapshot(const char *name, const char *snapshot_name);

#endif /* _BDEV_LONGHORN_SNAPSHOT__H_ */
