From: "Gang He" <ghe@suse.com> To: <jlbec@evilplan.org>, <piaojun@huawei.com>, <hch@lst.de>, "Goldwyn Rodrigues" <RGoldwyn@suse.com>, <mfasheh@versity.com> Cc: <ocfs2-devel@oss.oracle.com>, <linux-kernel@vger.kernel.org> Subject: Re: [Ocfs2-devel] [PATCH 1/3] ocfs2: add ocfs2_try_rw_lock and ocfs2_try_inode_lock Date: Mon, 27 Nov 2017 22:05:12 -0700 [thread overview] Message-ID: <5A1D5F08020000F90009ACA2@prv-mh.provo.novell.com> (raw) In-Reply-To: <5A1CBCBD.10603@huawei.com> 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 <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)'. 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, >>
WARNING: multiple messages have this Message-ID (diff)
From: Gang He <ghe@suse.com> To: jlbec@evilplan.org, piaojun@huawei.com, hch@lst.de, Goldwyn Rodrigues <RGoldwyn@suse.com>, mfasheh@versity.com Cc: ocfs2-devel@oss.oracle.com, linux-kernel@vger.kernel.org Subject: [Ocfs2-devel] [PATCH 1/3] ocfs2: add ocfs2_try_rw_lock and ocfs2_try_inode_lock Date: Mon, 27 Nov 2017 22:05:12 -0700 [thread overview] Message-ID: <5A1D5F08020000F90009ACA2@prv-mh.provo.novell.com> (raw) In-Reply-To: <5A1CBCBD.10603@huawei.com> 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 <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)'. 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, >>
next prev parent reply other threads:[~2017-11-28 5:05 UTC|newest] Thread overview: 62+ 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 ` [Ocfs2-devel] " 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-27 9:46 ` [Ocfs2-devel] " Gang He 2017-11-28 1:32 ` piaojun 2017-11-28 1:32 ` piaojun 2017-11-28 5:05 ` Gang He [this message] 2017-11-28 5:05 ` Gang He 2017-11-28 1:52 ` Changwei Ge 2017-11-28 1:52 ` Changwei Ge 2017-11-28 5:26 ` Gang He 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-27 9:46 ` [Ocfs2-devel] " Gang He 2017-11-28 1:13 ` Joseph Qi 2017-11-28 1:13 ` Joseph Qi 2017-11-28 3:35 ` Gang He 2017-11-28 3:35 ` Gang He 2017-11-28 6:51 ` Joseph Qi 2017-11-28 6:51 ` Joseph Qi 2017-11-28 7:24 ` Gang He 2017-11-28 7:24 ` Gang He 2017-11-28 8:40 ` Joseph Qi 2017-11-28 8:40 ` Joseph Qi 2017-11-28 8:54 ` Gang He 2017-11-28 8:54 ` Gang He 2017-11-28 9:03 ` Joseph Qi 2017-11-28 9:03 ` Joseph Qi 2017-11-28 1:50 ` piaojun 2017-11-28 1:50 ` piaojun 2017-11-28 2:10 ` Changwei Ge 2017-11-28 2:10 ` Changwei Ge 2017-11-28 5:27 ` Gang He 2017-11-28 5:27 ` Gang He 2017-11-28 5:07 ` Gang He 2017-11-28 5:07 ` Gang He 2017-11-28 2:19 ` alex chen 2017-11-28 2:19 ` alex chen 2017-11-28 5:33 ` Gang He 2017-11-28 5:33 ` Gang He 2017-11-28 6:19 ` alex chen 2017-11-28 6:19 ` alex chen 2017-11-28 7:38 ` Gang He 2017-11-28 7:38 ` Gang He 2017-11-28 8:11 ` alex chen 2017-11-28 8:11 ` alex chen 2017-11-28 8:32 ` Gang He 2017-11-28 8:32 ` Gang He 2017-11-28 13:22 ` alex chen 2017-11-28 13:22 ` alex chen 2017-11-28 2:48 ` Changwei Ge 2017-11-28 2:48 ` Changwei Ge 2017-11-28 5:40 ` Gang He 2017-11-28 5:40 ` Gang He 2017-11-28 5:48 ` Changwei Ge 2017-11-28 5:48 ` Changwei Ge 2017-11-27 9:46 ` [PATCH 3/3] ocfs2: nowait aio support Gang He 2017-11-27 9:46 ` [Ocfs2-devel] " Gang He 2017-11-28 2:51 ` alex chen 2017-11-28 2:51 ` alex chen 2017-11-28 5:59 ` Gang He 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=5A1D5F08020000F90009ACA2@prv-mh.provo.novell.com \ --to=ghe@suse.com \ --cc=RGoldwyn@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=piaojun@huawei.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: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.