Received: by 10.223.164.202 with SMTP id h10csp2606131wrb; Mon, 27 Nov 2017 21:06:49 -0800 (PST) X-Google-Smtp-Source: AGs4zMb3f5TqI1gSW2HL5q/G4co0Ifr+dRQuOeQmQ9r1M0F6VeYsUx/uU3ysAHo+fkYjj6lL3uXZ X-Received: by 10.84.129.2 with SMTP id 2mr41119392plb.343.1511845609269; Mon, 27 Nov 2017 21:06:49 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1511845609; cv=none; d=google.com; s=arc-20160816; b=XnunivzobiBGPpx/+FCPdznBqWBxG1H5JrL5ksKxtZIKF3/xHBhOAyxpUkSDccvoUH G4kviws+zyCiOnSIR10uGUa24fVjLty/WfXOn4eBQui9xJXQmP+tPHZJQEvE+K2YX0Kn w5OhkqOuWJDBuJAe+11KDxJ61deaIR1nc6B6/7R4S2/hQ9o8ijF3LjfFpTTT3++JrUQt +dFBpBBbOj9L/1j4Szr/a+LjEDNRvFLHpSehZ2vPX5rRvO5+6GNvTccpYu0JfJiMd0Xx RtB6hH08MSv5/P5piV7RFEtVgAbwNbMLpIVXzpryQxyBPK704G4ubi7W5h/WmIYCykdt Zg+Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-disposition :content-transfer-encoding:mime-version:in-reply-to:references :subject:cc:to:from:date:message-id:arc-authentication-results; bh=3xJVKqcEPDNoyWEonZEG7WYuUrqKxo6r+3N8LezK+N8=; b=fZsVTldj1BxlmcEHH7jgLq15mQrtXTyRjqgDUXlAWZbuiLQoWAKV5bZcdALh+eRHip VJk71weOpF+sz7GlrRpx2OodpzNqj+UH7gowSbJi4uoqYWezZ8Ne27MlIlS3SVyMDJ6q EJEIhwz/ebQszlzWnVW3FxTHnIlvsF1k/dWQnBFHW/1jm7rTeJxa3+K6SKP2TBh+s3ju hkZ5XxgQTLqIe51D1FWbqhsV7LwDCtdopukLjbjO6Hno8bQvUVXMJU3e/gUS0nINZfG0 TNSNhHQCcmHwORGMifj/NwUZzhVyv6H6NFB8Dhwyqdq8O0wTX9rn5V/jRDZeisTwxxZk ULMA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id k4si24065913pgf.300.2017.11.27.21.06.37; Mon, 27 Nov 2017 21:06:49 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751330AbdK1FFX convert rfc822-to-8bit (ORCPT + 77 others); Tue, 28 Nov 2017 00:05:23 -0500 Received: from prv-mh.provo.novell.com ([137.65.248.74]:38722 "EHLO prv-mh.provo.novell.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750753AbdK1FFW (ORCPT ); Tue, 28 Nov 2017 00:05:22 -0500 Received: from INET-PRV-MTA by prv-mh.provo.novell.com with Novell_GroupWise; Mon, 27 Nov 2017 22:05:21 -0700 Message-Id: <5A1D5F08020000F90009ACA2@prv-mh.provo.novell.com> X-Mailer: Novell GroupWise Internet Agent 14.2.2 Date: Mon, 27 Nov 2017 22:05:12 -0700 From: "Gang He" To: , , , "Goldwyn Rodrigues" , Cc: , Subject: Re: [Ocfs2-devel] [PATCH 1/3] ocfs2: add ocfs2_try_rw_lock and ocfs2_try_inode_lock References: <1511775987-841-1-git-send-email-ghe@suse.com> <1511775987-841-2-git-send-email-ghe@suse.com> <5A1CBCBD.10603@huawei.com> In-Reply-To: <5A1CBCBD.10603@huawei.com> Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 8BIT Content-Disposition: inline Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hello Jun, >>> > Hi Gang, > > On 2017/11/27 17:46, Gang He wrote: >> Add ocfs2_try_rw_lock and ocfs2_try_inode_lock functions, which >> will be used in non-block IO scenarios. >> >> Signed-off-by: Gang He >> --- >> fs/ocfs2/dlmglue.c | 22 ++++++++++++++++++++++ >> fs/ocfs2/dlmglue.h | 4 ++++ >> 2 files changed, 26 insertions(+) >> >> diff --git a/fs/ocfs2/dlmglue.c b/fs/ocfs2/dlmglue.c >> index 4689940..5cfbd04 100644 >> --- a/fs/ocfs2/dlmglue.c >> +++ b/fs/ocfs2/dlmglue.c >> @@ -1742,6 +1742,28 @@ int ocfs2_rw_lock(struct inode *inode, int write) >> return status; >> } >> >> +int ocfs2_try_rw_lock(struct inode *inode, int write) >> +{ >> + int status, level; >> + struct ocfs2_lock_res *lockres; >> + struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); >> + >> + mlog(0, "inode %llu try to take %s RW lock\n", >> + (unsigned long long)OCFS2_I(inode)->ip_blkno, >> + write ? "EXMODE" : "PRMODE"); >> + >> + if (ocfs2_mount_local(osb)) >> + return 0; >> + >> + lockres = &OCFS2_I(inode)->ip_rw_lockres; >> + >> + level = write ? DLM_LOCK_EX : DLM_LOCK_PR; >> + >> + status = ocfs2_cluster_lock(OCFS2_SB(inode->i_sb), lockres, level, >> + DLM_LKF_NOQUEUE, 0); > > we'd better use 'osb' instead of 'OCFS2_SB(inode->i_sb)'. Ok, I did this change in next version. > >> + return status; >> +} >> + >> void ocfs2_rw_unlock(struct inode *inode, int write) >> { >> int level = write ? DLM_LOCK_EX : DLM_LOCK_PR; >> diff --git a/fs/ocfs2/dlmglue.h b/fs/ocfs2/dlmglue.h >> index a7fc18b..05910fc 100644 >> --- a/fs/ocfs2/dlmglue.h >> +++ b/fs/ocfs2/dlmglue.h >> @@ -116,6 +116,7 @@ void ocfs2_refcount_lock_res_init(struct ocfs2_lock_res > *lockres, >> int ocfs2_create_new_inode_locks(struct inode *inode); >> int ocfs2_drop_inode_locks(struct inode *inode); >> int ocfs2_rw_lock(struct inode *inode, int write); >> +int ocfs2_try_rw_lock(struct inode *inode, int write); >> void ocfs2_rw_unlock(struct inode *inode, int write); >> int ocfs2_open_lock(struct inode *inode); >> int ocfs2_try_open_lock(struct inode *inode, int write); >> @@ -140,6 +141,9 @@ int ocfs2_inode_lock_with_page(struct inode *inode, >> /* 99% of the time we don't want to supply any additional flags -- >> * those are for very specific cases only. */ >> #define ocfs2_inode_lock(i, b, e) ocfs2_inode_lock_full_nested(i, b, e, 0, > OI_LS_NORMAL) >> +#define ocfs2_try_inode_lock(i, b, e)\ >> + ocfs2_inode_lock_full_nested(i, b, e, OCFS2_META_LOCK_NOQUEUE,\ >> + OI_LS_NORMAL) >> void ocfs2_inode_unlock(struct inode *inode, >> int ex); >> int ocfs2_super_lock(struct ocfs2_super *osb, >> From 1585273029949325911@xxx Tue Nov 28 01:56:13 +0000 2017 X-GM-THRID: 1585212200939154586 X-Gmail-Labels: Inbox,Category Forums,HistoricalUnread