diff options
author | 2022-02-18 10:03:27 -0500 | |
---|---|---|
committer | 2022-03-14 13:13:51 +0100 | |
commit | f9f15de85d74e7eef021af059ca53a15f041cdd8 (patch) | |
tree | cbeb0219a0379ac260a9e3ca09e9245918da3f20 /tools/perf/scripts/python/export-to-postgresql.py | |
parent | btrfs: track compressed bio errors as blk_status_t (diff) | |
download | wireguard-linux-f9f15de85d74e7eef021af059ca53a15f041cdd8.tar.xz wireguard-linux-f9f15de85d74e7eef021af059ca53a15f041cdd8.zip |
btrfs: do not double complete bio on errors during compressed reads
I hit some weird panics while fixing up the error handling from
btrfs_lookup_bio_sums(). Turns out the compression path will complete
the bio we use if we set up any of the compression bios and then return
an error, and then btrfs_submit_data_bio() will also call bio_endio() on
the bio.
Fix this by making btrfs_submit_compressed_read() responsible for
calling bio_endio() on the bio if there are any errors. Currently it
was only doing it if we created the compression bios, otherwise it was
depending on btrfs_submit_data_bio() to do the right thing. This
creates the above problem, so fix up btrfs_submit_compressed_read() to
always call bio_endio() in case of an error, and then simply return from
btrfs_submit_data_bio() if we had to call
btrfs_submit_compressed_read().
Signed-off-by: Josef Bacik <josef@toxicpanda.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
Diffstat (limited to '')
0 files changed, 0 insertions, 0 deletions