From cf9e92a0adb490109f67d05da5833cfb270d92e8 Mon Sep 17 00:00:00 2001 From: yangsheng Date: Mon, 13 Sep 2010 11:48:22 +0400 Subject: [PATCH] b=23371 Further patch for i_data_sem deadlock. --- lustre/lvfs/fsfilt_ext3.c | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/lustre/lvfs/fsfilt_ext3.c b/lustre/lvfs/fsfilt_ext3.c index a93b88b..abdb74e 100644 --- a/lustre/lvfs/fsfilt_ext3.c +++ b/lustre/lvfs/fsfilt_ext3.c @@ -829,16 +829,21 @@ 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 /* We only use it in fsfilt_map_nblocks() for now */ +# 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((&EXT4_I(inode)->i_data_sem)) +# define fsfilt_down_truncate_sem(inode) down_write((&EXT4_I(inode)->i_data_sem)) +# endif +# 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 #endif #ifndef EXT_ASSERT -- 1.8.3.1