c3a893d519
- place binaries in /usr tree (UsrMerge project) - adjust mkinitrd script accordingly - add btrfsck repair options for: - rebuild extent records - fix block group accounting - reset csums for rescue nodatasum mount - prune corrupt extent allocation tree blocks - device scanning fixes for dm and multipath - initrd support: move btrfs device scan after block device setup - documentation updates - add csize for file commpressed size - updated restore utility OBS-URL: https://build.opensuse.org/request/show/108879 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/btrfsprogs?expand=0&rev=26
44 lines
1.5 KiB
Diff
44 lines
1.5 KiB
Diff
From 494ba283ed46df812d56652d6ccc1b548bb5fe17 Mon Sep 17 00:00:00 2001
|
|
From: Chris Mason <chris.mason@oracle.com>
|
|
Date: Thu, 9 Feb 2012 09:29:19 -0500
|
|
Subject: [PATCH 11/18] btrfsck: make sure to dirty all block groups as we fix
|
|
accounting
|
|
|
|
The code that corrects the count of bytes used in each block group
|
|
was only marking block groups dirty when they contained extents. This
|
|
fixes things to dirty all the block groups, so any empty block groups
|
|
are written with their correct (zero) count.
|
|
|
|
Signed-off-by: Chris Mason <chris.mason@oracle.com>
|
|
---
|
|
extent-tree.c | 6 ++++++
|
|
1 files changed, 6 insertions(+), 0 deletions(-)
|
|
|
|
diff --git a/extent-tree.c b/extent-tree.c
|
|
index 544ab2f..5c4057e 100644
|
|
--- a/extent-tree.c
|
|
+++ b/extent-tree.c
|
|
@@ -3378,6 +3378,8 @@ int btrfs_fix_block_accounting(struct btrfs_trans_handle *trans,
|
|
struct btrfs_block_group_cache *cache;
|
|
struct btrfs_fs_info *fs_info = root->fs_info;
|
|
|
|
+ root = root->fs_info->extent_root;
|
|
+
|
|
while(1) {
|
|
cache = btrfs_lookup_block_group(fs_info, start);
|
|
if (!cache)
|
|
@@ -3385,6 +3387,10 @@ int btrfs_fix_block_accounting(struct btrfs_trans_handle *trans,
|
|
start = cache->key.objectid + cache->key.offset;
|
|
btrfs_set_block_group_used(&cache->item, 0);
|
|
cache->space_info->bytes_used = 0;
|
|
+ set_extent_bits(&root->fs_info->block_group_cache,
|
|
+ cache->key.objectid,
|
|
+ cache->key.objectid + cache->key.offset -1,
|
|
+ BLOCK_GROUP_DIRTY, GFP_NOFS);
|
|
}
|
|
|
|
btrfs_init_path(&path);
|
|
--
|
|
1.7.6.233.gd79bc
|
|
|