[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 4/6] qcow2: Update total_sectors when resizing t
From: |
Kevin Wolf |
Subject: |
Re: [Qemu-devel] [PATCH 4/6] qcow2: Update total_sectors when resizing the image |
Date: |
Mon, 30 Jul 2018 14:28:28 +0200 |
User-agent: |
Mutt/1.9.1 (2017-09-22) |
Am 30.07.2018 um 13:41 hat Leonid Bloch geschrieben:
> On 07/30/2018 12:43 PM, Kevin Wolf wrote:
> > Am 29.07.2018 um 23:27 hat Leonid Bloch geschrieben:
> > > Signed-off-by: Leonid Bloch <address@hidden>
> > > ---
> > > block/qcow2.c | 2 ++
> > > 1 file changed, 2 insertions(+)
> > >
> > > diff --git a/block/qcow2.c b/block/qcow2.c
> > > index ec9e6238a0..223d351e40 100644
> > > --- a/block/qcow2.c
> > > +++ b/block/qcow2.c
> > > @@ -3646,6 +3646,8 @@ static int coroutine_fn
> > > qcow2_co_truncate(BlockDriverState *bs, int64_t offset,
> > > }
> > > }
> > > + bs->total_sectors = offset / 512;
> > > +
> > > /* write updated header.size */
> > > offset = cpu_to_be64(offset);
> > > ret = bdrv_pwrite_sync(bs->file, offsetof(QCowHeader, size),
> >
> > This shouldn't be necessary, bdrv_co_truncate() already updates
> > bs->total_sectors after calling the block driver.
>
> It looks like without it the cache resize works only on the second resize.
Yes, and after reading the rest of the series, it makes sense to me
because qcow2_update_option() -> read_cache_sizes() uses
bs->total_sectors, so if we call that in qcow2_co_truncate(), we already
need to update the value early.
The comment should explain this connection because otherwise it's not
obvious when you read the code.
> > If this is needed by one of the following patches, we need a comment
> > that explains why this seemingly superfluous assignment is actually
> > necessary.
> >
> > Also, 512 should be BDRV_SECTOR_SIZE.
>
> I was surprised that it's not, but it's 512 also in two other places,
> including in qcow2_co_truncate itself. So I decided to keep that. Probably
> would be better if I'd repair it in the other places instead. :)
Yeah, or at least not introduce new places with a literal 512.
Kevin
- [Qemu-devel] [PATCH 5/6] qcow2: Make the default L2 cache sufficient to cover the entire image, (continued)
- [Qemu-devel] [PATCH 5/6] qcow2: Make the default L2 cache sufficient to cover the entire image, Leonid Bloch, 2018/07/29
- [Qemu-devel] [PATCH 1/6 for-3.0] Update .gitignore, Leonid Bloch, 2018/07/29
- [Qemu-devel] [PATCH 6/6] qcow2: Resize the cache upon image resizing, Leonid Bloch, 2018/07/29
- [Qemu-devel] [PATCH 2/6 for-3.0] qcow2: A grammar fix in conflicting cache sizing error message, Leonid Bloch, 2018/07/29
- [Qemu-devel] [PATCH 3/6 for-3.0] qcow2: Options' documentation fixes, Leonid Bloch, 2018/07/29
- [Qemu-devel] [PATCH 4/6] qcow2: Update total_sectors when resizing the image, Leonid Bloch, 2018/07/29
- Re: [Qemu-devel] [PATCH 0/6] qcow2: Make the L2 cache cover the whole image by default, Kevin Wolf, 2018/07/30