On Wed, Feb 23, 2022 at 12:40:58AM +0000, Tian, Kevin wrote: > > From: Jason Gunthorpe <jgg@xxxxxxxxxx> > > Sent: Tuesday, February 22, 2022 11:51 PM > > > > On Tue, Feb 22, 2022 at 01:43:13AM +0000, Tian, Kevin wrote: > > > > > > > > + * Drivers should attempt to return estimates so that initial_bytes + > > > > > > + * dirty_bytes matches the amount of data an immediate transition > > to > > > > > > STOP_COPY > > > > > > + * will require to be streamed. > > > > > > > > > > I didn't understand this requirement. In an immediate transition to > > > > > STOP_COPY I expect the amount of data covers the entire device > > > > > state, i.e. initial_bytes. dirty_bytes are dynamic and iteratively returned > > > > > then why we need set some expectation on the sum of > > > > > initial+round1_dity+round2_dirty+... > > > > > > > > "will require to be streamed" means additional data from this point > > > > forward, not including anything already sent. > > > > > > > > It turns into the estimate of how long STOP_COPY will take. > > > > > > I still didn't get the 'match' part. Why should the amount of data which > > > has already been sent match the additional data to be sent in STOP_COPY? > > > > None of it is 'already been sent' the return values are always 'still > > to be sent' > > > > Reread the description: > > + * Drivers should attempt to return estimates so that initial_bytes + > + * dirty_bytes matches the amount of data an immediate transition to STOP_COPY > + * will require to be streamed. > > I guess you intended to mean that when EITHER initial_bytes OR > dirty_bytes is read the returned value should match the amount > of data as described above. It is "+" which confused me to think > it as a sum of both numbers... It is the sum initial_bytes declines as the data is transferred. Once everything is read out the sum will be 0. Jason