qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
To: "qemu-block@nongnu.org" <qemu-block@nongnu.org>
Cc: "fam@euphon.net" <fam@euphon.net>,
	"kwolf@redhat.com" <kwolf@redhat.com>,
	Denis Lunev <den@virtuozzo.com>,
	"wencongyang2@huawei.com" <wencongyang2@huawei.com>,
	"xiechanglong.d@gmail.com" <xiechanglong.d@gmail.com>,
	"armbru@redhat.com" <armbru@redhat.com>,
	"qemu-devel@nongnu.org" <qemu-devel@nongnu.org>,
	"jsnow@redhat.com" <jsnow@redhat.com>,
	"stefanha@redhat.com" <stefanha@redhat.com>,
	"mreitz@redhat.com" <mreitz@redhat.com>
Subject: Re: [PATCH v13 00/15] backup-top filter driver for backup
Date: Wed, 25 Sep 2019 19:19:24 +0000	[thread overview]
Message-ID: <9a0c66fe-f786-3f49-6fad-ffca04888659@virtuozzo.com> (raw)
In-Reply-To: <20190920142056.12778-1-vsementsov@virtuozzo.com>

Ogh :(

And I realized that there is bigger problem with design:

Assume failed copy in filter request: we want to mark bits dirty again
and release range lock on source.. But if we have some write reguests
in parallel, they may already passed backup-top filter, and they are 
only waiting for range lock. When lock is free the will go on and will
not see bitmap changes..

That means that we can't use range lock: waiting request must wait on
backup-top level, but range lock will not work on it, as they will 
interfer with original write request.

I have to rething it somehow, a kind of "intersecting requests" possibly 
will be kept. I still don't like that current backup write-notifier 
locks the whole region, even non-dirty bits, instead we should lock only 
the region which we are handling at the moment.

Patches 01-11 are still good themselves, as a preparation, let's keep them

Patches 12-13 are good, but range lock is not appropriate for backup.. 
May be they will be used for rewriting copy-on-read filter to copy in 
filter code.. Still I'm not sure, as COR should work through block-copy 
finally, and may possibly reuse same locking.

On 20.09.2019 17:20, Vladimir Sementsov-Ogievskiy wrote:
> Hi all!
> 
> These series introduce backup-top driver. It's a filter-node, which
> do copy-before-write operation. Mirror uses filter-node for handling
> guest writes, let's move to filter-node (from write-notifiers) for
> backup too.
> 
> v11,v12 -> v13 changes:
> 
> [v12 was two fixes in separate: [PATCH v12 0/2] backup: copy_range fixes]
> 
> 01: new in v12, in v13 change comment
> 02: in v12: add "Fixes: " to commit msg, in v13 add John's r-b
> 05: rebase on 01
> 07: rebase on 01. It still a clean movement, keep r-b
> 
> Vladimir Sementsov-Ogievskiy (15):
>    block/backup: fix max_transfer handling for copy_range
>    block/backup: fix backup_cow_with_offload for last cluster
>    block/backup: split shareable copying part from backup_do_cow
>    block/backup: improve comment about image fleecing
>    block/backup: introduce BlockCopyState
>    block/backup: fix block-comment style
>    block: move block_copy from block/backup.c to separate file
>    block: teach bdrv_debug_breakpoint skip filters with backing
>    iotests: prepare 124 and 257 bitmap querying for backup-top filter
>    iotests: 257: drop unused Drive.device field
>    iotests: 257: drop device_add
>    block/io: refactor wait_serialising_requests
>    block: add lock/unlock range functions
>    block: introduce backup-top filter driver
>    block/backup: use backup-top instead of write notifiers
> 
>   qapi/block-core.json          |   8 +-
>   block/backup-top.h            |  37 ++
>   include/block/block-copy.h    |  84 ++++
>   include/block/block_int.h     |   5 +
>   block.c                       |  34 +-
>   block/backup-top.c            | 240 ++++++++++++
>   block/backup.c                | 440 ++++-----------------
>   block/block-copy.c            | 346 ++++++++++++++++
>   block/io.c                    |  68 +++-
>   block/replication.c           |   2 +-
>   blockdev.c                    |   1 +
>   block/Makefile.objs           |   3 +
>   block/trace-events            |  14 +-
>   tests/qemu-iotests/056        |   8 +-
>   tests/qemu-iotests/124        |  83 ++--
>   tests/qemu-iotests/257        |  91 ++---
>   tests/qemu-iotests/257.out    | 714 ++++++++++++++--------------------
>   tests/qemu-iotests/iotests.py |  27 ++
>   18 files changed, 1287 insertions(+), 918 deletions(-)
>   create mode 100644 block/backup-top.h
>   create mode 100644 include/block/block-copy.h
>   create mode 100644 block/backup-top.c
>   create mode 100644 block/block-copy.c
> 


  parent reply	other threads:[~2019-09-25 19:30 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-09-20 14:20 [PATCH v13 00/15] backup-top filter driver for backup Vladimir Sementsov-Ogievskiy
2019-09-20 14:20 ` [PATCH v13 01/15] block/backup: fix max_transfer handling for copy_range Vladimir Sementsov-Ogievskiy
2019-09-20 14:20 ` [PATCH v13 02/15] block/backup: fix backup_cow_with_offload for last cluster Vladimir Sementsov-Ogievskiy
2019-09-20 14:20 ` [PATCH v13 03/15] block/backup: split shareable copying part from backup_do_cow Vladimir Sementsov-Ogievskiy
2019-09-20 14:20 ` [PATCH v13 04/15] block/backup: improve comment about image fleecing Vladimir Sementsov-Ogievskiy
2019-09-20 14:20 ` [PATCH v13 05/15] block/backup: introduce BlockCopyState Vladimir Sementsov-Ogievskiy
2019-09-20 14:20 ` [PATCH v13 06/15] block/backup: fix block-comment style Vladimir Sementsov-Ogievskiy
2019-09-20 14:20 ` [PATCH v13 07/15] block: move block_copy from block/backup.c to separate file Vladimir Sementsov-Ogievskiy
2019-09-20 14:20 ` [PATCH v13 08/15] block: teach bdrv_debug_breakpoint skip filters with backing Vladimir Sementsov-Ogievskiy
2019-09-20 14:20 ` [PATCH v13 09/15] iotests: prepare 124 and 257 bitmap querying for backup-top filter Vladimir Sementsov-Ogievskiy
2019-09-20 14:20 ` [PATCH v13 10/15] iotests: 257: drop unused Drive.device field Vladimir Sementsov-Ogievskiy
2019-09-20 14:20 ` [PATCH v13 11/15] iotests: 257: drop device_add Vladimir Sementsov-Ogievskiy
2019-09-20 14:20 ` [PATCH v13 12/15] block/io: refactor wait_serialising_requests Vladimir Sementsov-Ogievskiy
2019-09-20 14:20 ` [PATCH v13 13/15] block: add lock/unlock range functions Vladimir Sementsov-Ogievskiy
2019-09-20 14:20 ` [PATCH v13 14/15] block: introduce backup-top filter driver Vladimir Sementsov-Ogievskiy
2019-09-20 14:20 ` [PATCH v13 15/15] block/backup: use backup-top instead of write notifiers Vladimir Sementsov-Ogievskiy
2019-09-20 15:55 ` [PATCH v13 00/15] backup-top filter driver for backup Max Reitz
2019-09-20 16:01   ` Vladimir Sementsov-Ogievskiy
2019-09-20 16:13     ` John Snow
2019-09-25 16:58 ` [PATCH 16/15 v13] block/block-copy: fix block_copy Vladimir Sementsov-Ogievskiy
2019-09-25 19:19 ` Vladimir Sementsov-Ogievskiy [this message]
2019-09-25 19:28   ` [PATCH v13 00/15] backup-top filter driver for backup Vladimir Sementsov-Ogievskiy
2019-09-26 11:26     ` Max Reitz

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=9a0c66fe-f786-3f49-6fad-ffca04888659@virtuozzo.com \
    --to=vsementsov@virtuozzo.com \
    --cc=armbru@redhat.com \
    --cc=den@virtuozzo.com \
    --cc=fam@euphon.net \
    --cc=jsnow@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=mreitz@redhat.com \
    --cc=qemu-block@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    --cc=stefanha@redhat.com \
    --cc=wencongyang2@huawei.com \
    --cc=xiechanglong.d@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).