From: Andrea Parri <andrea.parri@amarulasolutions.com>
To: Nikolay Borisov <nborisov@suse.com>
Cc: linux-btrfs@vger.kernel.org, linux-kernel@vger.kernel.org,
peterz@infradead.org, paulmck@linux.ibm.com
Subject: Re: [PATCH 1/2] btrfs: Implement DRW lock
Date: Sat, 8 Jun 2019 18:33:26 +0200 [thread overview]
Message-ID: <20190608163326.GA6573@andrea> (raw)
In-Reply-To: <20190606135219.1086-2-nborisov@suse.com>
On Thu, Jun 06, 2019 at 04:52:18PM +0300, Nikolay Borisov wrote:
> A (D)ouble (R)eader (W)riter lock is a locking primitive that allows
> to have multiple readers or multiple writers but not multiple readers
> and writers holding it concurrently. The code is factored out from
> the existing open-coded locking scheme used to exclude pending
> snapshots from nocow writers and vice-versa. Current implementation
> actually favors Readers (that is snapshot creaters) to writers (nocow
> writers of the filesystem).
>
> Signed-off-by: Nikolay Borisov <nborisov@suse.com>
Interesting! Thank you for sending this over, Nikolay.
I only have a couple of nits (below) to add:
[...]
> +
> +void btrfs_drw_read_unlock(struct btrfs_drw_lock *lock)
> +{
> + /*
> + * Atomic RMW operations imply full barrier, so woken up writers
> + * are guaranteed to see the decrement
> + */
Not every atomic RMW operations imply a full barrier (as exemplified,
e.g., by the atomic_inc() in btrfs_drw_read_lock()); maybe simply
s/Atomic RMW operations imply/atomic_dec_and_test() implies/
FYI, checkpatch.pl issues a few warnings on this patch (you may want
to address some of them in the next version).
Thanks,
Andrea
> + if (atomic_dec_and_test(&lock->readers))
> + wake_up(&lock->pending_writers);
> +}
> +
> +
next prev parent reply other threads:[~2019-06-08 16:33 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-06-06 13:52 [PATCH 0/2] Refactor snapshot vs nocow writers locking Nikolay Borisov
2019-06-06 13:52 ` [PATCH 1/2] btrfs: Implement DRW lock Nikolay Borisov
2019-06-06 15:15 ` Filipe Manana
2019-06-07 10:52 ` Paul E. McKenney
2019-06-07 11:59 ` Nikolay Borisov
2019-06-08 15:13 ` Paul E. McKenney
2019-06-08 15:44 ` Nikolay Borisov
2019-06-08 16:06 ` Paul E. McKenney
2019-06-08 16:21 ` Nikolay Borisov
2019-06-08 16:39 ` Paul E. McKenney
2019-06-08 16:33 ` Andrea Parri [this message]
2019-06-12 14:05 ` David Sterba
2019-06-06 13:52 ` [PATCH 2/2] btrfs: convert snapshot/nocow exlcusion to drw lock Nikolay Borisov
2019-06-06 15:21 ` Filipe Manana
-- strict thread matches above, loose matches on Subject: below --
2020-01-30 12:59 [PATCH 0/2] Refactor snapshot vs nocow writers locking Nikolay Borisov
2020-01-30 12:59 ` [PATCH 1/2] btrfs: Implement DRW lock Nikolay Borisov
2020-01-30 13:41 ` Christoph Hellwig
2020-01-30 13:42 ` Nikolay Borisov
2020-01-30 13:43 ` Christoph Hellwig
2020-02-24 15:26 [PATCH v3 0/2] Refactor snapshot vs nocow writers locking Nikolay Borisov
2020-02-24 15:32 ` [PATCH 1/2] btrfs: Implement DRW lock Nikolay Borisov
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=20190608163326.GA6573@andrea \
--to=andrea.parri@amarulasolutions.com \
--cc=linux-btrfs@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=nborisov@suse.com \
--cc=paulmck@linux.ibm.com \
--cc=peterz@infradead.org \
/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.