Btrfs: Allocator fix variety pack

* Force chunk allocation when find_free_extent has to do a full scan
* Record the max key at the start of defrag so it doesn't run forever
* Block groups might not be contiguous, make a forward search for the
  next block group in extent-tree.c
* Get rid of extra checks for total fs size
* Fix relocate_one_reference to avoid relocating the same file data block
  twice when referenced by an older transaction
* Use the open device count when allocating chunks so that we don't
  try to allocate from devices that don't exist

Signed-off-by: Chris Mason <chris.mason@oracle.com>
This commit is contained in:
Chris Mason 2008-05-24 14:04:53 -04:00
parent 515dc3228c
commit 0ef3e66b67
5 changed files with 213 additions and 101 deletions

View file

@ -464,6 +464,7 @@ struct btrfs_space_info {
u64 bytes_used;
u64 bytes_pinned;
int full;
int force_alloc;
struct list_head list;
};
@ -589,6 +590,7 @@ struct btrfs_root {
int ref_cows;
int track_dirty;
struct btrfs_key defrag_progress;
struct btrfs_key defrag_max;
int defrag_running;
int defrag_level;
char *name;