pnfs-obj: decode layout, alloc/free lseg
[pandora-kernel.git] / fs / nfs / objlayout / objlayout.h
1 /*
2  *  Data types and function declerations for interfacing with the
3  *  pNFS standard object layout driver.
4  *
5  *  Copyright (C) 2007 Panasas Inc. [year of first publication]
6  *  All rights reserved.
7  *
8  *  Benny Halevy <bhalevy@panasas.com>
9  *  Boaz Harrosh <bharrosh@panasas.com>
10  *
11  *  This program is free software; you can redistribute it and/or modify
12  *  it under the terms of the GNU General Public License version 2
13  *  See the file COPYING included with this distribution for more details.
14  *
15  *  Redistribution and use in source and binary forms, with or without
16  *  modification, are permitted provided that the following conditions
17  *  are met:
18  *
19  *  1. Redistributions of source code must retain the above copyright
20  *     notice, this list of conditions and the following disclaimer.
21  *  2. Redistributions in binary form must reproduce the above copyright
22  *     notice, this list of conditions and the following disclaimer in the
23  *     documentation and/or other materials provided with the distribution.
24  *  3. Neither the name of the Panasas company nor the names of its
25  *     contributors may be used to endorse or promote products derived
26  *     from this software without specific prior written permission.
27  *
28  *  THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
29  *  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
30  *  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
31  *  DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
32  *  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
33  *  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
34  *  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
35  *  BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
36  *  LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
37  *  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
38  *  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
39  */
40
41 #ifndef _OBJLAYOUT_H
42 #define _OBJLAYOUT_H
43
44 #include <linux/nfs_fs.h>
45 #include <linux/pnfs_osd_xdr.h>
46 #include "../pnfs.h"
47
48 /*
49  * Raid engine I/O API
50  */
51 extern int objio_alloc_lseg(struct pnfs_layout_segment **outp,
52         struct pnfs_layout_hdr *pnfslay,
53         struct pnfs_layout_range *range,
54         struct xdr_stream *xdr,
55         gfp_t gfp_flags);
56 extern void objio_free_lseg(struct pnfs_layout_segment *lseg);
57
58 /*
59  * exported generic objects function vectors
60  */
61 extern struct pnfs_layout_segment *objlayout_alloc_lseg(
62         struct pnfs_layout_hdr *,
63         struct nfs4_layoutget_res *,
64         gfp_t gfp_flags);
65 extern void objlayout_free_lseg(struct pnfs_layout_segment *);
66
67 #endif /* _OBJLAYOUT_H */