Commit | Line | Data |
---|---|---|
1da177e4 LT |
1 | /* |
2 | md.h : Multiple Devices driver for Linux | |
3 | Copyright (C) 1996-98 Ingo Molnar, Gadi Oxman | |
4 | Copyright (C) 1994-96 Marc ZYNGIER | |
5 | <zyngier@ufr-info-p7.ibp.fr> or | |
6 | <maz@gloups.fdn.fr> | |
7 | ||
8 | This program is free software; you can redistribute it and/or modify | |
9 | it under the terms of the GNU General Public License as published by | |
10 | the Free Software Foundation; either version 2, or (at your option) | |
11 | any later version. | |
12 | ||
13 | You should have received a copy of the GNU General Public License | |
14 | (for example /usr/src/linux/COPYING); if not, write to the Free | |
15 | Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |
16 | */ | |
17 | ||
18 | #ifndef _MD_H | |
19 | #define _MD_H | |
20 | ||
21 | #include <linux/blkdev.h> | |
22 | #include <asm/semaphore.h> | |
23 | #include <linux/major.h> | |
24 | #include <linux/ioctl.h> | |
25 | #include <linux/types.h> | |
26 | #include <linux/bitops.h> | |
27 | #include <linux/module.h> | |
28 | #include <linux/hdreg.h> | |
29 | #include <linux/proc_fs.h> | |
30 | #include <linux/seq_file.h> | |
31 | #include <linux/smp_lock.h> | |
32 | #include <linux/delay.h> | |
33 | #include <net/checksum.h> | |
34 | #include <linux/random.h> | |
35 | #include <linux/kernel_stat.h> | |
36 | #include <asm/io.h> | |
37 | #include <linux/completion.h> | |
38 | #include <linux/mempool.h> | |
39 | #include <linux/list.h> | |
40 | #include <linux/reboot.h> | |
41 | #include <linux/vmalloc.h> | |
42 | #include <linux/blkpg.h> | |
43 | #include <linux/bio.h> | |
44 | ||
45 | /* | |
46 | * 'md_p.h' holds the 'physical' layout of RAID devices | |
47 | * 'md_u.h' holds the user <=> kernel API | |
48 | * | |
49 | * 'md_k.h' holds kernel internal definitions | |
50 | */ | |
51 | ||
52 | #include <linux/raid/md_p.h> | |
53 | #include <linux/raid/md_u.h> | |
54 | #include <linux/raid/md_k.h> | |
55 | ||
56 | /* | |
57 | * Different major versions are not compatible. | |
58 | * Different minor versions are only downward compatible. | |
59 | * Different patchlevel versions are downward and upward compatible. | |
60 | */ | |
61 | #define MD_MAJOR_VERSION 0 | |
62 | #define MD_MINOR_VERSION 90 | |
a654b9d8 N |
63 | /* |
64 | * MD_PATCHLEVEL_VERSION indicates kernel functionality. | |
65 | * >=1 means different superblock formats are selectable using SET_ARRAY_INFO | |
66 | * and major_version/minor_version accordingly | |
67 | * >=2 means that Internal bitmaps are supported by setting MD_SB_BITMAP_PRESENT | |
68 | * in the super status byte | |
bd926c63 N |
69 | * >=3 means that bitmap superblock version 4 is supported, which uses |
70 | * little-ending representation rather than host-endian | |
a654b9d8 | 71 | */ |
bd926c63 | 72 | #define MD_PATCHLEVEL_VERSION 3 |
1da177e4 | 73 | |
2604b703 N |
74 | extern int register_md_personality (struct mdk_personality *p); |
75 | extern int unregister_md_personality (struct mdk_personality *p); | |
1da177e4 LT |
76 | extern mdk_thread_t * md_register_thread (void (*run) (mddev_t *mddev), |
77 | mddev_t *mddev, const char *name); | |
78 | extern void md_unregister_thread (mdk_thread_t *thread); | |
79 | extern void md_wakeup_thread(mdk_thread_t *thread); | |
80 | extern void md_check_recovery(mddev_t *mddev); | |
3d310eb7 | 81 | extern void md_write_start(mddev_t *mddev, struct bio *bi); |
1da177e4 LT |
82 | extern void md_write_end(mddev_t *mddev); |
83 | extern void md_handle_safemode(mddev_t *mddev); | |
84 | extern void md_done_sync(mddev_t *mddev, int blocks, int ok); | |
85 | extern void md_error (mddev_t *mddev, mdk_rdev_t *rdev); | |
86 | extern void md_unplug_mddev(mddev_t *mddev); | |
87 | ||
88 | extern void md_print_devices (void); | |
89 | ||
a654b9d8 N |
90 | extern void md_super_write(mddev_t *mddev, mdk_rdev_t *rdev, |
91 | sector_t sector, int size, struct page *page); | |
a9701a30 | 92 | extern void md_super_wait(mddev_t *mddev); |
a654b9d8 N |
93 | extern int sync_page_io(struct block_device *bdev, sector_t sector, int size, |
94 | struct page *page, int rw); | |
95 | ||
96 | ||
1da177e4 LT |
97 | #define MD_BUG(x...) { printk("md: bug in file %s, line %d\n", __FILE__, __LINE__); md_print_devices(); } |
98 | ||
99 | #endif | |
100 |