浏览代码

bcache: stop moving_gc marking buckets that can't be moved.

Signed-off-by: Nicholas Swenson <nks@daterainc.com>
Nicholas Swenson 11 年之前
父节点
当前提交
3f6ef38110
共有 1 个文件被更改,包括 4 次插入1 次删除
  1. 4 1
      drivers/md/bcache/movinggc.c

+ 4 - 1
drivers/md/bcache/movinggc.c

@@ -215,7 +215,10 @@ void bch_moving_gc(struct cache_set *c)
 		ca->heap.used = 0;
 
 		for_each_bucket(b, ca) {
-			if (!GC_SECTORS_USED(b))
+			if (GC_MARK(b) == GC_MARK_METADATA ||
+			    !GC_SECTORS_USED(b) ||
+			    GC_SECTORS_USED(b) == ca->sb.bucket_size ||
+			    atomic_read(&b->pin))
 				continue;
 
 			if (!heap_full(&ca->heap)) {