From: Ilya Dryomov <idryomov@gmail.com>
To: linux-btrfs@vger.kernel.org
Cc: Chris Mason <chris.mason@oracle.com>,
Hugo Mills <hugo@carfax.org.uk>,
idryomov@gmail.com
Subject: [PATCH 00/21] [RFC] Btrfs: restriper
Date: Tue, 23 Aug 2011 23:01:41 +0300 [thread overview]
Message-ID: <1314129722-31601-1-git-send-email-idryomov@gmail.com> (raw)
Hello,
This patch series adds an initial implementation of restriper (it's a
clever name for relocation framework that allows to do selective profile
changing and selective balancing with some goodies like pausing/resuming
and reporting progress to the user.
Profile changing is global (per-FS) so far, per-subvolume profiles
require some discussion and can be implemented in future. This is a RFC
so some features/problems are not yet implemented/resolved. The current
TODO list is as follows:
1) do pause/cancel via trans commit instead of waiting for the current
chunk to be fully relocated
2) fix problems with left-over chunks (the ones we were being relocating
to when the crash occured, this is going to become a bigger problem when
item 1 is done
3) fix remount problems (get rid of deadlocks that occur on remount
while relocating, stop restriper on remounts)
4) issue a discard on removed chunks - 1 GiB+ discards can be a big deal
There is also a couple of problems related to profile changing and
resuming that I'm working on right now. But the basic infrastructure is
all there and is ready for reviewing.
This patchset deprecates Hugo's "Balance management" patch series.
Originally this was supposed to be just a profile changing thing merged
with those patches, but the merge turned out to be a complete rewrite.
The filters part was rewritten to be per-chunk-type and the management
part was thrown away because we now store an item to disk, there is the
difference between pausing and cancelling, locking is different, etc.
I'm happy to integrate any ideas that got dropped as a result of this.
Thanks to Arne who did an early review and Chris for overall guidance.
Any comments/suggestions are appreciated. The series is on top of
3.1-rc3, available at:
git://github.com/idryomov/btrfs-unstable.git restriper-rfc
Thanks,
Ilya
Ilya Dryomov (21):
Btrfs: get rid of *_alloc_profile fields
Btrfs: introduce masks for chunk type and profile
Btrfs: add BTRFS_AVAIL_ALLOC_BIT_SINGLE bit
Btrfs: make avail_*_alloc_bits fields dynamic
Btrfs: add basic restriper infrastructure
Btrfs: implement online profile changing
Btrfs: add basic infrastructure for selective balancing
Btrfs: soft profile changing mode (aka soft convert)
Btrfs: profiles filter
Btrfs: usage filter
Btrfs: devid filter
Btrfs: devid subset filter
Btrfs: virtual address space subset filter
Btrfs: save restripe parameters to disk
Btrfs: recover restripe on mount
Btrfs: allow for cancelling restriper
Btrfs: allow for pausing restriper
Btrfs: allow for resuming restriper after it was paused
Btrfs: add skip_restripe mount option
Btrfs: get rid of btrfs_balance() function
Btrfs: add restripe progress reporting
fs/btrfs/ctree.h | 156 ++++++++++-
fs/btrfs/disk-io.c | 15 +-
fs/btrfs/extent-tree.c | 118 ++++++--
fs/btrfs/ioctl.c | 214 ++++++++++++-
fs/btrfs/ioctl.h | 44 +++
fs/btrfs/super.c | 8 +-
fs/btrfs/volumes.c | 780 +++++++++++++++++++++++++++++++++++++++++++++---
fs/btrfs/volumes.h | 57 ++++-
8 files changed, 1304 insertions(+), 88 deletions(-)
--
1.7.5.4
next reply other threads:[~2011-08-23 20:01 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-08-23 20:01 Ilya Dryomov [this message]
2011-08-23 20:01 ` [PATCH 01/21] Btrfs: get rid of *_alloc_profile fields Ilya Dryomov
2011-09-27 12:51 ` David Sterba
2011-08-23 20:01 ` [PATCH 02/21] Btrfs: introduce masks for chunk type and profile Ilya Dryomov
2011-08-23 20:01 ` [PATCH 03/21] Btrfs: add BTRFS_AVAIL_ALLOC_BIT_SINGLE bit Ilya Dryomov
2011-11-01 7:56 ` Arne Jansen
2011-08-23 20:01 ` [PATCH 04/21] Btrfs: make avail_*_alloc_bits fields dynamic Ilya Dryomov
2011-08-23 20:01 ` [PATCH 05/21] Btrfs: add basic restriper infrastructure Ilya Dryomov
2011-11-01 10:08 ` Arne Jansen
2011-11-01 11:07 ` David Sterba
2011-11-01 11:08 ` Arne Jansen
2011-08-23 20:01 ` [PATCH 06/21] Btrfs: implement online profile changing Ilya Dryomov
2011-08-23 20:01 ` [PATCH 07/21] Btrfs: add basic infrastructure for selective balancing Ilya Dryomov
2011-09-27 13:02 ` David Sterba
2011-09-27 17:28 ` Ilya Dryomov
2011-08-23 20:01 ` [PATCH 08/21] Btrfs: soft profile changing mode (aka soft convert) Ilya Dryomov
2011-08-23 20:01 ` [PATCH 09/21] Btrfs: profiles filter Ilya Dryomov
2011-08-23 20:01 ` [PATCH 10/21] Btrfs: usage filter Ilya Dryomov
2011-09-27 13:22 ` David Sterba
2011-11-01 10:18 ` Arne Jansen
2011-08-23 20:01 ` [PATCH 11/21] Btrfs: devid filter Ilya Dryomov
2011-08-23 20:01 ` [PATCH 12/21] Btrfs: devid subset filter Ilya Dryomov
2011-08-23 20:01 ` [PATCH 13/21] Btrfs: virtual address space " Ilya Dryomov
2011-08-23 20:01 ` [PATCH 14/21] Btrfs: save restripe parameters to disk Ilya Dryomov
2011-09-27 13:43 ` David Sterba
2011-11-01 10:29 ` Arne Jansen
2011-08-23 20:01 ` [PATCH 15/21] Btrfs: recover restripe on mount Ilya Dryomov
2011-11-01 10:57 ` Arne Jansen
2011-08-23 20:01 ` [PATCH 16/21] Btrfs: allow for cancelling restriper Ilya Dryomov
2011-08-23 20:01 ` [PATCH 17/21] Btrfs: allow for pausing restriper Ilya Dryomov
2011-11-01 11:46 ` Arne Jansen
2011-08-23 20:01 ` [PATCH 18/21] Btrfs: allow for resuming restriper after it was paused Ilya Dryomov
2011-08-23 20:02 ` [PATCH 19/21] Btrfs: add skip_restripe mount option Ilya Dryomov
2011-08-23 20:02 ` [PATCH 20/21] Btrfs: get rid of btrfs_balance() function Ilya Dryomov
2011-08-23 20:02 ` [PATCH 21/21] Btrfs: add restripe progress reporting Ilya Dryomov
2011-09-27 12:47 ` [PATCH 00/21] [RFC] Btrfs: restriper David Sterba
2011-11-14 23:59 ` Phillip Susi
2011-11-15 9:22 ` Ilya Dryomov
2011-11-15 14:33 ` Phillip Susi
2011-11-15 15:06 ` Ilya Dryomov
2011-11-17 3:13 ` Phillip Susi
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=1314129722-31601-1-git-send-email-idryomov@gmail.com \
--to=idryomov@gmail.com \
--cc=chris.mason@oracle.com \
--cc=hugo@carfax.org.uk \
--cc=linux-btrfs@vger.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 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).