#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)
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);
/* 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 */
- 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;
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();
}
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
#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
return EXT_CONTINUE;
}
- 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);
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);
return err;
}
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);
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;
#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);
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
-#endif
return 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) */
- 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);
}