From: Omar Sandoval <osandov@osandov.com>
To: linux-btrfs@vger.kernel.org
Cc: kernel-team@fb.com, linux-fsdevel@vger.kernel.org,
Tejun Heo <tj@kernel.org>
Subject: [RFC PATCH v4 0/6] Btrfs: implement swap file support
Date: Thu, 24 May 2018 14:41:24 -0700 [thread overview]
Message-ID: <cover.1527197312.git.osandov@fb.com> (raw)
From: Omar Sandoval <osandov@fb.com>
Hi,
This patch series implements swap file support for Btrfs. If you don't
remember versions 1-3, that's because they were almost 4 years ago [1]
:)
This attempt takes a very different approach from my original versions
back then. As a refresher, the original idea was to go through
->read_iter() and ->write_iter() in O_DIRECT mode. It turns out that
this is really hard to get right, because it effectively makes the
GFP_NOFS flag meaningless, since now swapping out can go through the
filesystem and grab locks and such. We could try to make the read/write
path lockless for a swap file, but this would be too easy to get wrong.
So, instead, this approach was inspired by the iomap swap file support
[2], where we directly tell the swap code where it can find the swap
extents while doing our own sanity checks. This has a bunch of
restrictions, documented in patches 4 and 6. I have a bunch of xfstests
for these cases at https://github.com/osandov/xfstests/tree/btrfs-swap.
This series can also be found at https://github.com/osandov/linux/tree/btrfs-swap.
All comments welcome. Thanks!
1: https://www.spinics.net/lists/linux-btrfs/msg40129.html
2: https://patchwork.kernel.org/patch/10390417/
Omar Sandoval (6):
mm: split SWP_FILE into SWP_ACTIVATED and SWP_FS
vfs: update swap_{,de}activate documentation
Btrfs: push EXCL_OP set into btrfs_rm_device()
Btrfs: prevent ioctls from interfering with a swap file
Btrfs: rename get_chunk_map() and make it non-static
Btrfs: support swap files
Documentation/filesystems/Locking | 17 +--
Documentation/filesystems/vfs.txt | 12 +-
fs/btrfs/ctree.h | 6 +
fs/btrfs/disk-io.c | 3 +
fs/btrfs/inode.c | 220 ++++++++++++++++++++++++++++++
fs/btrfs/ioctl.c | 64 ++++++---
fs/btrfs/volumes.c | 34 +++--
fs/btrfs/volumes.h | 2 +
include/linux/swap.h | 13 +-
mm/page_io.c | 6 +-
mm/swapfile.c | 14 +-
11 files changed, 335 insertions(+), 56 deletions(-)
--
2.17.0
next reply other threads:[~2018-05-24 21:41 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-05-24 21:41 Omar Sandoval [this message]
2018-05-24 21:41 ` [RFC PATCH v4 1/6] mm: split SWP_FILE into SWP_ACTIVATED and SWP_FS Omar Sandoval
2018-05-25 9:11 ` Nikolay Borisov
2018-05-24 21:41 ` [RFC PATCH v4 2/6] vfs: update swap_{,de}activate documentation Omar Sandoval
2018-05-25 9:15 ` Nikolay Borisov
2018-05-24 21:41 ` [RFC PATCH v4 3/6] Btrfs: push EXCL_OP set into btrfs_rm_device() Omar Sandoval
2018-05-25 9:19 ` Nikolay Borisov
2018-05-28 13:29 ` David Sterba
2018-05-24 21:41 ` [RFC PATCH v4 4/6] Btrfs: prevent ioctls from interfering with a swap file Omar Sandoval
2018-05-25 14:50 ` David Sterba
2018-05-25 16:00 ` Omar Sandoval
2018-05-25 16:10 ` David Sterba
2018-08-21 8:46 ` Omar Sandoval
2018-05-24 21:41 ` [RFC PATCH v4 5/6] Btrfs: rename get_chunk_map() and make it non-static Omar Sandoval
2018-05-25 9:21 ` Nikolay Borisov
2018-05-25 16:02 ` Omar Sandoval
2018-05-24 21:41 ` [RFC PATCH v4 6/6] Btrfs: support swap files Omar Sandoval
2018-05-25 10:07 ` Nikolay Borisov
2018-05-25 16:16 ` Omar Sandoval
2018-05-28 13:46 ` David Sterba
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=cover.1527197312.git.osandov@fb.com \
--to=osandov@osandov.com \
--cc=kernel-team@fb.com \
--cc=linux-btrfs@vger.kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=tj@kernel.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.