Re: [PATCH 1/3] libceph: do not decrease the data length more than once

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, 2023-10-31 at 08:17 +0800, Xiubo Li wrote:
> On 10/30/23 20:30, Jeff Layton wrote:
> > On Mon, 2023-10-30 at 06:21 -0400, Jeff Layton wrote:
> > > On Tue, 2023-10-24 at 13:00 +0800, xiubli@xxxxxxxxxx wrote:
> > > > From: Xiubo Li <xiubli@xxxxxxxxxx>
> > > > 
> > > > No need to decrease the data length again if we need to read the
> > > > left data.
> > > > 
> > > > URL: https://tracker.ceph.com/issues/62081
> > > > Signed-off-by: Xiubo Li <xiubli@xxxxxxxxxx>
> > > > ---
> > > >   net/ceph/messenger_v2.c | 1 -
> > > >   1 file changed, 1 deletion(-)
> > > > 
> > > > diff --git a/net/ceph/messenger_v2.c b/net/ceph/messenger_v2.c
> > > > index d09a39ff2cf0..9e3f95d5e425 100644
> > > > --- a/net/ceph/messenger_v2.c
> > > > +++ b/net/ceph/messenger_v2.c
> > > > @@ -1966,7 +1966,6 @@ static int prepare_sparse_read_cont(struct ceph_connection *con)
> > > >   				bv.bv_offset = 0;
> > > >   			}
> > > >   			set_in_bvec(con, &bv);
> > > > -			con->v2.data_len_remain -= bv.bv_len;
> > > >   			return 0;
> > > >   		}
> > > >   	} else if (iov_iter_is_kvec(&con->v2.in_iter)) {
> > > It's been a while since I was in this code, but where does this get
> > > decremented if you're removing it here?
> > > 
> > My question was a bit vague, so let me elaborate a bit:
> > 
> > data_len_remain should be how much unconsumed data is in the message
> > (IIRC). As we call prepare_sparse_read_cont multiple times, we're
> > consuming the message data and this gets decremented as we go.
> > 
> > In the above case, we're consuming the message data into the bvec, so
> > why shouldn't we be decrementing the remaining data by that amount?
> 
> Hi Jeff,
> 
> If I didn't miss something about this. IMO we have already decreased it 
> in the following two cases:
> 
> [1] 
> https://github.com/ceph/ceph-client/blob/for-linus/net/ceph/messenger_v2.c#L2000
> 
> [2] 
> https://github.com/ceph/ceph-client/blob/for-linus/net/ceph/messenger_v2.c#L2025
> 
> And here won't we decrease them twice ?
> 
> 

I don't get it. The functions returns in both of those cases just after
decrementing data_len_remain, so how can it have already decremented it?

Maybe I don't understand the bug you're trying to fix. data_len_remain
only comes into play when we need to revert. Does the problem involve a
trip through revoke_at_prepare_sparse_data()?
-- 
Jeff Layton <jlayton@xxxxxxxxxx>





[Index of Archives]     [CEPH Users]     [Ceph Large]     [Ceph Dev]     [Information on CEPH]     [Linux BTRFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux