dm.h 2.6 KB
Newer Older
L
Linus Torvalds 已提交
1 2 3 4
/*
 * Internal header file for device mapper
 *
 * Copyright (C) 2001, 2002 Sistina Software
5
 * Copyright (C) 2004-2006 Red Hat, Inc. All rights reserved.
L
Linus Torvalds 已提交
6 7 8 9 10 11 12 13 14 15 16
 *
 * This file is released under the LGPL.
 */

#ifndef DM_INTERNAL_H
#define DM_INTERNAL_H

#include <linux/fs.h>
#include <linux/device-mapper.h>
#include <linux/list.h>
#include <linux/blkdev.h>
D
Darrick J. Wong 已提交
17
#include <linux/hdreg.h>
L
Linus Torvalds 已提交
18

19 20 21 22
/*
 * Suspend feature flags
 */
#define DM_SUSPEND_LOCKFS_FLAG		(1 << 0)
23
#define DM_SUSPEND_NOFLUSH_FLAG		(1 << 1)
24

L
Linus Torvalds 已提交
25 26 27
/*
 * List of devices that a metadevice uses and should open/close.
 */
M
Mikulas Patocka 已提交
28
struct dm_dev_internal {
L
Linus Torvalds 已提交
29 30
	struct list_head list;
	atomic_t count;
M
Mikulas Patocka 已提交
31
	struct dm_dev dm_dev;
L
Linus Torvalds 已提交
32 33 34 35 36
};

struct dm_table;

/*-----------------------------------------------------------------
A
Alasdair G Kergon 已提交
37
 * Internal table functions.
L
Linus Torvalds 已提交
38 39 40 41 42 43 44 45 46
 *---------------------------------------------------------------*/
void dm_table_event_callback(struct dm_table *t,
			     void (*fn)(void *), void *context);
struct dm_target *dm_table_get_target(struct dm_table *t, unsigned int index);
struct dm_target *dm_table_find_target(struct dm_table *t, sector_t sector);
void dm_table_set_restrictions(struct dm_table *t, struct request_queue *q);
struct list_head *dm_table_get_devices(struct dm_table *t);
void dm_table_presuspend_targets(struct dm_table *t);
void dm_table_postsuspend_targets(struct dm_table *t);
47
int dm_table_resume_targets(struct dm_table *t);
L
Linus Torvalds 已提交
48 49
int dm_table_any_congested(struct dm_table *t, int bdi_bits);

50 51 52 53
/*
 * To check the return value from dm_table_find_target().
 */
#define dm_target_is_valid(t) ((t)->table)
54
int dm_table_barrier_ok(struct dm_table *t);
55

L
Linus Torvalds 已提交
56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
/*-----------------------------------------------------------------
 * A registry of target types.
 *---------------------------------------------------------------*/
int dm_target_init(void);
void dm_target_exit(void);
struct target_type *dm_get_target_type(const char *name);
void dm_put_target_type(struct target_type *t);
int dm_target_iterate(void (*iter_func)(struct target_type *tt,
					void *param), void *param);

int dm_split_args(int *argc, char ***argvp, char *input);

/*
 * The device-mapper can be driven through one of two interfaces;
 * ioctl or filesystem, depending which patch you have applied.
 */
int dm_interface_init(void);
void dm_interface_exit(void);

/*
 * Targets for linear and striped mappings
 */
int dm_linear_init(void);
void dm_linear_exit(void);

int dm_stripe_init(void);
void dm_stripe_exit(void);

84 85
int dm_open_count(struct mapped_device *md);
int dm_lock_for_deletion(struct mapped_device *md);
L
Linus Torvalds 已提交
86

87 88
void dm_kobject_uevent(struct mapped_device *md);

89 90 91
int dm_kcopyd_init(void);
void dm_kcopyd_exit(void);

L
Linus Torvalds 已提交
92
#endif