Thread (7 messages) flat view 7 messages, 2 authors, 2021-03-02

Re: [PATCH] net: 9p: free what was emitted when read count is 0

From: Jisheng Zhang <hidden>
Date: 2021-03-01 03:03:43
Also in: lkml

On Mon, 1 Mar 2021 11:51:24 +0900 Dominique Martinet wrote:


Jisheng Zhang wrote on Mon, Mar 01, 2021 at 10:33:36AM +0800:
quoted
I met below warning when cating a small size(about 80bytes) txt file
on 9pfs(msize=2097152 is passed to 9p mount option), the reason is we
miss iov_iter_advance() if the read count is 0, so we didn't truncate
the pipe, then iov_iter_pipe() thinks the pipe is full. Fix it by
calling iov_iter_advance() on the iov_iter "to" even if read count is 0  
Hm, there are plenty of other error cases that don't call
iov_iter_advance() and shouldn't trigger this warning ; I'm not sure
just adding one particular call to this is a good solution.
Per my understanding of iov_iter, we need to call iov_iter_advance()
even when the read out count is 0. I believe we can see this common style
in other fs.

How reproducible is this? From the description it should happen
100%
everytime you cat a small file? (I'm surprised cat uses sendfile, what
it happened every time when catting a small file.
cat version? coreutils' doesn't seem to do that on their git)
busybox cat
What kernel version do you get this on? Bonus points if you can confirm
5.11 and the latest linus tree
this didn't use to happen, and full points for a bisect.


(cat on a small file is something I do all the time in my tests, I'd
like to be able to reproduce to understand the issue better as I'm not
familiar with that part of the code)
Per my check, it can be 100% reproduced with busybox cat + "msize=2097152"
mount option. NOTE: msize=2097152 isn't a magic number it can be other
numbers which can ensure zerocopy code path is executed: p9_client_read_once
->p9_client_zc_rpc()

Thanks
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help