All LINUX_VERSION_CODE refereces are used to note kernel version older
than 2.6.18. So we can drop them all.
Affected variables are inlined as much as possible to minimize compat
code definition.
Signed-off-by: Peng Tao <tao.peng@emc.com>
Change-Id: If3b94ceb5e21db8f96b11526399e9cd8f174fd6f
Reviewed-on: http://review.whamcloud.com/3442
Tested-by: Hudson
Reviewed-by: Yang Sheng <ys@whamcloud.com>
Tested-by: Maloo <whamcloud.maloo@gmail.com>
Reviewed-by: Prakash Surya <surya1@llnl.gov>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
13 files changed:
#define MODULE_PARM(a, b)
#define MODULE_PARM_DESC(a, b)
#define MODULE_PARM(a, b)
#define MODULE_PARM_DESC(a, b)
-#define KERNEL_VERSION(a,b,c) ((a)*100+(b)*10+c)
-#define LINUX_VERSION_CODE KERNEL_VERSION(2,5,0)
-
#define NR_IRQS 512
#define in_interrupt() ml_at_interrupt_context()
#define NR_IRQS 512
#define in_interrupt() ml_at_interrupt_context()
- * Linux kernel version definition
- */
-
-#define KERNEL_VERSION(a,b,c) ((a)*100+(b)*10+c)
-
-/*
* linux ioctl coding definitions
*/
* linux ioctl coding definitions
*/
EXPORT_SYMBOL(libcfs_sock_listen);
EXPORT_SYMBOL(libcfs_sock_listen);
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,12)
-int sock_create_lite(int family, int type, int protocol, struct socket **res)
-{
- struct socket *sock;
-
- sock = sock_alloc();
- if (sock == NULL)
- return -ENOMEM;
-
- sock->type = type;
- *res = sock;
-
- return 0;
-}
-#endif
-
int
libcfs_sock_accept (struct socket **newsockp, struct socket *sock)
{
int
libcfs_sock_accept (struct socket **newsockp, struct socket *sock)
{
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,10))
-#define sock2tcp_opt(sk) tcp_sk(sk)
-#else
-struct tcp_opt *sock2tcp_opt(struct sock *sk)
-{
- struct tcp_sock *s = (struct tcp_sock *)sk;
- return &s->tcp;
-}
-#endif
-
void
ksocknal_lib_push_conn (ksock_conn_t *conn)
{
struct sock *sk;
void
ksocknal_lib_push_conn (ksock_conn_t *conn)
{
struct sock *sk;
-#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,11))
- struct tcp_opt *tp;
-#else
int nonagle;
int val = 1;
int rc;
int nonagle;
int val = 1;
int rc;
if (rc != 0) /* being shut down */
return;
if (rc != 0) /* being shut down */
return;
- sk = conn->ksnc_sock->sk;
- tp = sock2tcp_opt(sk);
+ sk = conn->ksnc_sock->sk;
+ tp = tcp_sk(sk);
lock_sock (sk);
nonagle = tp->nonagle;
lock_sock (sk);
nonagle = tp->nonagle;
-/* always adopt 2.6.9 definitions */
-#define KERNEL_VERSION(a,b,c) ((a)*100+(b)*10+c)
-#define LINUX_VERSION_CODE KERNEL_VERSION(2,6,9)
-
#ifndef page_private
#define page_private(page) ((page)->private)
#define set_page_private(page, v) ((page)->private = (v))
#ifndef page_private
#define page_private(page) ((page)->private)
#define set_page_private(page, v) ((page)->private = (v))
unsigned int ia_attr_flags;
};
unsigned int ia_attr_flags;
};
-#define ll_iattr iattr
-
/* defined in kernel header include/linux/namei.h */
#define INTENT_MAGIC 0x19620323
/* defined in kernel header include/linux/namei.h */
#define INTENT_MAGIC 0x19620323
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,9)
-#error sorry, lustre requires at least linux kernel 2.6.9 or later
-#endif
-
#include <linux/fs_struct.h>
#include <linux/namei.h>
#include <libcfs/linux/portals_compat25.h>
#include <linux/fs_struct.h>
#include <linux/namei.h>
#include <libcfs/linux/portals_compat25.h>
#define SEEK_END 2
#endif
#define SEEK_END 2
#endif
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,14)
-struct ll_iattr {
- struct iattr iattr;
- unsigned int ia_attr_flags;
-};
-#else
-#define ll_iattr iattr
-#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,14) */
-
#ifdef HAVE_FS_STRUCT_RWLOCK
# define LOCK_FS_STRUCT(fs) cfs_write_lock(&(fs)->lock)
# define UNLOCK_FS_STRUCT(fs) cfs_write_unlock(&(fs)->lock)
#ifdef HAVE_FS_STRUCT_RWLOCK
# define LOCK_FS_STRUCT(fs) cfs_write_lock(&(fs)->lock)
# define UNLOCK_FS_STRUCT(fs) cfs_write_unlock(&(fs)->lock)
*/
#define ATTR_BLOCKS (1 << 27)
*/
#define ATTR_BLOCKS (1 << 27)
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,15)
-#define d_child d_u.d_child
-#define d_rcu d_u.d_rcu
-#endif
-
#define current_ngroups current_cred()->group_info->ngroups
#define current_groups current_cred()->group_info->small_block
#define current_ngroups current_cred()->group_info->ngroups
#define current_groups current_cred()->group_info->small_block
# include <linux/lustre_intent.h>
#endif
# include <linux/lustre_intent.h>
#endif
+struct ll_iattr {
+ struct iattr iattr;
+ unsigned int ia_attr_flags;
+};
+
#define CLIENT_OBD_LIST_LOCK_DEBUG 1
typedef struct {
cfs_spinlock_t lock;
#define CLIENT_OBD_LIST_LOCK_DEBUG 1
typedef struct {
cfs_spinlock_t lock;
/* iattr fields and blocks. */
struct iattr op_attr;
#ifdef __KERNEL__
/* iattr fields and blocks. */
struct iattr op_attr;
#ifdef __KERNEL__
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,14)
- unsigned int op_attr_flags;
-#endif
+ unsigned int op_attr_flags;
#endif
__u64 op_valid;
loff_t op_attr_blocks;
#endif
__u64 op_valid;
loff_t op_attr_blocks;
- list_for_each(tmp, &dentry->d_subdirs) {
- struct dentry *d = list_entry(tmp, struct dentry, d_child);
- lustre_dump_dentry(d, recur - 1);
- }
+ list_for_each(tmp, &dentry->d_subdirs) {
+ struct dentry *d = list_entry(tmp, struct dentry, d_u.d_child);
+ lustre_dump_dentry(d, recur - 1);
+ }
}
void client_common_put_super(struct super_block *sb)
}
void client_common_put_super(struct super_block *sb)
list_for_each_entry_safe(child, tmp_subdir,
&dentry->d_subdirs,
list_for_each_entry_safe(child, tmp_subdir,
&dentry->d_subdirs,
if (child->d_inode == NULL)
d_lustre_invalidate(child);
}
if (child->d_inode == NULL)
d_lustre_invalidate(child);
}
if (nd && !(nd->flags & (LOOKUP_CONTINUE|LOOKUP_PARENT))) {
struct lookup_intent *it;
if (nd && !(nd->flags & (LOOKUP_CONTINUE|LOOKUP_PARENT))) {
struct lookup_intent *it;
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,17)
- /* Did we came here from failed revalidate just to propagate
- * its error? */
- if (nd->flags & LOOKUP_OPEN)
- if (IS_ERR(nd->intent.open.file))
- RETURN((struct dentry *)nd->intent.open.file);
-#endif
if (ll_d2d(dentry) && ll_d2d(dentry)->lld_it) {
it = ll_d2d(dentry)->lld_it;
ll_d2d(dentry)->lld_it = NULL;
if (ll_d2d(dentry) && ll_d2d(dentry)->lld_it) {
it = ll_d2d(dentry)->lld_it;
ll_d2d(dentry)->lld_it = NULL;
seq_page_flag(seq, vmpage, referenced, has_flags);
seq_page_flag(seq, vmpage, uptodate, has_flags);
seq_page_flag(seq, vmpage, dirty, has_flags);
seq_page_flag(seq, vmpage, referenced, has_flags);
seq_page_flag(seq, vmpage, uptodate, has_flags);
seq_page_flag(seq, vmpage, dirty, has_flags);
-#if (LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,12))
- seq_page_flag(seq, vmpage, highmem, has_flags);
-#endif
seq_page_flag(seq, vmpage, writeback, has_flags);
seq_printf(seq, "%s]\n", has_flags ? "" : "-");
}
seq_page_flag(seq, vmpage, writeback, has_flags);
seq_printf(seq, "%s]\n", has_flags ? "" : "-");
}
#include "lustre_quota_fmt.h"
#include "lustre_quota_fmt.h"
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,15)
-#define FSFILT_DATA_TRANS_BLOCKS(sb) EXT3_DATA_TRANS_BLOCKS
-#define FSFILT_DELETE_TRANS_BLOCKS(sb) EXT3_DELETE_TRANS_BLOCKS
-#else
-#define FSFILT_DATA_TRANS_BLOCKS(sb) EXT3_DATA_TRANS_BLOCKS(sb)
-#define FSFILT_DELETE_TRANS_BLOCKS(sb) EXT3_DELETE_TRANS_BLOCKS(sb)
-#endif
-
/* for kernels 2.6.18 and later */
#define FSFILT_SINGLEDATA_TRANS_BLOCKS(sb) EXT3_SINGLEDATA_TRANS_BLOCKS(sb)
/* for kernels 2.6.18 and later */
#define FSFILT_SINGLEDATA_TRANS_BLOCKS(sb) EXT3_SINGLEDATA_TRANS_BLOCKS(sb)
switch(op) {
case FSFILT_OP_RMDIR:
case FSFILT_OP_UNLINK:
switch(op) {
case FSFILT_OP_RMDIR:
case FSFILT_OP_UNLINK:
- /* delete one file + create/update logs for each stripe */
- nblocks += FSFILT_DELETE_TRANS_BLOCKS(inode->i_sb);
- nblocks += (EXT3_INDEX_EXTRA_TRANS_BLOCKS +
- FSFILT_SINGLEDATA_TRANS_BLOCKS(inode->i_sb)) * logs;
- break;
+ /* delete one file + create/update logs for each stripe */
+ nblocks += EXT3_DELETE_TRANS_BLOCKS(inode->i_sb);
+ nblocks += (EXT3_INDEX_EXTRA_TRANS_BLOCKS +
+ FSFILT_SINGLEDATA_TRANS_BLOCKS(inode->i_sb)) * logs;
+ break;
case FSFILT_OP_RENAME:
/* modify additional directory */
nblocks += FSFILT_SINGLEDATA_TRANS_BLOCKS(inode->i_sb);
case FSFILT_OP_RENAME:
/* modify additional directory */
nblocks += FSFILT_SINGLEDATA_TRANS_BLOCKS(inode->i_sb);
/* no break */
case FSFILT_OP_LINK:
/* modify parent directory */
/* no break */
case FSFILT_OP_LINK:
/* modify parent directory */
- nblocks += EXT3_INDEX_EXTRA_TRANS_BLOCKS +
- FSFILT_DATA_TRANS_BLOCKS(inode->i_sb);
+ nblocks += EXT3_INDEX_EXTRA_TRANS_BLOCKS +
+ EXT3_DATA_TRANS_BLOCKS(inode->i_sb);
/* create/update logs for each stripe */
nblocks += (EXT3_INDEX_EXTRA_TRANS_BLOCKS +
FSFILT_SINGLEDATA_TRANS_BLOCKS(inode->i_sb)) * logs;
break;
case FSFILT_OP_SETATTR:
/* Setattr on inode */
/* create/update logs for each stripe */
nblocks += (EXT3_INDEX_EXTRA_TRANS_BLOCKS +
FSFILT_SINGLEDATA_TRANS_BLOCKS(inode->i_sb)) * logs;
break;
case FSFILT_OP_SETATTR:
/* Setattr on inode */
- nblocks += 1;
- nblocks += EXT3_INDEX_EXTRA_TRANS_BLOCKS +
- FSFILT_DATA_TRANS_BLOCKS(inode->i_sb);
+ nblocks += 1;
+ nblocks += EXT3_INDEX_EXTRA_TRANS_BLOCKS +
+ EXT3_DATA_TRANS_BLOCKS(inode->i_sb);
/* quota chown log for each stripe */
nblocks += (EXT3_INDEX_EXTRA_TRANS_BLOCKS +
FSFILT_SINGLEDATA_TRANS_BLOCKS(inode->i_sb)) * logs;
/* quota chown log for each stripe */
nblocks += (EXT3_INDEX_EXTRA_TRANS_BLOCKS +
FSFILT_SINGLEDATA_TRANS_BLOCKS(inode->i_sb)) * logs;
case FSFILT_OP_CANCEL_UNLINK:
/* blocks for log header bitmap update OR
* blocks for catalog header bitmap update + unlink of logs */
case FSFILT_OP_CANCEL_UNLINK:
/* blocks for log header bitmap update OR
* blocks for catalog header bitmap update + unlink of logs */
- nblocks = (LLOG_CHUNK_SIZE >> inode->i_blkbits) +
- FSFILT_DELETE_TRANS_BLOCKS(inode->i_sb) * logs;
- break;
+ nblocks = (LLOG_CHUNK_SIZE >> inode->i_blkbits) +
+ EXT3_DELETE_TRANS_BLOCKS(inode->i_sb) * logs;
+ break;
default: CERROR("unknown transaction start op %d\n", op);
LBUG();
}
default: CERROR("unknown transaction start op %d\n", op);
LBUG();
}
needed += nbitmaps + ngdblocks;
needed += nbitmaps + ngdblocks;
- /* last_rcvd update */
- needed += FSFILT_DATA_TRANS_BLOCKS(sb);
+ /* last_rcvd update */
+ needed += EXT3_DATA_TRANS_BLOCKS(sb);
#if defined(CONFIG_QUOTA)
/* We assume that there will be 1 bit set in s_dquot.flags for each
#if defined(CONFIG_QUOTA)
/* We assume that there will be 1 bit set in s_dquot.flags for each
#define EXT3_EXTENTS_FL 0x00080000 /* Inode uses extents */
#endif
#define EXT3_EXTENTS_FL 0x00080000 /* Inode uses extents */
#endif
-#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,17))
-# define fsfilt_up_truncate_sem(inode) up(&LDISKFS_I(inode)->truncate_sem);
-# define fsfilt_down_truncate_sem(inode) down(&LDISKFS_I(inode)->truncate_sem);
-#else
-# define fsfilt_up_truncate_sem(inode) do{ }while(0)
-# define fsfilt_down_truncate_sem(inode) do{ }while(0)
-#endif
-
#ifndef EXT_ASSERT
#define EXT_ASSERT(cond) BUG_ON(!(cond))
#endif
#ifndef EXT_ASSERT
#define EXT_ASSERT(cond) BUG_ON(!(cond))
#endif
- tgen = EXT_GENERATION(base);
- count = ext3_ext_calc_credits_for_insert(base, path);
- fsfilt_up_truncate_sem(inode);
+ tgen = EXT_GENERATION(base);
+ count = ext3_ext_calc_credits_for_insert(base, path);
- handle = ext3_journal_start(inode, count+EXT3_ALLOC_NEEDED+1);
- if (IS_ERR(handle)) {
- fsfilt_down_truncate_sem(inode);
- return PTR_ERR(handle);
- }
+ handle = ext3_journal_start(inode, count+EXT3_ALLOC_NEEDED+1);
+ if (IS_ERR(handle)) {
+ return PTR_ERR(handle);
+ }
- fsfilt_down_truncate_sem(inode);
if (tgen != EXT_GENERATION(base)) {
/* the tree has changed. so path can be invalid at moment */
ext3_journal_stop(handle);
if (tgen != EXT_GENERATION(base)) {
/* the tree has changed. so path can be invalid at moment */
ext3_journal_stop(handle);
bp.init_num = bp.num = num;
bp.create = create;
bp.init_num = bp.num = num;
bp.create = create;
- fsfilt_down_truncate_sem(inode);
- err = fsfilt_ext3_ext_walk_space(base, block, num,
- ext3_ext_new_extent_cb, &bp);
- ext3_ext_invalidate_cache(base);
- fsfilt_up_truncate_sem(inode);
+ err = fsfilt_ext3_ext_walk_space(base, block, num,
+ ext3_ext_new_extent_cb, &bp);
+ ext3_ext_invalidate_cache(base);
block_count = (*offs & (blocksize - 1)) + bufsize;
block_count = (block_count + blocksize - 1) >> inode->i_blkbits;
block_count = (*offs & (blocksize - 1)) + bufsize;
block_count = (block_count + blocksize - 1) >> inode->i_blkbits;
- handle = ext3_journal_start(inode,
- block_count * FSFILT_DATA_TRANS_BLOCKS(inode->i_sb) + 2);
- if (IS_ERR(handle)) {
- CERROR("can't start transaction for %d blocks (%d bytes)\n",
- block_count * FSFILT_DATA_TRANS_BLOCKS(inode->i_sb) + 2, bufsize);
- return PTR_ERR(handle);
- }
+ handle = ext3_journal_start(inode,
+ block_count * EXT3_DATA_TRANS_BLOCKS(inode->i_sb) + 2);
+ if (IS_ERR(handle)) {
+ CERROR("can't start transaction for %d blocks (%d bytes)\n",
+ block_count * EXT3_DATA_TRANS_BLOCKS(inode->i_sb) + 2,
+ bufsize);
+ return PTR_ERR(handle);
+ }
err = fsfilt_ext3_write_handle(inode, buf, bufsize, offs, handle);
err = fsfilt_ext3_write_handle(inode, buf, bufsize, offs, handle);
static int fsfilt_ext3_setup(struct super_block *sb)
{
static int fsfilt_ext3_setup(struct super_block *sb)
{
-#if ((LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,6)) && \
- defined(HAVE_QUOTA_SUPPORT)) || defined(S_PDIROPS)
+#if defined(HAVE_QUOTA_SUPPORT) || defined(S_PDIROPS)
struct ext3_sb_info *sbi = EXT3_SB(sb);
#if 0
sbi->dx_lock = fsfilt_ext3_dx_lock;
struct ext3_sb_info *sbi = EXT3_SB(sb);
#if 0
sbi->dx_lock = fsfilt_ext3_dx_lock;
#endif
if (!EXT3_HAS_COMPAT_FEATURE(sb, EXT3_FEATURE_COMPAT_DIR_INDEX))
CWARN("filesystem doesn't have dir_index feature enabled\n");
#endif
if (!EXT3_HAS_COMPAT_FEATURE(sb, EXT3_FEATURE_COMPAT_DIR_INDEX))
CWARN("filesystem doesn't have dir_index feature enabled\n");
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,6)) && defined(HAVE_QUOTA_SUPPORT)
+#ifdef HAVE_QUOTA_SUPPORT
/* enable journaled quota support */
/* kfreed in ext3_put_super() */
sbi->s_qf_names[USRQUOTA] = kstrdup("lquota.user.reserved", GFP_KERNEL);
/* enable journaled quota support */
/* kfreed in ext3_put_super() */
sbi->s_qf_names[USRQUOTA] = kstrdup("lquota.user.reserved", GFP_KERNEL);
return -ENOMEM;
}
sbi->s_jquota_fmt = QFMT_LUSTRE;
return -ENOMEM;
}
sbi->s_jquota_fmt = QFMT_LUSTRE;
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,13))
set_opt(sbi->s_mount_opt, QUOTA);
#endif
set_opt(sbi->s_mount_opt, QUOTA);
#endif
/* each indirect block (+4) may become free, attaching to the
* header list of free blocks (+1); the data block (+1) may
* become a free block (+0) or a block with free dqentries (+0) */
/* each indirect block (+4) may become free, attaching to the
* header list of free blocks (+1); the data block (+1) may
* become a free block (+0) or a block with free dqentries (+0) */
- block_count = (4 + 1) + 1;
- handle = ext3_journal_start(inode,
- block_count*FSFILT_DATA_TRANS_BLOCKS(inode->i_sb)+2);
+ block_count = (4 + 1) + 1;
+ handle = ext3_journal_start(inode,
+ block_count*EXT3_DATA_TRANS_BLOCKS(inode->i_sb)+2);
} else {
/* indirect blocks are touched (+4), each causes file expansion (+0) or
* freeblk reusage with a header update (+1); dqentry is either reused
* causing update of the entry block (+1), prev (+1) and next (+1) or
* a new block allocation (+1) with a header update (+1) */
} else {
/* indirect blocks are touched (+4), each causes file expansion (+0) or
* freeblk reusage with a header update (+1); dqentry is either reused
* causing update of the entry block (+1), prev (+1) and next (+1) or
* a new block allocation (+1) with a header update (+1) */
- block_count = (4 + 1) + 3;
- handle = ext3_journal_start(inode,
- block_count*FSFILT_DATA_TRANS_BLOCKS(inode->i_sb)+2);
+ block_count = (4 + 1) + 3;
+ handle = ext3_journal_start(inode,
+ block_count*EXT3_DATA_TRANS_BLOCKS(inode->i_sb)+2);
/***************** FS registration ******************/
/***************** FS registration ******************/
-#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,18))
-struct super_block * lustre_get_sb(struct file_system_type *fs_type, int flags,
- const char *devname, void * data)
-{
- return get_sb_nodev(fs_type, flags, data, lustre_fill_super);
-}
-#else
int lustre_get_sb(struct file_system_type *fs_type, int flags,
const char *devname, void * data, struct vfsmount *mnt)
{
int lustre_get_sb(struct file_system_type *fs_type, int flags,
const char *devname, void * data, struct vfsmount *mnt)
{
return get_sb_nodev(fs_type, flags, &lmd2, lustre_fill_super, mnt);
}
return get_sb_nodev(fs_type, flags, &lmd2, lustre_fill_super, mnt);
}
void lustre_kill_super(struct super_block *sb)
{
void lustre_kill_super(struct super_block *sb)
{