From abedce670d4f396443164bb582c7b58ec78ae7b7 Mon Sep 17 00:00:00 2001 From: Hongchao Zhang Date: Tue, 31 May 2016 00:10:37 +0800 Subject: [PATCH] LU-5564 mdt: skip permission check for close When closing a file normally, skip the permission check for open handle gives us permission. Change-Id: I74271eb83cdd807940cb6ba37ede05fa9f9751ce Signed-off-by: Hongchao Zhang Reviewed-on: http://review.whamcloud.com/15534 Tested-by: Maloo Reviewed-by: John L. Hammond Reviewed-by: James Simmons Reviewed-by: Jinshan Xiong Reviewed-by: Oleg Drokin --- lustre/mdt/mdt_lib.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lustre/mdt/mdt_lib.c b/lustre/mdt/mdt_lib.c index a3b5693..eb08efc 100644 --- a/lustre/mdt/mdt_lib.c +++ b/lustre/mdt/mdt_lib.c @@ -547,11 +547,17 @@ int mdt_init_ucred_reint(struct mdt_thread_info *info) { struct ptlrpc_request *req = mdt_info_req(info); struct lu_ucred *uc = mdt_ucred(info); + struct md_attr *ma = &info->mti_attr; LASSERT(uc != NULL); if ((uc->uc_valid == UCRED_OLD) || (uc->uc_valid == UCRED_NEW)) return 0; + /* LU-5564: for normal close request, skip permission check */ + if (lustre_msg_get_opc(req->rq_reqmsg) == MDS_CLOSE && + !(ma->ma_attr_flags & (MDS_HSM_RELEASE | MDS_CLOSE_LAYOUT_SWAP))) + uc->uc_cap |= CFS_CAP_FS_MASK; + mdt_exit_ucred(info); if (!req->rq_auth_gss || req->rq_auth_usr_mdt || !req->rq_user_desc) -- 1.8.3.1