diff options
Diffstat (limited to 'fs/ext4/fast_commit.c')
| -rw-r--r-- | fs/ext4/fast_commit.c | 14 | 
1 files changed, 10 insertions, 4 deletions
| diff --git a/fs/ext4/fast_commit.c b/fs/ext4/fast_commit.c index 87c009e0c59a..3926a05eceee 100644 --- a/fs/ext4/fast_commit.c +++ b/fs/ext4/fast_commit.c @@ -353,7 +353,7 @@ void ext4_fc_mark_ineligible(struct super_block *sb, int reason, handle_t *handl  		read_unlock(&sbi->s_journal->j_state_lock);  	}  	spin_lock(&sbi->s_fc_lock); -	if (sbi->s_fc_ineligible_tid < tid) +	if (tid_gt(tid, sbi->s_fc_ineligible_tid))  		sbi->s_fc_ineligible_tid = tid;  	spin_unlock(&sbi->s_fc_lock);  	WARN_ON(reason >= EXT4_FC_REASON_MAX); @@ -649,6 +649,12 @@ void ext4_fc_track_range(handle_t *handle, struct inode *inode, ext4_lblk_t star  	if (ext4_test_mount_flag(inode->i_sb, EXT4_MF_FC_INELIGIBLE))  		return; +	if (ext4_has_inline_data(inode)) { +		ext4_fc_mark_ineligible(inode->i_sb, EXT4_FC_REASON_XATTR, +					handle); +		return; +	} +  	args.start = start;  	args.end = end; @@ -1207,7 +1213,7 @@ restart_fc:  	if (ret == -EALREADY) {  		/* There was an ongoing commit, check if we need to restart */  		if (atomic_read(&sbi->s_fc_subtid) <= subtid && -			commit_tid > journal->j_commit_sequence) +		    tid_gt(commit_tid, journal->j_commit_sequence))  			goto restart_fc;  		ext4_fc_update_stats(sb, EXT4_FC_STATUS_SKIPPED, 0, 0,  				commit_tid); @@ -1282,7 +1288,7 @@ static void ext4_fc_cleanup(journal_t *journal, int full, tid_t tid)  		list_del_init(&iter->i_fc_list);  		ext4_clear_inode_state(&iter->vfs_inode,  				       EXT4_STATE_FC_COMMITTING); -		if (iter->i_sync_tid <= tid) +		if (tid_geq(tid, iter->i_sync_tid))  			ext4_fc_reset_inode(&iter->vfs_inode);  		/* Make sure EXT4_STATE_FC_COMMITTING bit is clear */  		smp_mb(); @@ -1313,7 +1319,7 @@ static void ext4_fc_cleanup(journal_t *journal, int full, tid_t tid)  	list_splice_init(&sbi->s_fc_q[FC_Q_STAGING],  				&sbi->s_fc_q[FC_Q_MAIN]); -	if (tid >= sbi->s_fc_ineligible_tid) { +	if (tid_geq(tid, sbi->s_fc_ineligible_tid)) {  		sbi->s_fc_ineligible_tid = 0;  		ext4_clear_mount_flag(sb, EXT4_MF_FC_INELIGIBLE);  	} |