On Wed, May 20, 2020 at 03:31:19PM +0200, Jan Kara wrote: > When reserved transaction handle is unused, we subtract its reserved > credits in __jbd2_journal_unreserve_handle() called from > jbd2_journal_stop(). However this function forgets to remove reserved > credits from transaction->t_outstanding_credits and thus the transaction > space that was reserved remains effectively leaked. The leaked > transaction space can be quite significant in some cases and leads to > unnecessarily small transactions and thus reducing throughput of the > journalling machinery. E.g. fsmark workload creating lots of 4k files > was observed to have about 20% lower throughput due to this when ext4 is > mounted with dioread_nolock mount option. > > Subtract reserved credits from t_outstanding_credits as well. > > CC: stable@xxxxxxxxxxxxxxx > Fixes: 8f7d89f36829 ("jbd2: transaction reservation support") > Reviewed-by: Andreas Dilger <adilger@xxxxxxxxx> > Signed-off-by: Jan Kara <jack@xxxxxxx> Thanks, applied. - Ted