Unverified Commit fac11126 authored by openeuler-ci-bot's avatar openeuler-ci-bot Committed by Gitee
Browse files

!9101 ext4: Skip moving extents if page writeback failed

parents 08ee5e02 6905af98
Loading
Loading
Loading
Loading
+11 −4
Original line number Diff line number Diff line
@@ -640,10 +640,16 @@ ext4_move_extents(struct file *o_filp, struct file *d_filp, __u64 orig_blk,
	inode_dio_wait(donor_inode);

	/* Fallback to buffer_head aops for inodes with buffered iomap aops */
	if (ext4_test_inode_state(orig_inode, EXT4_STATE_BUFFERED_IOMAP))
		ext4_disable_buffered_iomap_aops(orig_inode);
	if (ext4_test_inode_state(donor_inode, EXT4_STATE_BUFFERED_IOMAP))
		ext4_disable_buffered_iomap_aops(donor_inode);
	if (ext4_test_inode_state(orig_inode, EXT4_STATE_BUFFERED_IOMAP)) {
		ret = ext4_disable_buffered_iomap_aops(orig_inode);
		if (ret)
			goto out_unlock;
	}
	if (ext4_test_inode_state(donor_inode, EXT4_STATE_BUFFERED_IOMAP)) {
		ret = ext4_disable_buffered_iomap_aops(donor_inode);
		if (ret)
			goto out_unlock;
	}

	/* Protect extent tree against block allocations via delalloc */
	ext4_double_down_write_data_sem(orig_inode, donor_inode);
@@ -728,6 +734,7 @@ ext4_move_extents(struct file *o_filp, struct file *d_filp, __u64 orig_blk,

	ext4_free_ext_path(path);
	ext4_double_up_write_data_sem(orig_inode, donor_inode);
out_unlock:
	unlock_two_nondirectories(orig_inode, donor_inode);

	return ret;