linux-btrfs.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 00/21] Btrfs: restriper
@ 2012-01-06 14:30 Ilya Dryomov
  2012-01-06 14:30 ` [PATCH 01/21] Btrfs: get rid of *_alloc_profile fields Ilya Dryomov
                   ` (22 more replies)
  0 siblings, 23 replies; 32+ messages in thread
From: Ilya Dryomov @ 2012-01-06 14:30 UTC (permalink / raw)
  To: linux-btrfs; +Cc: Chris Mason, idryomov

Hello,

This is a respin of restriper patch series which 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).  See userspace cover patch for usage examples.

Changes from posted RFC include minor fixes to address received feedback
and some minor fixes of my own: improved inline comments, pause and
cancelling enhancements to eliminate race conditions, a better
validation of user input, some error reporting and error handling fixes.
Also I did s/restripe/balance to not introduce yet another term into
btrfs.  So nothing major, but the diff got quite large because of the
rename and some code movements.

The series is on top of 3.1 + for-linus, available at:

git://github.com/idryomov/btrfs-unstable.git restriper

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: add basic infrastructure for selective balancing
  Btrfs: profiles filter
  Btrfs: usage filter
  Btrfs: devid filter
  Btrfs: devid subset filter
  Btrfs: virtual address space subset filter
  Btrfs: do not reduce profile in do_chunk_alloc()
  Btrfs: implement online profile changing
  Btrfs: soft profile changing mode (aka soft convert)
  Btrfs: save balance parameters to disk
  Btrfs: recover balance on mount
  Btrfs: add skip_balance mount option
  Btrfs: allow for pausing restriper
  Btrfs: allow for cancelling restriper
  Btrfs: allow for resuming restriper after it was paused
  Btrfs: add balance progress reporting

 fs/btrfs/ctree.h       |  205 ++++++++++++-
 fs/btrfs/disk-io.c     |   18 +-
 fs/btrfs/extent-tree.c |  128 ++++++--
 fs/btrfs/ioctl.c       |  193 +++++++++++-
 fs/btrfs/ioctl.h       |   55 ++++
 fs/btrfs/super.c       |   11 +-
 fs/btrfs/volumes.c     |  803 +++++++++++++++++++++++++++++++++++++++++++++---
 fs/btrfs/volumes.h     |   50 +++-
 8 files changed, 1365 insertions(+), 98 deletions(-)

-- 
1.7.6.3


^ permalink raw reply	[flat|nested] 32+ messages in thread
* [PATCH 00/21] [RFC] Btrfs: restriper
@ 2011-08-23 20:01 Ilya Dryomov
  2011-08-23 20:01 ` [PATCH 02/21] Btrfs: introduce masks for chunk type and profile Ilya Dryomov
  0 siblings, 1 reply; 32+ messages in thread
From: Ilya Dryomov @ 2011-08-23 20:01 UTC (permalink / raw)
  To: linux-btrfs; +Cc: Chris Mason, Hugo Mills, idryomov

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


^ permalink raw reply	[flat|nested] 32+ messages in thread

end of thread, other threads:[~2012-02-14 16:44 UTC | newest]

Thread overview: 32+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-01-06 14:30 [PATCH 00/21] Btrfs: restriper Ilya Dryomov
2012-01-06 14:30 ` [PATCH 01/21] Btrfs: get rid of *_alloc_profile fields Ilya Dryomov
2012-01-06 14:30 ` [PATCH 02/21] Btrfs: introduce masks for chunk type and profile Ilya Dryomov
2012-01-06 14:30 ` [PATCH 03/21] Btrfs: add BTRFS_AVAIL_ALLOC_BIT_SINGLE bit Ilya Dryomov
2012-01-06 14:30 ` [PATCH 04/21] Btrfs: make avail_*_alloc_bits fields dynamic Ilya Dryomov
2012-01-06 14:30 ` [PATCH 05/21] Btrfs: add basic restriper infrastructure Ilya Dryomov
2012-01-06 14:30 ` [PATCH 06/21] Btrfs: add basic infrastructure for selective balancing Ilya Dryomov
2012-01-06 14:30 ` [PATCH 07/21] Btrfs: profiles filter Ilya Dryomov
2012-01-06 14:30 ` [PATCH 08/21] Btrfs: usage filter Ilya Dryomov
2012-01-06 14:30 ` [PATCH 09/21] Btrfs: devid filter Ilya Dryomov
2012-01-06 14:30 ` [PATCH 10/21] Btrfs: devid subset filter Ilya Dryomov
2012-01-06 14:30 ` [PATCH 11/21] Btrfs: virtual address space " Ilya Dryomov
2012-01-06 14:31 ` [PATCH 12/21] Btrfs: do not reduce profile in do_chunk_alloc() Ilya Dryomov
2012-01-06 14:31 ` [PATCH 13/21] Btrfs: implement online profile changing Ilya Dryomov
2012-01-06 14:31 ` [PATCH 14/21] Btrfs: soft profile changing mode (aka soft convert) Ilya Dryomov
2012-01-06 14:31 ` [PATCH 15/21] Btrfs: save balance parameters to disk Ilya Dryomov
2012-01-06 14:31 ` [PATCH 16/21] Btrfs: recover balance on mount Ilya Dryomov
2012-01-12 14:00   ` David Sterba
2012-01-12 14:29     ` Ilya Dryomov
2012-01-06 14:31 ` [PATCH 17/21] Btrfs: add skip_balance mount option Ilya Dryomov
2012-01-06 14:31 ` [PATCH 18/21] Btrfs: allow for pausing restriper Ilya Dryomov
2012-01-06 14:31 ` [PATCH 19/21] Btrfs: allow for cancelling restriper Ilya Dryomov
2012-01-06 14:31 ` [PATCH 20/21] Btrfs: allow for resuming restriper after it was paused Ilya Dryomov
2012-01-06 14:31 ` [PATCH 21/21] Btrfs: add balance progress reporting Ilya Dryomov
2012-01-09  6:50 ` [PATCH 00/21] Btrfs: restriper Marios Titas
2012-01-09 13:44   ` Ilya Dryomov
2012-01-10 18:31     ` Ilya Dryomov
2012-02-14  2:31 ` Jérôme Poulin
2012-02-14 14:18   ` Ilya Dryomov
2012-02-14 16:15     ` Jérôme Poulin
2012-02-14 16:44       ` Ilya Dryomov
  -- strict thread matches above, loose matches on Subject: below --
2011-08-23 20:01 [PATCH 00/21] [RFC] " Ilya Dryomov
2011-08-23 20:01 ` [PATCH 02/21] Btrfs: introduce masks for chunk type and profile Ilya Dryomov

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).