qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH for-2.10] Revert "block/io: Comment out permissi


From: Stefan Hajnoczi
Subject: Re: [Qemu-devel] [PATCH for-2.10] Revert "block/io: Comment out permission assertions"
Date: Thu, 13 Apr 2017 14:28:25 +0100
User-agent: Mutt/1.8.0 (2017-02-23)

On Tue, Apr 11, 2017 at 05:52:26PM +0200, Max Reitz wrote:
> This reverts commit e3e0003a8f6570aba1421ef99a0b383a43371a74.
> 
> This commit was necessary for the 2.9 release because we were unable to
> fix the underlying issue(s) in time. However, we will be for 2.10.
> 
> Signed-off-by: Max Reitz <address@hidden>
> ---
>  block.c    |  6 +-----
>  block/io.c | 12 ++----------
>  2 files changed, 3 insertions(+), 15 deletions(-)

Should we merge a fix before enabling the assertion again?  It's a known
issue.  Let people using qemu.git live a little and have fun without the
inevitable SIGABRT coredumps.  We don't benefit if more people encounter
this crash and duplicate work debugging it.

> diff --git a/block.c b/block.c
> index 1fbbb8d606..086a12df97 100644
> --- a/block.c
> +++ b/block.c
> @@ -3274,11 +3274,7 @@ int bdrv_truncate(BdrvChild *child, int64_t offset)
>      BlockDriver *drv = bs->drv;
>      int ret;
>  
> -    /* FIXME: Some format block drivers use this function instead of 
> implicitly
> -     *        growing their file by writing beyond its end.
> -     *        See bdrv_aligned_pwritev() for an explanation why we currently
> -     *        cannot assert this permission in that case. */
> -    // assert(child->perm & BLK_PERM_RESIZE);
> +    assert(child->perm & BLK_PERM_RESIZE);
>  
>      if (!drv)
>          return -ENOMEDIUM;
> diff --git a/block/io.c b/block/io.c
> index 8706bfa578..bae6947032 100644
> --- a/block/io.c
> +++ b/block/io.c
> @@ -1345,16 +1345,8 @@ static int coroutine_fn bdrv_aligned_pwritev(BdrvChild 
> *child,
>      assert(!waited || !req->serialising);
>      assert(req->overlap_offset <= offset);
>      assert(offset + bytes <= req->overlap_offset + req->overlap_bytes);
> -    /* FIXME: Block migration uses the BlockBackend of the guest device at a
> -     *        point when it has not yet taken write permissions. This will be
> -     *        fixed by a future patch, but for now we have to bypass this
> -     *        assertion for block migration to work. */
> -    // assert(child->perm & BLK_PERM_WRITE);
> -    /* FIXME: Because of the above, we also cannot guarantee that all format
> -     *        BDS take the BLK_PERM_RESIZE permission on their file BDS, 
> since
> -     *        they are not obligated to do so if they do not have any parent
> -     *        that has taken the permission to write to them. */
> -    // assert(end_sector <= bs->total_sectors || child->perm & 
> BLK_PERM_RESIZE);
> +    assert(child->perm & BLK_PERM_WRITE);
> +    assert(end_sector <= bs->total_sectors || child->perm & BLK_PERM_RESIZE);
>  
>      ret = notifier_with_return_list_notify(&bs->before_write_notifiers, req);
>  
> -- 
> 2.12.2
> 

Attachment: signature.asc
Description: PGP signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]