[PATCH 0/2] Refactor snapshot vs nocow writers locking

From: Nikolay Borisov
Date: Thu Jun 06 2019 - 09:56:30 EST


This patchset first factors out the open code which essentially implements a
lock that allows to have either multiple reader or multiple writers but not
both. Then patch 2 just converts the code to using the newly introduced lock.

The individual patch descriptions contain more information about the technical
details and invariants that the lock provide.

I have also CC'ed a copule of the maintainer of linux memory model since my
patches just factor out the code and I would really like someone proficient
enough in the usage/semantics of memory barries to review it as well.

Nikolay Borisov (2):
btrfs: Implement DRW lock
btrfs: convert snapshot/nocow exlcusion to drw lock

fs/btrfs/Makefile | 2 +-
fs/btrfs/ctree.h | 10 ++----
fs/btrfs/disk-io.c | 39 ++---------------------
fs/btrfs/drw_lock.c | 71 ++++++++++++++++++++++++++++++++++++++++++
fs/btrfs/drw_lock.h | 23 ++++++++++++++
fs/btrfs/extent-tree.c | 35 ---------------------
fs/btrfs/file.c | 12 +++----
fs/btrfs/inode.c | 8 ++---
fs/btrfs/ioctl.c | 10 ++----
9 files changed, 114 insertions(+), 96 deletions(-)
create mode 100644 fs/btrfs/drw_lock.c
create mode 100644 fs/btrfs/drw_lock.h

--
2.17.1