271a0cbef76adfd8bdb72f07363aa0549f7bb3c8
[zfs.git] / include / linux / dcache_compat.h
1 /*
2  * CDDL HEADER START
3  *
4  * The contents of this file are subject to the terms of the
5  * Common Development and Distribution License (the "License").
6  * You may not use this file except in compliance with the License.
7  *
8  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9  * or http://www.opensolaris.org/os/licensing.
10  * See the License for the specific language governing permissions
11  * and limitations under the License.
12  *
13  * When distributing Covered Code, include this CDDL HEADER in each
14  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15  * If applicable, add the following below this CDDL HEADER, with the
16  * fields enclosed by brackets "[]" replaced with your own identifying
17  * information: Portions Copyright [yyyy] [name of copyright owner]
18  *
19  * CDDL HEADER END
20  */
21
22 /*
23  * Copyright (C) 2011 Lawrence Livermore National Security, LLC.
24  */
25
26 #ifndef _ZFS_DCACHE_H
27 #define _ZFS_DCACHE_H
28
29 #include <linux/dcache.h>
30
31 #define dname(dentry)   ((char *)((dentry)->d_name.name))
32 #define dlen(dentry)    ((int)((dentry)->d_name.len))
33
34 #ifndef HAVE_D_MAKE_ROOT
35 #define d_make_root(inode)      d_alloc_root(inode)
36 #endif /* HAVE_D_MAKE_ROOT */
37
38 /*
39  * 2.6.30 API change,
40  * The const keyword was added to the 'struct dentry_operations' in
41  * the dentry structure.  To handle this we define an appropriate
42  * dentry_operations_t typedef which can be used.
43  */
44 #ifdef HAVE_CONST_DENTRY_OPERATIONS
45 typedef const struct dentry_operations  dentry_operations_t;
46 #else
47 typedef struct dentry_operations        dentry_operations_t;
48 #endif
49
50 /*
51  * 2.6.38 API change,
52  * Added d_set_d_op() helper function which sets some flags in
53  * dentry->d_flags based on which operations are defined.
54  */
55 #ifndef HAVE_D_SET_D_OP
56 static inline void
57 d_set_d_op(struct dentry *dentry, dentry_operations_t *op)
58 {
59         dentry->d_op = op;
60 }
61 #endif /* HAVE_D_SET_D_OP */
62
63 #endif /* _ZFS_DCACHE_H */