Received: by 10.223.164.202 with SMTP id h10csp2461246wrb; Mon, 27 Nov 2017 17:56:13 -0800 (PST) X-Google-Smtp-Source: AGs4zMYSLDjiqCmeuuXdBH9AS3chLpK9MDB/UTwV37F9Z+FOEZIAD4oxovT2BzdQofmeYHCI009T X-Received: by 10.98.31.7 with SMTP id f7mr3288303pff.235.1511834173356; Mon, 27 Nov 2017 17:56:13 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1511834173; cv=none; d=google.com; s=arc-20160816; b=Ttmx6Ro7NlWHMQvGdREz9v6wPGAJjmraKO3zHnFnM1EQdrlMEcBoaTo+zvllrrZVzm IBbK/jQaRv+cRN2359F+StKtURJwkT/R8oEja9qJsZS3Ljka8+F0XIf2YCbiRIN1SPXd xJ0MoX0hAMeBfSY/G7InEI0nZJVtv/bOsVtuZ73379xei9WPzP0sMN5emzdSqvgjdN6O Cam4yaFiq3GGEPX/4gEtUlUMQvYkT8eUujnDpXttyzdcJ8XoElgEpuTiNls07c6ja1wf zgZRiIb3RSavOJqHfet1oPA/fALaWL7KfVDnXaPJsPiDCoEoc4MjNwidnb7e04Ea73G7 BKzA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:content-transfer-encoding :content-language:accept-language:references:message-id:date :thread-index:thread-topic:subject:cc:to:from :arc-authentication-results; bh=7kjhNVA6zc1txkf9S2tycRxSo8OW3p41KG5kgteNcDE=; b=HlWccMJn4PPbojh90p/Lz+ThmiqwBsjsr2iFcP0X47HLDJvGDzGu3TBQUWDA/vAXfg H4DpQwkyd67Li8Ob0Bh0A5JUdM5hPnQVpvvvqeTYEtJA0NPQBVjGvyqidj914sSE37uE CXVq7V9wDqZfDUvT0zLp3sPC5COjnovNt+cnFVvaVHoz+Vtj9p5hFyoTI/iuzTnVp0sV y6CwVGDD/hY89+gy/C1H/mqeu+fZBCm1Z1Ztf64a6kaL416n1biHPkEUW22s2CsUsFWW j/Hh+gDuPnjCWT2U7hUaLgcLHJlfdld72COJ6SQe3XRY/9k3c6KslU6VuaqayWqsYq1j El0g== 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 c20si25622451pfl.359.2017.11.27.17.56.00; Mon, 27 Nov 2017 17:56:13 -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 S1753336AbdK1BzW convert rfc822-to-8bit (ORCPT + 78 others); Mon, 27 Nov 2017 20:55:22 -0500 Received: from smtp.h3c.com ([60.191.123.56]:56359 "EHLO h3cmg01-ex.h3c.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752712AbdK1BzV (ORCPT ); Mon, 27 Nov 2017 20:55:21 -0500 Received: from BJHUB01-EX.srv.huawei-3com.com (unknown [10.63.20.169]) by h3cmg01-ex.h3c.com with smtp id 0af5_1183_e5ee7f93_c095_4889_b7ab_93cb960609a3; Tue, 28 Nov 2017 09:52:27 +0800 Received: from H3CMLB12-EX.srv.huawei-3com.com ([fe80::10fe:abde:731b:fdde]) by BJHUB01-EX.srv.huawei-3com.com ([::1]) with mapi id 14.03.0248.002; Tue, 28 Nov 2017 09:52:14 +0800 From: Changwei Ge To: Gang He , "mfasheh@versity.com" , "jlbec@evilplan.org" , "rgoldwyn@suse.com" , "hch@lst.de" CC: "linux-kernel@vger.kernel.org" , "ocfs2-devel@oss.oracle.com" Subject: Re: [Ocfs2-devel] [PATCH 1/3] ocfs2: add ocfs2_try_rw_lock and ocfs2_try_inode_lock Thread-Topic: [Ocfs2-devel] [PATCH 1/3] ocfs2: add ocfs2_try_rw_lock and ocfs2_try_inode_lock Thread-Index: AQHTZ+uCsPZK+5ewQk2hylcQEVzxFw== Date: Tue, 28 Nov 2017 01:52:13 +0000 Message-ID: <63ADC13FD55D6546B7DECE290D39E373F146F95E@H3CMLB12-EX.srv.huawei-3com.com> References: <1511775987-841-1-git-send-email-ghe@suse.com> <1511775987-841-2-git-send-email-ghe@suse.com> Accept-Language: en-US, zh-CN Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.125.136.231] Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 8BIT MIME-Version: 1.0 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Gang, On 2017/11/27 17:48, 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); > + return status; > +} The newly added function ocfs2_try_rw_lock almost has the same logic with ocfs2_rw_lock.Is it possible to combine them into an unique one? That will be more elegant. Moreover, can you elaborate further why we need a *NOQUEUE* lock for supporting non-block aio? Why can't we wait for a while to grant a lock request? Is this necessary? Thanks, Changwei > + > 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 1585271621394253709@xxx Tue Nov 28 01:33:49 +0000 2017 X-GM-THRID: 1585212200939154586 X-Gmail-Labels: Inbox,Category Forums,HistoricalUnread