Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 360453
b: refs/heads/master
c: dde5740
h: refs/heads/master
i:
  360451: fb37a3d
v: v3
  • Loading branch information
Josef Bacik committed Feb 20, 2013
1 parent 4d4c6fe commit 7a30715
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 4 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 3e39cea61c4ecb5774c08f3e30507fdd58c1cca9
refs/heads/master: dde5740fdd6175fc95aecf4ccc7856fbbad9b44e
12 changes: 9 additions & 3 deletions trunk/fs/btrfs/free-space-cache.c
Original file line number Diff line number Diff line change
Expand Up @@ -1356,6 +1356,8 @@ static void recalculate_thresholds(struct btrfs_free_space_ctl *ctl)
u64 bytes_per_bg = BITS_PER_BITMAP * ctl->unit;
int max_bitmaps = div64_u64(size + bytes_per_bg - 1, bytes_per_bg);

max_bitmaps = max(max_bitmaps, 1);

BUG_ON(ctl->total_bitmaps > max_bitmaps);

/*
Expand Down Expand Up @@ -1636,10 +1638,14 @@ static bool use_bitmap(struct btrfs_free_space_ctl *ctl,
}

/*
* some block groups are so tiny they can't be enveloped by a bitmap, so
* don't even bother to create a bitmap for this
* The original block groups from mkfs can be really small, like 8
* megabytes, so don't bother with a bitmap for those entries. However
* some block groups can be smaller than what a bitmap would cover but
* are still large enough that they could overflow the 32k memory limit,
* so allow those block groups to still be allowed to have a bitmap
* entry.
*/
if (BITS_PER_BITMAP * ctl->unit > block_group->key.offset)
if (((BITS_PER_BITMAP * ctl->unit) >> 1) > block_group->key.offset)
return false;

return true;
Expand Down

0 comments on commit 7a30715

Please sign in to comment.