From: green Date: Wed, 27 Apr 2005 17:35:37 +0000 (+0000) Subject: b=6203,5654 X-Git-Tag: v1_7_100~1^25~8^2~191 X-Git-Url: https://git.whamcloud.com/?a=commitdiff_plain;h=b4792602014e6811d74df1c0294967355cba91e1;p=fs%2Flustre-release.git b=6203,5654 r=adilger Release i_sem and i_alloc_sem prior to getting DLM lock in setattr_raw to avoid lock inversion issues. --- diff --git a/lustre/llite/llite_lib.c b/lustre/llite/llite_lib.c index 5130870..8f0af50 100644 --- a/lustre/llite/llite_lib.c +++ b/lustre/llite/llite_lib.c @@ -1102,8 +1102,17 @@ int ll_setattr_raw(struct inode *inode, struct iattr *attr) if (attr->ia_size == 0) ast_flags = LDLM_AST_DISCARD_DATA; + up(&inode->i_sem); + UP_WRITE_I_ALLOC_SEM(inode); rc = ll_extent_lock(NULL, inode, lsm, LCK_PW, &policy, &lockh, ast_flags); +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)) + DOWN_WRITE_I_ALLOC_SEM(inode); + down(&inode->i_sem); +#else + down(&inode->i_sem); + DOWN_WRITE_I_ALLOC_SEM(inode); +#endif if (rc != 0) RETURN(rc);