From af31477c8f807cc7cc8d1575054d35e8ff7ede1c Mon Sep 17 00:00:00 2001 From: yangsheng Date: Fri, 27 Aug 2010 22:44:57 +0200 Subject: [PATCH] b=23371 Define fsfilt_{up,down}_truncate_sem() does nothing when WALK_SPACE_HAS_DATA_SEM defined i=adilger i=andrew --- lustre/lvfs/fsfilt_ext3.c | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/lustre/lvfs/fsfilt_ext3.c b/lustre/lvfs/fsfilt_ext3.c index 1385835..3d23492 100644 --- a/lustre/lvfs/fsfilt_ext3.c +++ b/lustre/lvfs/fsfilt_ext3.c @@ -853,16 +853,23 @@ static int fsfilt_ext3_sync(struct super_block *sb) #endif #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,17)) -#define fsfilt_up_truncate_sem(inode) up(&EXT3_I(inode)->truncate_sem); -#define fsfilt_down_truncate_sem(inode) down(&EXT3_I(inode)->truncate_sem); +# 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 -#ifdef HAVE_EXT4_LDISKFS -#define fsfilt_up_truncate_sem(inode) up_write((&EXT4_I(inode)->i_data_sem)); -#define fsfilt_down_truncate_sem(inode) down_write((&EXT4_I(inode)->i_data_sem)); -#else -#define fsfilt_up_truncate_sem(inode) mutex_unlock(&EXT3_I(inode)->truncate_mutex); -#define fsfilt_down_truncate_sem(inode) mutex_lock(&EXT3_I(inode)->truncate_mutex); -#endif +# ifdef HAVE_EXT4_LDISKFS +# ifdef WALK_SPACE_HAS_DATA_SEM + /* Only used in fsfilt_map_nblocks() for now. + * Please consider redefine it if using elsewhere. */ +# define fsfilt_up_truncate_sem(inode) do{ }while(0) +# define fsfilt_down_truncate_sem(inode) do{ }while(0) +# else +# define fsfilt_up_truncate_sem(inode) up_write((&LDISKFS_I(inode)->i_data_sem)); +# define fsfilt_down_truncate_sem(inode) down_write((&LDISKFS_I(inode)->i_data_sem)); +# endif +# else +# define fsfilt_up_truncate_sem(inode) mutex_unlock(&LDISKFS_I(inode)->truncate_mutex); +# define fsfilt_down_truncate_sem(inode) mutex_lock(&LDISKFS_I(inode)->truncate_mutex); +# endif #endif #ifndef EXT_ASSERT @@ -1159,14 +1166,10 @@ int fsfilt_map_nblocks(struct inode *inode, unsigned long block, bp.init_num = bp.num = num; bp.create = create; -#if !defined(WALK_SPACE_HAS_DATA_SEM) || !defined(HAVE_EXT4_LDISKFS) fsfilt_down_truncate_sem(inode); -#endif err = fsfilt_ext3_ext_walk_space(base, block, num, ext3_ext_new_extent_cb, &bp); ext3_ext_invalidate_cache(base); -#if !defined(WALK_SPACE_HAS_DATA_SEM) || !defined(HAVE_EXT4_LDISKFS) fsfilt_up_truncate_sem(inode); -#endif return err; } -- 1.8.3.1