mirror of
https://github.com/torvalds/linux.git
synced 2026-07-30 11:11:26 +02:00
bcachefs: Self healing writes are BCH_WRITE_alloc_nowait
If a drive is failing and we're moving data off of it, we can't necessairly depend on capacity/disk reservation calculations to avoid deadlocking/blocking on the allocator. And, we don't want to queue up infinite self healing moves anyways. Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
This commit is contained in:
parent
8ff92a9e4e
commit
29ad31c780
|
|
@ -188,12 +188,12 @@ static struct bch_read_bio *__promote_alloc(struct btree_trans *trans,
|
|||
goto err;
|
||||
}
|
||||
|
||||
struct data_update_opts update_opts = {};
|
||||
struct data_update_opts update_opts = { .write_flags = BCH_WRITE_alloc_nowait };
|
||||
|
||||
if (!have_io_error(failed)) {
|
||||
update_opts.target = orig->opts.promote_target;
|
||||
update_opts.extra_replicas = 1;
|
||||
update_opts.write_flags = BCH_WRITE_alloc_nowait|BCH_WRITE_cached;
|
||||
update_opts.write_flags |= BCH_WRITE_cached;
|
||||
update_opts.write_flags |= BCH_WRITE_only_specified_devs;
|
||||
} else {
|
||||
update_opts.target = orig->opts.foreground_target;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user