Message ID | bb1208575e02829aae51b538709476964f97b1ea.1536704650.git.osandov@fb.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Btrfs: implement swap file support | expand |
On Tue, Sep 11, 2018 at 03:34:45PM -0700, Omar Sandoval wrote: > From: Omar Sandoval <osandov@fb.com> > > Btrfs will need this for swap file support. > > Signed-off-by: Omar Sandoval <osandov@fb.com> That looks reasonable. After reading the last patch, it's somewhat understandable why you cannot simply implemnet ->bmap and use the generic activation code. But it would be good to explain the reason(s) for why you can't here briefly to justify this patch.
On Wed, Sep 19, 2018 at 02:09:09PM -0400, Johannes Weiner wrote: > On Tue, Sep 11, 2018 at 03:34:45PM -0700, Omar Sandoval wrote: > > From: Omar Sandoval <osandov@fb.com> > > > > Btrfs will need this for swap file support. > > > > Signed-off-by: Omar Sandoval <osandov@fb.com> > > That looks reasonable. After reading the last patch, it's somewhat > understandable why you cannot simply implemnet ->bmap and use the > generic activation code. But it would be good to explain the reason(s) > for why you can't here briefly to justify this patch. I'll rewrite it to: Btrfs currently does not support swap files because swap's use of bmap does not work with copy-on-write and multiple devices. See 35054394c4b3 ("Btrfs: stop providing a bmap operation to avoid swapfile corruptions"). However, the swap code has a mechanism for the filesystem to manually add swap extents using add_swap_extent() from the ->swap_activate() aop. iomap has done this since 67482129cdab ("iomap: add a swapfile activation function"). Btrfs will do the same in a later patch, so export add_swap_extent().
On Wed, Sep 19, 2018 at 11:28:00AM -0700, Omar Sandoval wrote: > On Wed, Sep 19, 2018 at 02:09:09PM -0400, Johannes Weiner wrote: > > On Tue, Sep 11, 2018 at 03:34:45PM -0700, Omar Sandoval wrote: > > > From: Omar Sandoval <osandov@fb.com> > > > > > > Btrfs will need this for swap file support. > > > > > > Signed-off-by: Omar Sandoval <osandov@fb.com> > > > > That looks reasonable. After reading the last patch, it's somewhat > > understandable why you cannot simply implemnet ->bmap and use the > > generic activation code. But it would be good to explain the reason(s) > > for why you can't here briefly to justify this patch. > > I'll rewrite it to: > > Btrfs currently does not support swap files because swap's use of bmap > does not work with copy-on-write and multiple devices. See 35054394c4b3 > ("Btrfs: stop providing a bmap operation to avoid swapfile > corruptions"). However, the swap code has a mechanism for the filesystem > to manually add swap extents using add_swap_extent() from the > ->swap_activate() aop. iomap has done this since 67482129cdab ("iomap: > add a swapfile activation function"). Btrfs will do the same in a later > patch, so export add_swap_extent(). That explains it perfectly. Thanks!
On Tue, 11 Sep 2018 15:34:45 -0700 Omar Sandoval <osandov@osandov.com> wrote: > From: Omar Sandoval <osandov@fb.com> > > Btrfs will need this for swap file support. > Acked-by: Andrew Morton <akpm@linux-foundation.org>
diff --git a/mm/swapfile.c b/mm/swapfile.c index d3f95833d12e..51cb30de17bc 100644 --- a/mm/swapfile.c +++ b/mm/swapfile.c @@ -2365,6 +2365,7 @@ add_swap_extent(struct swap_info_struct *sis, unsigned long start_page, list_add_tail(&new_se->list, &sis->first_swap_extent.list); return 1; } +EXPORT_SYMBOL_GPL(add_swap_extent); /* * A `swap extent' is a simple thing which maps a contiguous range of pages