diff options
Diffstat (limited to 'fs/jbd2/transaction.c')
| -rw-r--r-- | fs/jbd2/transaction.c | 8 | 
1 files changed, 4 insertions, 4 deletions
| diff --git a/fs/jbd2/transaction.c b/fs/jbd2/transaction.c index d181948c0390..3dccc23cf010 100644 --- a/fs/jbd2/transaction.c +++ b/fs/jbd2/transaction.c @@ -1150,8 +1150,8 @@ static bool jbd2_write_access_granted(handle_t *handle, struct buffer_head *bh,  	/* For undo access buffer must have data copied */  	if (undo && !jh->b_committed_data)  		goto out; -	if (jh->b_transaction != handle->h_transaction && -	    jh->b_next_transaction != handle->h_transaction) +	if (READ_ONCE(jh->b_transaction) != handle->h_transaction && +	    READ_ONCE(jh->b_next_transaction) != handle->h_transaction)  		goto out;  	/*  	 * There are two reasons for the barrier here: @@ -2569,8 +2569,8 @@ bool __jbd2_journal_refile_buffer(struct journal_head *jh)  	 * our jh reference and thus __jbd2_journal_file_buffer() must not  	 * take a new one.  	 */ -	jh->b_transaction = jh->b_next_transaction; -	jh->b_next_transaction = NULL; +	WRITE_ONCE(jh->b_transaction, jh->b_next_transaction); +	WRITE_ONCE(jh->b_next_transaction, NULL);  	if (buffer_freed(bh))  		jlist = BJ_Forget;  	else if (jh->b_modified) |