qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Mike Maslenkin <mike.maslenkin@gmail.com>
To: Alexander Ivanov <alexander.ivanov@virtuozzo.com>
Cc: qemu-devel@nongnu.org, qemu-block@nongnu.org, den@virtuozzo.com,
	 stefanha@redhat.com, vsementsov@yandex-team.ru,
	kwolf@redhat.com,  hreitz@redhat.com
Subject: Re: [PATCH v2 09/20] parallels: Make mark_used() and mark_unused() global functions
Date: Sat, 21 Oct 2023 16:29:42 +0300	[thread overview]
Message-ID: <CAL77WPCgQNFTiGqJ=dJNNa1qYGYZOtp2LoM7CtKj50_=UvKKQg@mail.gmail.com> (raw)
In-Reply-To: <20231019125854.390385-10-alexander.ivanov@virtuozzo.com>

On Thu, Oct 19, 2023 at 5:23 PM Alexander Ivanov
<alexander.ivanov@virtuozzo.com> wrote:
>
> We will need these functions in parallels-ext.c too. Let them be global
> functions parallels_mark_used() and parallels_mark_unused().
>
> Signed-off-by: Alexander Ivanov <alexander.ivanov@virtuozzo.com>
> ---
>  block/parallels.c | 22 ++++++++++++----------
>  block/parallels.h |  5 +++++
>  2 files changed, 17 insertions(+), 10 deletions(-)
>
> diff --git a/block/parallels.c b/block/parallels.c
> index a22ab7f2fc..2ee2b42038 100644
> --- a/block/parallels.c
> +++ b/block/parallels.c
> @@ -178,8 +178,8 @@ static void parallels_set_bat_entry(BDRVParallelsState *s,
>      bitmap_set(s->bat_dirty_bmap, bat_entry_off(index) / s->bat_dirty_block, 1);
>  }
>
> -static int mark_used(BlockDriverState *bs, unsigned long *bitmap,
> -                     uint32_t bitmap_size, int64_t off, uint32_t count)
> +int parallels_mark_used(BlockDriverState *bs, unsigned long *bitmap,
> +                        uint32_t bitmap_size, int64_t off, uint32_t count)
>  {
>      BDRVParallelsState *s = bs->opaque;
>      uint32_t cluster_index = host_cluster_index(s, off);
> @@ -195,8 +195,8 @@ static int mark_used(BlockDriverState *bs, unsigned long *bitmap,
>      return 0;
>  }
>
> -static int mark_unused(BlockDriverState *bs, unsigned long *bitmap,
> -                       uint32_t bitmap_size, int64_t off, uint32_t count)
> +int parallels_mark_unused(BlockDriverState *bs, unsigned long *bitmap,
> +                          uint32_t bitmap_size, int64_t off, uint32_t count)
>  {
>      BDRVParallelsState *s = bs->opaque;
>      uint32_t cluster_index = host_cluster_index(s, off);
> @@ -249,7 +249,8 @@ static int parallels_fill_used_bitmap(BlockDriverState *bs)
>              continue;
>          }
>
> -        err2 = mark_used(bs, s->used_bmap, s->used_bmap_size, host_off, 1);
> +        err2 = parallels_mark_used(bs, s->used_bmap, s->used_bmap_size,
> +                                   host_off, 1);
>          if (err2 < 0 && err == 0) {
>              err = err2;
>          }
> @@ -326,7 +327,8 @@ int64_t parallels_allocate_host_clusters(BlockDriverState *bs,
>          }
>      }
>
> -    ret = mark_used(bs, s->used_bmap, s->used_bmap_size, host_off, *clusters);
> +    ret = parallels_mark_used(bs, s->used_bmap, s->used_bmap_size,
> +                              host_off, *clusters);
>      if (ret < 0) {
>          /* Image consistency is broken. Alarm! */
>          return ret;
> @@ -393,8 +395,8 @@ allocate_clusters(BlockDriverState *bs, int64_t sector_num,
>
>          qemu_vfree(buf);
>          if (ret < 0) {
> -            mark_unused(bs, s->used_bmap, s->used_bmap_size,
> -                        host_off, to_allocate);
> +            parallels_mark_unused(bs, s->used_bmap, s->used_bmap_size,
> +                                  host_off, to_allocate);
>              return ret;
>          }
>      }
> @@ -868,7 +870,7 @@ parallels_check_duplicate(BlockDriverState *bs, BdrvCheckResult *res,
>              continue;
>          }
>
> -        ret = mark_used(bs, bitmap, bitmap_size, host_off, 1);
> +        ret = parallels_mark_used(bs, bitmap, bitmap_size, host_off, 1);
>          assert(ret != -E2BIG);
>          if (ret == 0) {
>              continue;
> @@ -928,7 +930,7 @@ parallels_check_duplicate(BlockDriverState *bs, BdrvCheckResult *res,
>           * considered, and the bitmap size doesn't change. This specifically
>           * means that -E2BIG is OK.
>           */
> -        ret = mark_used(bs, bitmap, bitmap_size, host_off, 1);
> +        ret = parallels_mark_used(bs, bitmap, bitmap_size, host_off, 1);
>          if (ret == -EBUSY) {
>              res->check_errors++;
>              goto out_repair_bat;
> diff --git a/block/parallels.h b/block/parallels.h
> index 3e4f397502..4e7aa6b80f 100644
> --- a/block/parallels.h
> +++ b/block/parallels.h
> @@ -90,6 +90,11 @@ typedef struct BDRVParallelsState {
>      Error *migration_blocker;
>  } BDRVParallelsState;
>
> +int parallels_mark_used(BlockDriverState *bs, unsigned long *bitmap,
> +                        uint32_t bitmap_size, int64_t off, uint32_t count);
> +int parallels_mark_unused(BlockDriverState *bs, unsigned long *bitmap,
> +                          uint32_t bitmap_size, int64_t off, uint32_t count);
> +
>  int64_t parallels_allocate_host_clusters(BlockDriverState *bs,
>                                           int64_t *clusters);
>
> --
> 2.34.1
>
>

Just a note: parallels_mark_unused() could be initially declared as
global just because after patch 3/20 there can be compilation warning:
warning: unused function 'mark_unused' [-Wunused-function]
:)

I do not have strong opinion about how to avoid such compilation
warning in the middle of the patch series.
The simplest and straightforward way is to declare this function as
static in patch 4.

I do not have any other objections for the series except misplaced
NULL assignment.

Regards,
Mike.


  reply	other threads:[~2023-10-21 13:31 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-10-19 12:58 [PATCH v2 00/20] parallels: Add full dirty bitmap support Alexander Ivanov
2023-10-19 12:58 ` [PATCH v2 01/20] parallels: Set s->used_bmap to NULL in parallels_free_used_bitmap() Alexander Ivanov
2023-10-21 10:40   ` Mike Maslenkin
2023-10-24 10:29     ` Alexander Ivanov
2023-10-19 12:58 ` [PATCH v2 02/20] parallels: Move inactivation code to a separate function Alexander Ivanov
2023-10-19 12:58 ` [PATCH v2 03/20] parallels: Add mark_unused() helper Alexander Ivanov
2023-10-19 12:58 ` [PATCH v2 04/20] parallels: Move host clusters allocation to a separate function Alexander Ivanov
2023-10-19 12:58 ` [PATCH v2 05/20] parallels: Set data_end value in parallels_check_leak() Alexander Ivanov
2023-10-19 12:58 ` [PATCH v2 06/20] parallels: Recreate used bitmap " Alexander Ivanov
2023-10-19 12:58 ` [PATCH v2 07/20] parallels: Add a note about used bitmap in parallels_check_duplicate() Alexander Ivanov
2023-10-19 12:58 ` [PATCH v2 08/20] parallels: Create used bitmap even if checks needed Alexander Ivanov
2023-10-19 12:58 ` [PATCH v2 09/20] parallels: Make mark_used() and mark_unused() global functions Alexander Ivanov
2023-10-21 13:29   ` Mike Maslenkin [this message]
2023-10-24 10:31     ` Alexander Ivanov
2023-10-19 12:58 ` [PATCH v2 10/20] parallels: Add dirty bitmaps saving Alexander Ivanov
2023-10-21 10:40   ` Mike Maslenkin
2023-10-23 10:03     ` Alexander Ivanov
2023-10-19 12:58 ` [PATCH v2 11/20] parallels: Let image extensions work in RW mode Alexander Ivanov
2023-10-19 12:58 ` [PATCH v2 12/20] parallels: Handle L1 entries equal to one Alexander Ivanov
2023-10-19 12:58 ` [PATCH v2 13/20] parallels: Make a loaded dirty bitmap persistent Alexander Ivanov
2023-10-19 12:58 ` [PATCH v2 14/20] parallels: Reverse a conditional in parallels_check_leak() to reduce indents Alexander Ivanov
2023-10-19 12:58 ` [PATCH v2 15/20] parallels: Truncate images on the last used cluster Alexander Ivanov
2023-10-19 12:58 ` [PATCH v2 16/20] parallels: Check unused clusters in parallels_check_leak() Alexander Ivanov
2023-10-19 12:58 ` [PATCH v2 17/20] parallels: Remove unnecessary data_end field Alexander Ivanov
2023-10-19 12:58 ` [PATCH v2 18/20] tests: Add parallels images support to test 165 Alexander Ivanov
2023-10-19 12:58 ` [PATCH v2 19/20] tests: Turned on 256, 299, 304 and block-status-cache for parallels format Alexander Ivanov
2023-10-19 12:58 ` [PATCH v2 20/20] tests: Add parallels format support to image-fleecing Alexander Ivanov

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='CAL77WPCgQNFTiGqJ=dJNNa1qYGYZOtp2LoM7CtKj50_=UvKKQg@mail.gmail.com' \
    --to=mike.maslenkin@gmail.com \
    --cc=alexander.ivanov@virtuozzo.com \
    --cc=den@virtuozzo.com \
    --cc=hreitz@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=qemu-block@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    --cc=stefanha@redhat.com \
    --cc=vsementsov@yandex-team.ru \
    /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).