mirror of
https://github.com/torvalds/linux.git
synced 2024-11-25 21:51:40 +00:00
bcache: avoid unncessary cache prefetch bch_btree_node_get()
In bch_btree_node_get() the read-in btree node will be partially prefetched into L1 cache for following bset iteration (if there is). But if the btree node read is failed, the perfetch operations will waste L1 cache space. This patch checkes whether read operation and only does cache prefetch when read I/O succeeded. Signed-off-by: Coly Li <colyli@suse.de> Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
parent
b4cb6efc1a
commit
c2e8dcf7fa
@ -1011,6 +1011,13 @@ retry:
|
||||
BUG_ON(b->level != level);
|
||||
}
|
||||
|
||||
if (btree_node_io_error(b)) {
|
||||
rw_unlock(write, b);
|
||||
return ERR_PTR(-EIO);
|
||||
}
|
||||
|
||||
BUG_ON(!b->written);
|
||||
|
||||
b->parent = parent;
|
||||
b->accessed = 1;
|
||||
|
||||
@ -1022,13 +1029,6 @@ retry:
|
||||
for (; i <= b->keys.nsets; i++)
|
||||
prefetch(b->keys.set[i].data);
|
||||
|
||||
if (btree_node_io_error(b)) {
|
||||
rw_unlock(write, b);
|
||||
return ERR_PTR(-EIO);
|
||||
}
|
||||
|
||||
BUG_ON(!b->written);
|
||||
|
||||
return b;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user