diff options
| author | Andreas Gruenbacher <agruenba@redhat.com> | 2026-04-05 16:33:36 +0200 |
|---|---|---|
| committer | Andreas Gruenbacher <agruenba@redhat.com> | 2026-04-07 22:20:00 +0200 |
| commit | bb47cce7a1eea1d9d165260328270ddc39e19526 (patch) | |
| tree | a1fdf3927c4535f3c8aa3a561632672c73486421 /tools/testing/selftests/cgroup/lib/git@git.tavy.me:linux.git | |
| parent | fe2c8d051150b90b3ccb85f89e3b1d636cb88ec8 (diff) | |
gfs2: gfs2_log_flush withdraw fixes
When a withdraw occurs in gfs2_log_flush() and we are left with an unsubmitted
bio, fail that bio. Otherwise, the bh's in that bio will remain locked and
gfs2_evict_inode() -> truncate_inode_pages() -> gfs2_invalidate_folio() ->
gfs2_discard() will hang trying to discard the locked bh's.
In addition, when gfs2_log_flush() fails to submit a new transaction, unpin the
buffers in the failing transaction like gfs2_remove_from_journal() does. If
any of the bd's are on the ail2 list, leave them there and do_withdraw() ->
gfs2_withdraw_glocks() -> inode_go_inval() -> truncate_inode_pages() ->
gfs2_invalidate_folio() -> gfs2_discard() will remove them. They will be freed
in gfs2_release_folio().
Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
Diffstat (limited to 'tools/testing/selftests/cgroup/lib/git@git.tavy.me:linux.git')
0 files changed, 0 insertions, 0 deletions
