Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
at v2.6.19 42 lines 1.1 kB view raw
1/* 2 * Copyright (C) 2001 Sistina Software 3 * 4 * This file is released under the GPL. 5 * 6 * Kcopyd provides a simple interface for copying an area of one 7 * block-device to one or more other block-devices, with an asynchronous 8 * completion notification. 9 */ 10 11#ifndef DM_KCOPYD_H 12#define DM_KCOPYD_H 13 14#include "dm-io.h" 15 16/* FIXME: make this configurable */ 17#define KCOPYD_MAX_REGIONS 8 18 19#define KCOPYD_IGNORE_ERROR 1 20 21/* 22 * To use kcopyd you must first create a kcopyd client object. 23 */ 24struct kcopyd_client; 25int kcopyd_client_create(unsigned int num_pages, struct kcopyd_client **result); 26void kcopyd_client_destroy(struct kcopyd_client *kc); 27 28/* 29 * Submit a copy job to kcopyd. This is built on top of the 30 * previous three fns. 31 * 32 * read_err is a boolean, 33 * write_err is a bitset, with 1 bit for each destination region 34 */ 35typedef void (*kcopyd_notify_fn)(int read_err, 36 unsigned int write_err, void *context); 37 38int kcopyd_copy(struct kcopyd_client *kc, struct io_region *from, 39 unsigned int num_dests, struct io_region *dests, 40 unsigned int flags, kcopyd_notify_fn fn, void *context); 41 42#endif