diff options
author | Jan Kara <jack@suse.cz> | 2013-06-04 12:12:57 -0400 |
---|---|---|
committer | Theodore Ts'o <tytso@mit.edu> | 2013-06-04 12:12:57 -0400 |
commit | 76c39904561004ac8675f858a290129e439d5168 (patch) | |
tree | 46b2c2800ffbad5dd2ebd4ceb66893414630df2b /fs/jbd2/journal.c | |
parent | 2f387f849b6a5be5b4b914c43a8af0406279db11 (diff) | |
download | op-kernel-dev-76c39904561004ac8675f858a290129e439d5168.zip op-kernel-dev-76c39904561004ac8675f858a290129e439d5168.tar.gz |
jbd2: cleanup needed free block estimates when starting a transaction
__jbd2_log_space_left() and jbd_space_needed() were kind of odd.
jbd_space_needed() accounted also credits needed for currently
committing transaction while it didn't account for credits needed for
control blocks. __jbd2_log_space_left() then accounted for control
blocks as a fraction of free space. Since results of these two
functions are always only compared against each other, this works
correct but is somewhat strange. Move the estimates so that
jbd_space_needed() returns number of blocks needed for a transaction
including control blocks and __jbd2_log_space_left() returns free
space in the journal (with the committing transaction already
subtracted). Rename functions to jbd2_log_space_left() and
jbd2_space_needed() while we are changing them.
Reviewed-by: Zheng Liu <wenqing.lz@taobao.com>
Signed-off-by: Jan Kara <jack@suse.cz>
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Diffstat (limited to 'fs/jbd2/journal.c')
-rw-r--r-- | fs/jbd2/journal.c | 29 |
1 files changed, 0 insertions, 29 deletions
diff --git a/fs/jbd2/journal.c b/fs/jbd2/journal.c index 5ef0712..8e5486d 100644 --- a/fs/jbd2/journal.c +++ b/fs/jbd2/journal.c @@ -478,35 +478,6 @@ repeat: */ /* - * __jbd2_log_space_left: Return the number of free blocks left in the journal. - * - * Called with the journal already locked. - * - * Called under j_state_lock - */ - -int __jbd2_log_space_left(journal_t *journal) -{ - int left = journal->j_free; - - /* assert_spin_locked(&journal->j_state_lock); */ - - /* - * Be pessimistic here about the number of those free blocks which - * might be required for log descriptor control blocks. - */ - -#define MIN_LOG_RESERVED_BLOCKS 32 /* Allow for rounding errors */ - - left -= MIN_LOG_RESERVED_BLOCKS; - - if (left <= 0) - return 0; - left -= (left >> 3); - return left; -} - -/* * Called with j_state_lock locked for writing. * Returns true if a transaction commit was started. */ |