Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8d71db4f authored by Al Viro's avatar Al Viro
Browse files

lift sb_start_write/sb_end_write out of ->aio_write()



Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent 5f2e354f
Loading
Loading
Loading
Loading
+4 −0
Original line number Original line Diff line number Diff line
@@ -1324,6 +1324,8 @@ static ssize_t aio_rw_vect_retry(struct kiocb *iocb)
	if (iocb->ki_pos < 0)
	if (iocb->ki_pos < 0)
		return -EINVAL;
		return -EINVAL;


	if (opcode == IOCB_CMD_PWRITEV)
		file_start_write(file);
	do {
	do {
		ret = rw_op(iocb, &iocb->ki_iovec[iocb->ki_cur_seg],
		ret = rw_op(iocb, &iocb->ki_iovec[iocb->ki_cur_seg],
			    iocb->ki_nr_segs - iocb->ki_cur_seg,
			    iocb->ki_nr_segs - iocb->ki_cur_seg,
@@ -1336,6 +1338,8 @@ static ssize_t aio_rw_vect_retry(struct kiocb *iocb)
	} while (ret > 0 && iocb->ki_left > 0 &&
	} while (ret > 0 && iocb->ki_left > 0 &&
		 (opcode == IOCB_CMD_PWRITEV ||
		 (opcode == IOCB_CMD_PWRITEV ||
		  (!S_ISFIFO(inode->i_mode) && !S_ISSOCK(inode->i_mode))));
		  (!S_ISFIFO(inode->i_mode) && !S_ISSOCK(inode->i_mode))));
	if (opcode == IOCB_CMD_PWRITEV)
		file_end_write(file);


	/* This means we must have transferred all that we could */
	/* This means we must have transferred all that we could */
	/* No need to retry anymore */
	/* No need to retry anymore */
+0 −3
Original line number Original line Diff line number Diff line
@@ -1514,8 +1514,6 @@ static ssize_t btrfs_file_aio_write(struct kiocb *iocb,
	size_t count, ocount;
	size_t count, ocount;
	bool sync = (file->f_flags & O_DSYNC) || IS_SYNC(file->f_mapping->host);
	bool sync = (file->f_flags & O_DSYNC) || IS_SYNC(file->f_mapping->host);


	sb_start_write(inode->i_sb);

	mutex_lock(&inode->i_mutex);
	mutex_lock(&inode->i_mutex);


	err = generic_segment_checks(iov, &nr_segs, &ocount, VERIFY_READ);
	err = generic_segment_checks(iov, &nr_segs, &ocount, VERIFY_READ);
@@ -1617,7 +1615,6 @@ static ssize_t btrfs_file_aio_write(struct kiocb *iocb,
	if (sync)
	if (sync)
		atomic_dec(&BTRFS_I(inode)->sync_writers);
		atomic_dec(&BTRFS_I(inode)->sync_writers);
out:
out:
	sb_end_write(inode->i_sb);
	current->backing_dev_info = NULL;
	current->backing_dev_info = NULL;
	return num_written ? num_written : err;
	return num_written ? num_written : err;
}
}
+0 −3
Original line number Original line Diff line number Diff line
@@ -2520,8 +2520,6 @@ cifs_writev(struct kiocb *iocb, const struct iovec *iov,


	BUG_ON(iocb->ki_pos != pos);
	BUG_ON(iocb->ki_pos != pos);


	sb_start_write(inode->i_sb);

	/*
	/*
	 * We need to hold the sem to be sure nobody modifies lock list
	 * We need to hold the sem to be sure nobody modifies lock list
	 * with a brlock that prevents writing.
	 * with a brlock that prevents writing.
@@ -2545,7 +2543,6 @@ cifs_writev(struct kiocb *iocb, const struct iovec *iov,
	}
	}


	up_read(&cinode->lock_sem);
	up_read(&cinode->lock_sem);
	sb_end_write(inode->i_sb);
	return rc;
	return rc;
}
}


+4 −2
Original line number Original line Diff line number Diff line
@@ -1103,10 +1103,12 @@ static ssize_t compat_do_readv_writev(int type, struct file *file,
		fnv = file->f_op->aio_write;
		fnv = file->f_op->aio_write;
	}
	}


	if (fnv)
	if (fnv) {
		file_start_write(file);
		ret = do_sync_readv_writev(file, iov, nr_segs, tot_len,
		ret = do_sync_readv_writev(file, iov, nr_segs, tot_len,
						pos, fnv);
						pos, fnv);
	else
		file_end_write(file);
	} else
		ret = do_loop_readv_writev(file, iov, nr_segs, pos, fn);
		ret = do_loop_readv_writev(file, iov, nr_segs, pos, fn);


out:
out:
+0 −2
Original line number Original line Diff line number Diff line
@@ -971,7 +971,6 @@ static ssize_t fuse_file_aio_write(struct kiocb *iocb, const struct iovec *iov,
		return err;
		return err;


	count = ocount;
	count = ocount;
	sb_start_write(inode->i_sb);
	mutex_lock(&inode->i_mutex);
	mutex_lock(&inode->i_mutex);


	/* We can write back this queue in page reclaim */
	/* We can write back this queue in page reclaim */
@@ -1030,7 +1029,6 @@ static ssize_t fuse_file_aio_write(struct kiocb *iocb, const struct iovec *iov,
out:
out:
	current->backing_dev_info = NULL;
	current->backing_dev_info = NULL;
	mutex_unlock(&inode->i_mutex);
	mutex_unlock(&inode->i_mutex);
	sb_end_write(inode->i_sb);


	return written ? written : err;
	return written ? written : err;
}
}
Loading