Unverified Commit 52e00ea6 authored by Konstantin Komarov's avatar Konstantin Komarov
Browse files

fs/ntfs3: Update valid size if -EIOCBQUEUED



Update valid size if write is still in I/O queue.
Fixes xfstest generic/240
Fixes: 82cae269 ("fs/ntfs3: Add initialization of super block")

Signed-off-by: default avatarKonstantin Komarov <almaz.alexandrovich@paragon-software.com>
parent 11434697
Loading
Loading
Loading
Loading
+6 −2
Original line number Diff line number Diff line
@@ -757,6 +757,7 @@ static ssize_t ntfs_direct_IO(struct kiocb *iocb, struct iov_iter *iter)
	loff_t vbo = iocb->ki_pos;
	loff_t end;
	int wr = iov_iter_rw(iter) & WRITE;
	size_t iter_count = iov_iter_count(iter);
	loff_t valid;
	ssize_t ret;

@@ -770,10 +771,13 @@ static ssize_t ntfs_direct_IO(struct kiocb *iocb, struct iov_iter *iter)
				 wr ? ntfs_get_block_direct_IO_W
				    : ntfs_get_block_direct_IO_R);

	if (ret <= 0)
	if (ret > 0)
		end = vbo + ret;
	else if (wr && ret == -EIOCBQUEUED)
		end = vbo + iter_count;
	else
		goto out;

	end = vbo + ret;
	valid = ni->i_valid;
	if (wr) {
		if (end > valid && !S_ISBLK(inode->i_mode)) {