mirror of
https://github.com/edk2-porting/linux-next.git
synced 2025-01-21 20:13:58 +08:00
ext4, jbd2: Provide accessor function for handle credits
Provide accessor function to get number of credits available in a handle and use it from ext4. Later, computation of available credits won't be so straightforward. Reviewed-by: Theodore Ts'o <tytso@mit.edu> Signed-off-by: Jan Kara <jack@suse.cz> Link: https://lore.kernel.org/r/20191105164437.32602-11-jack@suse.cz Signed-off-by: Theodore Ts'o <tytso@mit.edu>
This commit is contained in:
parent
a413036791
commit
a9a8344ee1
@ -119,8 +119,8 @@ handle_t *__ext4_journal_start_reserved(handle_t *handle, unsigned int line,
|
||||
return ext4_get_nojournal();
|
||||
|
||||
sb = handle->h_journal->j_private;
|
||||
trace_ext4_journal_start_reserved(sb, handle->h_buffer_credits,
|
||||
_RET_IP_);
|
||||
trace_ext4_journal_start_reserved(sb,
|
||||
jbd2_handle_buffer_credits(handle), _RET_IP_);
|
||||
err = ext4_journal_check_start(sb);
|
||||
if (err < 0) {
|
||||
jbd2_journal_free_reserved(handle);
|
||||
@ -138,10 +138,10 @@ int __ext4_journal_ensure_credits(handle_t *handle, int check_cred,
|
||||
{
|
||||
if (!ext4_handle_valid(handle))
|
||||
return 0;
|
||||
if (handle->h_buffer_credits >= check_cred)
|
||||
if (jbd2_handle_buffer_credits(handle) >= check_cred)
|
||||
return 0;
|
||||
return ext4_journal_extend(handle,
|
||||
extend_cred - handle->h_buffer_credits);
|
||||
extend_cred - jbd2_handle_buffer_credits(handle));
|
||||
}
|
||||
|
||||
static void ext4_journal_abort_handle(const char *caller, unsigned int line,
|
||||
@ -289,7 +289,7 @@ int __ext4_handle_dirty_metadata(const char *where, unsigned int line,
|
||||
handle->h_type,
|
||||
handle->h_line_no,
|
||||
handle->h_requested_credits,
|
||||
handle->h_buffer_credits, err);
|
||||
jbd2_handle_buffer_credits(handle), err);
|
||||
return err;
|
||||
}
|
||||
ext4_error_inode(inode, where, line,
|
||||
@ -300,7 +300,8 @@ int __ext4_handle_dirty_metadata(const char *where, unsigned int line,
|
||||
handle->h_type,
|
||||
handle->h_line_no,
|
||||
handle->h_requested_credits,
|
||||
handle->h_buffer_credits, err);
|
||||
jbd2_handle_buffer_credits(handle),
|
||||
err);
|
||||
}
|
||||
} else {
|
||||
if (inode)
|
||||
|
@ -288,13 +288,6 @@ static inline int ext4_handle_is_aborted(handle_t *handle)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline int ext4_handle_has_enough_credits(handle_t *handle, int needed)
|
||||
{
|
||||
if (ext4_handle_valid(handle) && handle->h_buffer_credits < needed)
|
||||
return 0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
#define ext4_journal_start_sb(sb, type, nblocks) \
|
||||
__ext4_journal_start_sb((sb), __LINE__, (type), (nblocks), 0)
|
||||
|
||||
|
@ -2314,7 +2314,7 @@ ext4_xattr_set_handle(handle_t *handle, struct inode *inode, int name_index,
|
||||
flags & XATTR_CREATE);
|
||||
brelse(bh);
|
||||
|
||||
if (!ext4_handle_has_enough_credits(handle, credits)) {
|
||||
if (jbd2_handle_buffer_credits(handle) < credits) {
|
||||
error = -ENOSPC;
|
||||
goto cleanup;
|
||||
}
|
||||
|
@ -1645,6 +1645,12 @@ static inline tid_t jbd2_get_latest_transaction(journal_t *journal)
|
||||
return tid;
|
||||
}
|
||||
|
||||
|
||||
static inline int jbd2_handle_buffer_credits(handle_t *handle)
|
||||
{
|
||||
return handle->h_buffer_credits;
|
||||
}
|
||||
|
||||
#ifdef __KERNEL__
|
||||
|
||||
#define buffer_trace_init(bh) do {} while (0)
|
||||
|
Loading…
Reference in New Issue
Block a user