Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 285967
b: refs/heads/master
c: cfa4c96
h: refs/heads/master
i:
  285965: b093bae
  285963: bd3edcf
  285959: 5e98399
  285951: 010a208
v: v3
  • Loading branch information
Ilya Dryomov committed Jan 16, 2012
1 parent 5b23a54 commit 6f2800f
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 1 deletion.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: e4d8ec0f65b91bfb4984a4927632ded95f9825ad
refs/heads/master: cfa4c961cc69ffb7bda450972320a25cbd413e19
23 changes: 23 additions & 0 deletions trunk/fs/btrfs/volumes.c
Original file line number Diff line number Diff line change
Expand Up @@ -2221,6 +2221,23 @@ static int chunk_vrange_filter(struct extent_buffer *leaf,
return 1;
}

static int chunk_soft_convert_filter(u64 chunk_profile,
struct btrfs_balance_args *bargs)
{
if (!(bargs->flags & BTRFS_BALANCE_ARGS_CONVERT))
return 0;

chunk_profile &= BTRFS_BLOCK_GROUP_PROFILE_MASK;

if (chunk_profile == 0)
chunk_profile = BTRFS_AVAIL_ALLOC_BIT_SINGLE;

if (bargs->target & chunk_profile)
return 1;

return 0;
}

static int should_balance_chunk(struct btrfs_root *root,
struct extent_buffer *leaf,
struct btrfs_chunk *chunk, u64 chunk_offset)
Expand Down Expand Up @@ -2272,6 +2289,12 @@ static int should_balance_chunk(struct btrfs_root *root,
return 0;
}

/* soft profile changing mode */
if ((bargs->flags & BTRFS_BALANCE_ARGS_SOFT) &&
chunk_soft_convert_filter(chunk_type, bargs)) {
return 0;
}

return 1;
}

Expand Down
6 changes: 6 additions & 0 deletions trunk/fs/btrfs/volumes.h
Original file line number Diff line number Diff line change
Expand Up @@ -208,7 +208,13 @@ struct map_lookup {
#define BTRFS_BALANCE_ARGS_DRANGE (1ULL << 3)
#define BTRFS_BALANCE_ARGS_VRANGE (1ULL << 4)

/*
* Profile changing flags. When SOFT is set we won't relocate chunk if
* it already has the target profile (even though it may be
* half-filled).
*/
#define BTRFS_BALANCE_ARGS_CONVERT (1ULL << 8)
#define BTRFS_BALANCE_ARGS_SOFT (1ULL << 9)

struct btrfs_balance_args;
struct btrfs_balance_control {
Expand Down

0 comments on commit 6f2800f

Please sign in to comment.