diff mbox series

jbd2: Increase maximum transaction size

Message ID 20240701132800.7158-1-jack@suse.cz
State Awaiting Upstream
Headers show
Series jbd2: Increase maximum transaction size | expand

Commit Message

Jan Kara July 1, 2024, 1:28 p.m. UTC
Originally, we were quite conservative in limiting maximum transaction
size to a quarter of the journal because we were not accounting
transaction descriptor and revoke blocks. These days we do properly
account them and reserve space for them from the total transaction
credits. Thus there's no need to be so conservative and we can increase
the maximum transaction size to one third of the journal (even half
should work fine in principle but the performance will likely suffer in
that case). This also fixes failures to grow filesystems with tiny
journals.

Link: CA+hUFcuGs04JHZ_WzA1zGN57+ehL2qmHOt5a7RMpo+rv6Vyxtw@mail.gmail.com
Signed-off-by: Jan Kara <jack@suse.cz>
---
 include/linux/jbd2.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Zhang Yi July 2, 2024, 8:48 a.m. UTC | #1
On 2024/7/1 21:28, Jan Kara wrote:
> Originally, we were quite conservative in limiting maximum transaction
> size to a quarter of the journal because we were not accounting
> transaction descriptor and revoke blocks. These days we do properly
> account them and reserve space for them from the total transaction
> credits. Thus there's no need to be so conservative and we can increase
> the maximum transaction size to one third of the journal (even half
> should work fine in principle but the performance will likely suffer in
> that case). This also fixes failures to grow filesystems with tiny
> journals.
> 

This looks straightforward and reasonable to me. I've done some metadata
intensive performance tests with fs_mark, no obvious degradation and
fluctuation has been found.

Reviewed-by: Zhang Yi <yi.zhang@huawei.com>

Thanks,
Yi.

> Link: CA+hUFcuGs04JHZ_WzA1zGN57+ehL2qmHOt5a7RMpo+rv6Vyxtw@mail.gmail.com
> Signed-off-by: Jan Kara <jack@suse.cz>
> ---
>  include/linux/jbd2.h | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/include/linux/jbd2.h b/include/linux/jbd2.h
> index ab04c1c27fae..7273ef1732bf 100644
> --- a/include/linux/jbd2.h
> +++ b/include/linux/jbd2.h
> @@ -1662,7 +1662,7 @@ int jbd2_fc_release_bufs(journal_t *journal);
>  
>  static inline int jbd2_journal_get_max_txn_bufs(journal_t *journal)
>  {
> -	return (journal->j_total_len - journal->j_fc_wbufsize) / 4;
> +	return (journal->j_total_len - journal->j_fc_wbufsize) / 3;
>  }
>  
>  /*
>
Theodore Ts'o July 11, 2024, 2:35 a.m. UTC | #2
On Mon, 01 Jul 2024 15:28:00 +0200, Jan Kara wrote:
> Originally, we were quite conservative in limiting maximum transaction
> size to a quarter of the journal because we were not accounting
> transaction descriptor and revoke blocks. These days we do properly
> account them and reserve space for them from the total transaction
> credits. Thus there's no need to be so conservative and we can increase
> the maximum transaction size to one third of the journal (even half
> should work fine in principle but the performance will likely suffer in
> that case). This also fixes failures to grow filesystems with tiny
> journals.
> 
> [...]

Applied, thanks!

[1/1] jbd2: Increase maximum transaction size
      commit: a794c9ad026f0a28044347f31929fcdb0270eadc

Best regards,
diff mbox series

Patch

diff --git a/include/linux/jbd2.h b/include/linux/jbd2.h
index ab04c1c27fae..7273ef1732bf 100644
--- a/include/linux/jbd2.h
+++ b/include/linux/jbd2.h
@@ -1662,7 +1662,7 @@  int jbd2_fc_release_bufs(journal_t *journal);
 
 static inline int jbd2_journal_get_max_txn_bufs(journal_t *journal)
 {
-	return (journal->j_total_len - journal->j_fc_wbufsize) / 4;
+	return (journal->j_total_len - journal->j_fc_wbufsize) / 3;
 }
 
 /*