From: piaojun <piaojun@huawei.com>
To: Gang He <ghe@suse.com>, <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
Date: Tue, 28 Nov 2017 09:32:45 +0800 [thread overview]
Message-ID: <5A1CBCBD.10603@huawei.com> (raw)
In-Reply-To: <1511775987-841-2-git-send-email-ghe@suse.com>
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 <ghe@suse.com>
> ---
> 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)'.
> + 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,
>
next prev parent reply other threads:[~2017-11-28 1:32 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-11-27 9:46 [PATCH 0/3] ocfs2: add nowait aio support Gang He
2017-11-27 9:46 ` [PATCH 1/3] ocfs2: add ocfs2_try_rw_lock and ocfs2_try_inode_lock Gang He
2017-11-28 1:32 ` piaojun [this message]
2017-11-28 5:05 ` [Ocfs2-devel] " Gang He
2017-11-28 1:52 ` Changwei Ge
2017-11-28 5:26 ` Gang He
2017-11-27 9:46 ` [PATCH 2/3] ocfs2: add ocfs2_overwrite_io function Gang He
2017-11-28 1:13 ` [Ocfs2-devel] " Joseph Qi
2017-11-28 3:35 ` Gang He
2017-11-28 6:51 ` Joseph Qi
2017-11-28 7:24 ` Gang He
2017-11-28 8:40 ` Joseph Qi
2017-11-28 8:54 ` Gang He
2017-11-28 9:03 ` Joseph Qi
2017-11-28 1:50 ` piaojun
2017-11-28 2:10 ` Changwei Ge
2017-11-28 5:27 ` Gang He
2017-11-28 5:07 ` Gang He
2017-11-28 2:19 ` alex chen
2017-11-28 5:33 ` Gang He
2017-11-28 6:19 ` alex chen
2017-11-28 7:38 ` Gang He
2017-11-28 8:11 ` alex chen
2017-11-28 8:32 ` Gang He
2017-11-28 13:22 ` alex chen
2017-11-28 2:48 ` Changwei Ge
2017-11-28 5:40 ` Gang He
2017-11-28 5:48 ` Changwei Ge
2017-11-27 9:46 ` [PATCH 3/3] ocfs2: nowait aio support Gang He
2017-11-28 2:51 ` [Ocfs2-devel] " alex chen
2017-11-28 5:59 ` Gang He
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=5A1CBCBD.10603@huawei.com \
--to=piaojun@huawei.com \
--cc=ghe@suse.com \
--cc=hch@lst.de \
--cc=jlbec@evilplan.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mfasheh@versity.com \
--cc=ocfs2-devel@oss.oracle.com \
--cc=rgoldwyn@suse.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox