On 09/01/2021 20:09, Chaitanya Kulkarni wrote: > On 1/9/21 07:59, Pavel Begunkov wrote: >> iov_iter_bvec() initialises iterators well, no need to pre-zero it >> beforehand as done in fd_execute_rw_aio(). Compilers can't optimise it >> out and generate extra code for that (confirmed with assembly). > It will be great if we can quantify this optimization with the actual > performance > numbers. I expect you won't find any, but such little things can pile up into a not-easy-to-spot overhead over time. In any case, I don't think this requires performance justification because it neither makes it less safe or uglier. Those iov_iter*() are there to handle initialisation, that's a part of the iter API. >> Signed-off-by: Pavel Begunkov <asml.silence@xxxxxxxxx> >> --- >> drivers/target/target_core_file.c | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/drivers/target/target_core_file.c b/drivers/target/target_core_file.c >> index cce455929778..5a66854def95 100644 >> --- a/drivers/target/target_core_file.c >> +++ b/drivers/target/target_core_file.c >> @@ -267,7 +267,7 @@ fd_execute_rw_aio(struct se_cmd *cmd, struct scatterlist *sgl, u32 sgl_nents, >> struct fd_dev *fd_dev = FD_DEV(dev); >> struct file *file = fd_dev->fd_file; >> struct target_core_file_cmd *aio_cmd; >> - struct iov_iter iter = {}; >> + struct iov_iter iter; >> struct scatterlist *sg; >> ssize_t len = 0; >> int ret = 0, i; > -- Pavel Begunkov