Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Avoid panic in case of pool errors and missing L2ARC
In case an ARC buffer is allocated only on L2ARC, and there are underlying errors in a pool with the cache device in faulty state, a panic can occur in arc_read_done()->arc_hdr_destroy()-> arc_hdr_l2arc_destroy()->arc_hdr_clear_flags() when trying to free the ARC buffer. Fix this by checking in arc_read_done() if the ARC buffer to be freed is stored on L2ARC and not empty, and acquiring its hash_lock in this case. Signed-off-by: George Amanakis <gamanakis@gmail.com>
- Loading branch information