staging/lustre: remove portals_compat25.h
[deliverable/linux.git] / drivers / staging / lustre / lustre / include / linux / lustre_compat25.h
CommitLineData
d7e09d03
PT
1/*
2 * GPL HEADER START
3 *
4 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License version 2 only,
8 * as published by the Free Software Foundation.
9 *
10 * This program is distributed in the hope that it will be useful, but
11 * WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * General Public License version 2 for more details (a copy is included
14 * in the LICENSE file that accompanied this code).
15 *
16 * You should have received a copy of the GNU General Public License
17 * version 2 along with this program; If not, see
18 * http://www.sun.com/software/products/lustre/docs/GPLv2.pdf
19 *
20 * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
21 * CA 95054 USA or visit www.sun.com if you need additional information or
22 * have any questions.
23 *
24 * GPL HEADER END
25 */
26/*
27 * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
28 * Use is subject to license terms.
29 *
30 * Copyright (c) 2011, 2012, Intel Corporation.
31 */
32/*
33 * This file is part of Lustre, http://www.lustre.org/
34 * Lustre is a trademark of Sun Microsystems, Inc.
35 */
36
37#ifndef _LINUX_COMPAT25_H
38#define _LINUX_COMPAT25_H
39
40#include <linux/fs_struct.h>
41#include <linux/namei.h>
d7e09d03 42
1accaadf 43#include "lustre_patchless_compat.h"
d7e09d03
PT
44
45# define LOCK_FS_STRUCT(fs) spin_lock(&(fs)->lock)
46# define UNLOCK_FS_STRUCT(fs) spin_unlock(&(fs)->lock)
47
48static inline void ll_set_fs_pwd(struct fs_struct *fs, struct vfsmount *mnt,
49 struct dentry *dentry)
50{
51 struct path path;
52 struct path old_pwd;
53
54 path.mnt = mnt;
55 path.dentry = dentry;
56 LOCK_FS_STRUCT(fs);
57 old_pwd = fs->pwd;
58 path_get(&path);
59 fs->pwd = path;
60 UNLOCK_FS_STRUCT(fs);
61
62 if (old_pwd.dentry)
63 path_put(&old_pwd);
64}
65
66
67/*
68 * set ATTR_BLOCKS to a high value to avoid any risk of collision with other
69 * ATTR_* attributes (see bug 13828)
70 */
71#define ATTR_BLOCKS (1 << 27)
72
73#define current_ngroups current_cred()->group_info->ngroups
74#define current_groups current_cred()->group_info->small_block
75
76/*
77 * OBD need working random driver, thus all our
78 * initialization routines must be called after device
79 * driver initialization
80 */
81#ifndef MODULE
82#undef module_init
83#define module_init(a) late_initcall(a)
84#endif
85
86
87#define LTIME_S(time) (time.tv_sec)
88
d7e09d03
PT
89/* inode_dio_wait(i) use as-is for write lock */
90# define inode_dio_write_done(i) do {} while (0) /* for write unlock */
91# define inode_dio_read(i) atomic_inc(&(i)->i_dio_count)
92/* inode_dio_done(i) use as-is for read unlock */
93
94#define TREE_READ_LOCK_IRQ(mapping) spin_lock_irq(&(mapping)->tree_lock)
95#define TREE_READ_UNLOCK_IRQ(mapping) spin_unlock_irq(&(mapping)->tree_lock)
96
d7e09d03
PT
97#ifndef FS_HAS_FIEMAP
98#define FS_HAS_FIEMAP (0)
99#endif
100
1d8cb70c
GD
101#define ll_vfs_rmdir(dir, entry, mnt) vfs_rmdir(dir, entry)
102#define ll_vfs_mkdir(inode, dir, mnt, mode) vfs_mkdir(inode, dir, mode)
103#define ll_vfs_link(old, mnt, dir, new, mnt1) vfs_link(old, dir, new)
104#define ll_vfs_unlink(inode, entry, mnt) vfs_unlink(inode, entry)
105#define ll_vfs_mknod(dir, entry, mnt, mode, dev) \
106 vfs_mknod(dir, entry, mode, dev)
107#define ll_security_inode_unlink(dir, entry, mnt) \
108 security_inode_unlink(dir, entry)
520c8b16
MS
109#define ll_vfs_rename(old, old_dir, mnt, new, new_dir, mnt1) \
110 vfs_rename(old, old_dir, new, new_dir, NULL, 0)
d7e09d03 111
1d8cb70c
GD
112#define cfs_bio_io_error(a, b) bio_io_error((a))
113#define cfs_bio_endio(a, b, c) bio_endio((a), (c))
d7e09d03
PT
114
115#define cfs_fs_pwd(fs) ((fs)->pwd.dentry)
116#define cfs_fs_mnt(fs) ((fs)->pwd.mnt)
117#define cfs_path_put(nd) path_put(&(nd)->path)
118
119
120#ifndef SLAB_DESTROY_BY_RCU
121#define SLAB_DESTROY_BY_RCU 0
122#endif
123
124
125
126static inline int
127ll_quota_on(struct super_block *sb, int off, int ver, char *name, int remount)
128{
129 int rc;
130
131 if (sb->s_qcop->quota_on) {
132 struct path path;
133
134 rc = kern_path(name, LOOKUP_FOLLOW, &path);
135 if (!rc)
136 return rc;
137 rc = sb->s_qcop->quota_on(sb, off, ver
138 , &path
139 );
140 path_put(&path);
141 return rc;
142 }
143 else
144 return -ENOSYS;
145}
146
147static inline int ll_quota_off(struct super_block *sb, int off, int remount)
148{
149 if (sb->s_qcop->quota_off) {
150 return sb->s_qcop->quota_off(sb, off
151 );
152 }
153 else
154 return -ENOSYS;
155}
156
157
158# define ll_vfs_dq_init dquot_initialize
159# define ll_vfs_dq_drop dquot_drop
160# define ll_vfs_dq_transfer dquot_transfer
161# define ll_vfs_dq_off(sb, remount) dquot_suspend(sb, -1)
162
163
164
165
166
167#define queue_max_phys_segments(rq) queue_max_segments(rq)
168#define queue_max_hw_segments(rq) queue_max_segments(rq)
169
d7e09d03
PT
170
171#define ll_d_hlist_node hlist_node
172#define ll_d_hlist_empty(list) hlist_empty(list)
173#define ll_d_hlist_entry(ptr, type, name) hlist_entry(ptr.first, type, name)
174#define ll_d_hlist_for_each(tmp, i_dentry) hlist_for_each(tmp, i_dentry)
175#define ll_d_hlist_for_each_entry(dentry, p, i_dentry, alias) \
176 p = NULL; hlist_for_each_entry(dentry, i_dentry, alias)
177
178
179#define bio_hw_segments(q, bio) 0
180
181
182#define ll_pagevec_init(pv, cold) do {} while (0)
183#define ll_pagevec_add(pv, pg) (0)
184#define ll_pagevec_lru_add_file(pv) do {} while (0)
185
186
187#ifndef QUOTA_OK
188# define QUOTA_OK 0
189#endif
190#ifndef NO_QUOTA
191# define NO_QUOTA (-EDQUOT)
192#endif
193
194#ifndef SEEK_DATA
195#define SEEK_DATA 3 /* seek to the next data */
196#endif
197#ifndef SEEK_HOLE
198#define SEEK_HOLE 4 /* seek to the next hole */
199#endif
200
201#ifndef FMODE_UNSIGNED_OFFSET
202#define FMODE_UNSIGNED_OFFSET ((__force fmode_t)0x2000)
203#endif
204
205#if !defined(_ASM_GENERIC_BITOPS_EXT2_NON_ATOMIC_H_) && !defined(ext2_set_bit)
206# define ext2_set_bit __test_and_set_bit_le
207# define ext2_clear_bit __test_and_clear_bit_le
208# define ext2_test_bit test_bit_le
209# define ext2_find_first_zero_bit find_first_zero_bit_le
210# define ext2_find_next_zero_bit find_next_zero_bit_le
211#endif
212
213#ifdef ATTR_TIMES_SET
214# define TIMES_SET_FLAGS (ATTR_MTIME_SET | ATTR_ATIME_SET | ATTR_TIMES_SET)
215#else
216# define TIMES_SET_FLAGS (ATTR_MTIME_SET | ATTR_ATIME_SET)
217#endif
218
219
220
221/*
222 * After 3.1, kernel's nameidata.intent.open.flags is different
223 * with lustre's lookup_intent.it_flags, as lustre's it_flags'
224 * lower bits equal to FMODE_xxx while kernel doesn't transliterate
225 * lower bits of nameidata.intent.open.flags to FMODE_xxx.
226 * */
227#include <linux/version.h>
228static inline int ll_namei_to_lookup_intent_flag(int flag)
229{
230#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 1, 0)
231 flag = (flag & ~O_ACCMODE) | OPEN_FMODE(flag);
232#endif
233 return flag;
234}
235
d7e09d03
PT
236#include <linux/fs.h>
237
238# define ll_umode_t umode_t
239
240#include <linux/dcache.h>
241
242# define ll_dirty_inode(inode, flag) (inode)->i_sb->s_op->dirty_inode((inode), flag)
243
244#endif /* _COMPAT25_H */
This page took 0.203657 seconds and 5 git commands to generate.