exofs: Multi-device mirror support
[safe/jmp/linux-2.6] / fs / exofs / pnfs.h
1 /*
2  * Copyright (C) 2008, 2009
3  * Boaz Harrosh <bharrosh@panasas.com>
4  *
5  * This file is part of exofs.
6  *
7  * exofs is free software; you can redistribute it and/or modify it under the
8  * terms of the GNU General Public License  version 2 as published by the Free
9  * Software Foundation.
10  *
11  */
12
13 /* FIXME: Remove this file once pnfs hits mainline */
14
15 #ifndef __EXOFS_PNFS_H__
16 #define __EXOFS_PNFS_H__
17
18 #if defined(CONFIG_PNFS)
19
20
21 /* FIXME: move this file to: linux/exportfs/pnfs_osd_xdr.h */
22 #include "../nfs/objlayout/pnfs_osd_xdr.h"
23
24 #else /* defined(CONFIG_PNFS) */
25
26 enum pnfs_iomode {
27         IOMODE_READ = 1,
28         IOMODE_RW = 2,
29         IOMODE_ANY = 3,
30 };
31
32 /* Layout Structure */
33 enum pnfs_osd_raid_algorithm4 {
34         PNFS_OSD_RAID_0         = 1,
35         PNFS_OSD_RAID_4         = 2,
36         PNFS_OSD_RAID_5         = 3,
37         PNFS_OSD_RAID_PQ        = 4     /* Reed-Solomon P+Q */
38 };
39
40 struct pnfs_osd_data_map {
41         u32     odm_num_comps;
42         u64     odm_stripe_unit;
43         u32     odm_group_width;
44         u32     odm_group_depth;
45         u32     odm_mirror_cnt;
46         u32     odm_raid_algorithm;
47 };
48
49 #endif /* else defined(CONFIG_PNFS) */
50
51 #endif /* __EXOFS_PNFS_H__ */