All of lore.kernel.org
 help / color / mirror / Atom feed
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,
>> 

  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: link
Be 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.