From patchwork Thu Feb 27 21:15:15 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Simmons X-Patchwork-Id: 11410433 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 586DA92A for ; Thu, 27 Feb 2020 21:38:19 +0000 (UTC) Received: from pdx1-mailman02.dreamhost.com (pdx1-mailman02.dreamhost.com [64.90.62.194]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 40F8624690 for ; Thu, 27 Feb 2020 21:38:19 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 40F8624690 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=infradead.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=lustre-devel-bounces@lists.lustre.org Received: from pdx1-mailman02.dreamhost.com (localhost [IPv6:::1]) by pdx1-mailman02.dreamhost.com (Postfix) with ESMTP id 7F9523497C9; Thu, 27 Feb 2020 13:31:23 -0800 (PST) X-Original-To: lustre-devel@lists.lustre.org Delivered-To: lustre-devel-lustre.org@pdx1-mailman02.dreamhost.com Received: from smtp3.ccs.ornl.gov (smtp3.ccs.ornl.gov [160.91.203.39]) by pdx1-mailman02.dreamhost.com (Postfix) with ESMTP id A34FC21FEDE for ; Thu, 27 Feb 2020 13:20:37 -0800 (PST) Received: from star.ccs.ornl.gov (star.ccs.ornl.gov [160.91.202.134]) by smtp3.ccs.ornl.gov (Postfix) with ESMTP id 87E9E8F37; Thu, 27 Feb 2020 16:18:18 -0500 (EST) Received: by star.ccs.ornl.gov (Postfix, from userid 2004) id 867C346A; Thu, 27 Feb 2020 16:18:18 -0500 (EST) From: James Simmons To: Andreas Dilger , Oleg Drokin , NeilBrown Date: Thu, 27 Feb 2020 16:15:15 -0500 Message-Id: <1582838290-17243-448-git-send-email-jsimmons@infradead.org> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1582838290-17243-1-git-send-email-jsimmons@infradead.org> References: <1582838290-17243-1-git-send-email-jsimmons@infradead.org> Subject: [lustre-devel] [PATCH 447/622] lustre: lmv: disable remote file statahead X-BeenThere: lustre-devel@lists.lustre.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "For discussing Lustre software development." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Lai Siyao , Lustre Development List MIME-Version: 1.0 Errors-To: lustre-devel-bounces@lists.lustre.org Sender: "lustre-devel" From: Lai Siyao Remote file statahead is not supported, because such file needs two RPCs to fetch both LOOKUP and GETATTR lock, on LOOKUP success we only know file FID, thus can't prepare an inode correctly. Disable this to avoid noise messages and confusion. Update sanity.sh test_60g. WC-bug-id: https://jira.whamcloud.com/browse/LU-11681 Lustre-commit: 02b5a407081c ("LU-11681 lmv: disable remote file statahead") Signed-off-by: Lai Siyao Reviewed-on: https://review.whamcloud.com/33930 Reviewed-by: Andreas Dilger Reviewed-by: Bobi Jam Reviewed-by: Oleg Drokin Signed-off-by: James Simmons --- fs/lustre/lmv/lmv_obd.c | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/fs/lustre/lmv/lmv_obd.c b/fs/lustre/lmv/lmv_obd.c index d323250..26021bb 100644 --- a/fs/lustre/lmv/lmv_obd.c +++ b/fs/lustre/lmv/lmv_obd.c @@ -3416,25 +3416,28 @@ static int lmv_intent_getattr_async(struct obd_export *exp, struct md_op_data *op_data = &minfo->mi_data; struct obd_device *obd = exp->exp_obd; struct lmv_obd *lmv = &obd->u.lmv; - struct lmv_tgt_desc *tgt = NULL; + struct lmv_tgt_desc *ptgt = NULL; + struct lmv_tgt_desc *ctgt; if (!fid_is_sane(&op_data->op_fid2)) return -EINVAL; - tgt = lmv_find_target(lmv, &op_data->op_fid1); - if (IS_ERR(tgt)) - return PTR_ERR(tgt); + ptgt = lmv_locate_tgt(lmv, op_data); + if (IS_ERR(ptgt)) + return PTR_ERR(ptgt); + + ctgt = lmv_find_target(lmv, &op_data->op_fid2); + if (IS_ERR(ctgt)) + return PTR_ERR(ctgt); /* - * no special handle for remote dir, which needs to fetch both LOOKUP - * lock on parent, and then UPDATE lock on child MDT, which makes all - * complicated because this is done async. So only LOOKUP lock is - * fetched for remote dir, but considering remote dir is rare case, - * and not supporting it in statahead won't cause any issue, just leave - * it as is. + * remote object needs two RPCs to lookup and getattr, considering the + * complexity don't support statahead for now. */ + if (ctgt != ptgt) + return -EREMOTE; - return md_intent_getattr_async(tgt->ltd_exp, minfo); + return md_intent_getattr_async(ptgt->ltd_exp, minfo); } static int lmv_revalidate_lock(struct obd_export *exp, struct lookup_intent *it,