Skip to content

Commit

Permalink
Btrfs: fix multi-device code to use raid policies set by mkfs
Browse files Browse the repository at this point in the history
When reading in block groups, a global mask of the available raid policies
should be adjusted based on the types of block groups found on disk.  This
global mask is then used to decide which raid policy to use for new
block groups.

The recent allocator changes dropped the call that updated the global
mask, making all the block groups allocated at run time single striped
onto a single drive.

This also fixes the async worker threads to set any thread that uses
the requeue mechanism as busy.  This allows us to avoid blocking
on get_request_wait for the async bio submission threads.

Signed-off-by: Chris Mason <chris.mason@oracle.com>
  • Loading branch information
Chris Mason committed Sep 30, 2008
1 parent 45b8c9a commit 75ccf47
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 1 deletion.
14 changes: 13 additions & 1 deletion fs/btrfs/async-thread.c
Original file line number Diff line number Diff line change
Expand Up @@ -302,8 +302,20 @@ int btrfs_requeue_work(struct btrfs_work *work)
spin_lock_irqsave(&worker->lock, flags);
atomic_inc(&worker->num_pending);
list_add_tail(&work->list, &worker->pending);
check_busy_worker(worker);

/* by definition we're busy, take ourselves off the idle
* list
*/
if (worker->idle) {
spin_lock_irqsave(&worker->workers->lock, flags);
worker->idle = 0;
list_move_tail(&worker->worker_list,
&worker->workers->worker_list);
spin_unlock_irqrestore(&worker->workers->lock, flags);
}

spin_unlock_irqrestore(&worker->lock, flags);

out:
return 0;
}
Expand Down
2 changes: 2 additions & 0 deletions fs/btrfs/extent-tree.c
Original file line number Diff line number Diff line change
Expand Up @@ -5145,6 +5145,8 @@ int btrfs_read_block_groups(struct btrfs_root *root)

ret = btrfs_add_block_group_cache(root->fs_info, cache);
BUG_ON(ret);

set_avail_alloc_bits(root->fs_info, cache->flags);
}
ret = 0;
error:
Expand Down

0 comments on commit 75ccf47

Please sign in to comment.