On 21/09/2020 17:38, David Laight wrote: > From: Christoph Hellwig >> Sent: 21 September 2020 15:15 >> >> On Tue, Sep 15, 2020 at 02:55:20PM +0000, David Laight wrote: >>> >>> This is the only code that relies on import_iovec() returning >>> iter.count on success. >>> This allows a better interface to import_iovec(). Reviewed-by: Pavel Begunkov <asml.silence@xxxxxxxxx> >> >> This looks generall sane, but a comment below: >> >>> @@ -3123,7 +3123,7 @@ static int io_read(struct io_kiocb *req, bool force_nonblock, >>> if (ret < 0) >>> return ret; >>> iov_count = iov_iter_count(iter); >>> - io_size = ret; >>> + io_size = iov_count; >>> req->result = io_size; >>> ret = 0; >>> >>> @@ -3246,7 +3246,7 @@ static int io_write(struct io_kiocb *req, bool force_nonblock, >>> if (ret < 0) >>> return ret; >>> iov_count = iov_iter_count(iter); >>> - io_size = ret; >>> + io_size = iov_count; >>> req->result = io_size; >> >> I tink the local iov_count variable can go away in both functions, >> as io_size only changes after the last use of iov_count (io_read) or >> not at all (io_write). Yes, iov_count should be killed, now or later. > > Yes, the compiler will probably make that optimisation. > I did a minimal change because my head hurts whenever I look at io_uring.c. > > David > > - > Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK > Registration No: 1397386 (Wales) > -- Pavel Begunkov