diff options
author | Andreas Gruenbacher <agruenba@redhat.com> | 2019-12-08 16:12:49 +0300 |
---|---|---|
committer | Andreas Gruenbacher <agruenba@redhat.com> | 2020-01-07 14:30:36 +0300 |
commit | eed0f953b90e86e765197a1dad06bb48aedc27fe (patch) | |
tree | f831f9cca03469c6e6a6b2dfc372da294ad439b1 /fs/gfs2/log.c | |
parent | 887352fb5ffd593d28f77059c09dabb47c5b86e9 (diff) | |
download | linux-eed0f953b90e86e765197a1dad06bb48aedc27fe.tar.xz |
gfs2: Another gfs2_find_jhead fix
On filesystems with a block size smaller than the page size,
gfs2_find_jhead can split a page across two bios (for example, when
blocks are not allocated consecutively). When that happens, the first
bio that completes will unlock the page in its bi_end_io handler even
though the page hasn't been read completely yet. Fix that by using a
chained bio for the rest of the page.
While at it, clean up the sector calculation logic in
gfs2_log_alloc_bio. In gfs2_find_jhead, simplify the disk block and
offset calculation logic and fix a variable name.
Fixes: f4686c26ecc3 ("gfs2: read journal in large chunks")
Cc: stable@vger.kernel.org # v5.2+
Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
Diffstat (limited to 'fs/gfs2/log.c')
0 files changed, 0 insertions, 0 deletions