From: David Sterba <dsterba@suse.cz> To: Omar Sandoval <osandov@osandov.com> Cc: linux-btrfs@vger.kernel.org, kernel-team@fb.com, linux-fsdevel@vger.kernel.org, Tejun Heo <tj@kernel.org> Subject: Re: [RFC PATCH v4 4/6] Btrfs: prevent ioctls from interfering with a swap file Date: Fri, 25 May 2018 16:50:55 +0200 [thread overview] Message-ID: <20180525145055.GN6649@twin.jikos.cz> (raw) In-Reply-To: <296f04a07350c9cc2032e03f78c1a7284747fb50.1527197312.git.osandov@fb.com> On Thu, May 24, 2018 at 02:41:28PM -0700, Omar Sandoval wrote: > From: Omar Sandoval <osandov@fb.com> > > When a swap file is active, we must make sure that the extents of the > file are not moved and that they don't become shared. That means that > the following are not safe: > > - chattr +c (enable compression) > - reflink > - dedupe > - snapshot > - defrag > - balance > - device remove/replace/resize > > Don't allow those to happen on an active swap file. Balance and device > remove/replace/resize in particular are disallowed entirely; in the > future, we can relax this so that relocation skips/errors out only on > chunks containing an active swap file. Hm, disabling the entire balance is too intrusive. It's clear that the swapfile causes a lot of trouble when it goes against the dynamic capabilities of btrfs (relocation and the functionality that builds on it). Skipping the swapfile extents should be implemented at minimum. We can add some heuristics that will group the swap extents to a small number of chunks so the impact of unmovable chunks is limited. I haven't looked at the implementation, but it might be possible to internally find a different location for the swap extent once it's not used for the actual paged data. In an ideal case, the swap extents could span entire chunks (1G) and not mix with regular data/metadata. > Note that we don't have to worry about chattr -C (disable nocow), which > we ignore for non-empty files, because an active swapfile must be > non-empty and can't be truncated. We also don't have to worry about > autodefrag because it's only done on COW files. Truncate and fallocate > are already taken care of by the generic code. Device add doesn't do > relocation so it's not an issue, either. Ok, fine the remaining easy cases are covered. I don't know if you mentioned that elsewhere (as design questions are in this patch), the allocation profile is single, or is it also possible to have striped or duplicated swap extents?
next prev parent reply other threads:[~2018-05-25 14:53 UTC|newest] Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top 2018-05-24 21:41 [RFC PATCH v4 0/6] Btrfs: implement swap file support Omar Sandoval 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 [this message] 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=20180525145055.GN6649@twin.jikos.cz \ --to=dsterba@suse.cz \ --cc=kernel-team@fb.com \ --cc=linux-btrfs@vger.kernel.org \ --cc=linux-fsdevel@vger.kernel.org \ --cc=osandov@osandov.com \ --cc=tj@kernel.org \ --subject='Re: [RFC PATCH v4 4/6] Btrfs: prevent ioctls from interfering with a swap file' \ /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
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).