From nobody Sat Nov 29 10:48:49 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=adacore.com ARC-Seal: i=1; a=rsa-sha256; t=1764253565; cv=none; d=zohomail.com; s=zohoarc; b=K5JXOyjB1FH0MVDYOM8O4Mo/OgXB/EZ+Gdlkc3lliERBBpwj5lbsL6muqsbDsE2dRIUmv+3Z3TBQTaeyVY3ZUTuopzxigOiApP6Hct7nbkXS07HJ/AxRCSeP7xWazXbv/ywlzOaYeodXM8NFMzHPGWuD/ghm37JSNQsjr4cQtas= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1764253565; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=V6VrcdcLzzXZfY7cDeFmaKqwoc/P/gxx140XIDfVQGE=; b=JnCrWwTUbFYPoXgCmqVUBOXIR0Sgd0TYPYnSrUPe+dV6foDQ6hshWKds9A2++osYS18YxsvTJ2BXZi2uNwtlsTsR3CPSpAzDlNIrTcW2QzOaSLSDqRLGrIg1Vln03nOa8KX92srCWo4/MoFiNdq1G2BA4veMiNDTP62XtqJpLOE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1764253565415657.2184418969189; Thu, 27 Nov 2025 06:26:05 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vOcvA-0005re-F7; Thu, 27 Nov 2025 09:24:32 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vOcv8-0005iD-2H for qemu-devel@nongnu.org; Thu, 27 Nov 2025 09:24:30 -0500 Received: from mail-wr1-x42d.google.com ([2a00:1450:4864:20::42d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vOcv5-0006mh-Nm for qemu-devel@nongnu.org; Thu, 27 Nov 2025 09:24:29 -0500 Received: by mail-wr1-x42d.google.com with SMTP id ffacd0b85a97d-42b31507ed8so859746f8f.1 for ; Thu, 27 Nov 2025 06:24:27 -0800 (PST) Received: from chigot-Dell.. ([2a01:e0a:ca1:4970:e598:a2f0:7cc0:4392]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-42e1ca1a2easm4148996f8f.23.2025.11.27.06.24.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 27 Nov 2025 06:24:25 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=adacore.com; s=google; t=1764253466; x=1764858266; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=V6VrcdcLzzXZfY7cDeFmaKqwoc/P/gxx140XIDfVQGE=; b=P2iFht3cmVCPB3SS8JVXPbVR9Fofo7qDPSEnfxt6ImSTq+XuXp4VjdFwWekiFyRLLf oO8tf5tiC8SkXDdxsSM6VBQ0gryRuVHxCI12rOP0eCD91rb+fK0Fnv5GFRO7ZYccqVJa yYoBp/Aw2lCaymg4IX125OkvZG7sWjjnXc5v4r1meeSQKriQwkQkFxafvsX9vMU8HtoG E9WouszgCJ1fOQGVinGPUOv0WEodqark3mK5pi7SwTxu4i9PV8ozmHf4kZucnVhnZVK5 1sAD9Brt0TTjMhbEMS80Ke0Wer/C6xcxIzQlZihJOMTPM7GlJ8C9ipMu7oHqhfQ8EFvW XqqA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1764253466; x=1764858266; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=V6VrcdcLzzXZfY7cDeFmaKqwoc/P/gxx140XIDfVQGE=; b=Zd0LAl6ry2N3Iy8rEBb0hnW17Q1tURhyLSycjtdCyK/JaswgyrcJNWNr5/sdbI1AaW D3oqWcP41NzplW6FYzOYawecCVQuX1BxzXB6r+iTMSs/modftojXuVl0qykyoGnx0e2v 02xgxSR4f+rWS3WQ8NnQG2YoraV8QjJ1oNEr3VKU5q1SuEDosCwtdp/DZSeSyt5XHK28 jKiLVOGu1mmG0AEojyjnoAvWnKNGPTz/L0LK2nc2P+b34zBMqnoBi8UujPm1Ts/eHL3n mFLoogVM3zWMQNRud4yaIW/cN4fVmKL0U0Ci9gEAV0aaj++0GpWhRYyNSv9WrGX+5DR0 qFlg== X-Gm-Message-State: AOJu0Yy6Wp5Iz8AUniLDsFJdfvdBUxwOqVJBpc+R+J3+1id9U3pliNLJ HcDd1q3YT/RrSFXL+EtKEAdN6owz08aIOISk3MXTeThP5tCnve+Nu+2dqEU/IKFAfA== X-Gm-Gg: ASbGncu9YBoiPDrl7er81M0qPU+Bv7pt12njZoLR7/B4iHwUZkrQ23lF9zuPRur01B7 EvHarHymDMccCCQgVzwanFGDM9VbhNoldPBVsKqo/vo/8Gztq7+0gwHSAy+Y1dDpaCNUjl7S+rA HNZPr8pHDey6U+EiprEvzk9EwKJNiUC7f0U1NOqp7JoBKJx80keEHtgOCnVRMelAG1iy0rPNAuK zVBQCU9FWalH8owL/iO7vaOr3WlF+1UuXkDrKLk5665CxzOY8y0O1ar0ljtvR6VL4g/EPDspPj7 uuSIEloWXajjQ7A07MK4JQQ1dQAwxqet83NOmh1ntdGj9F9QHwbKYYPORO/CG/DI3JqdAIf3zNA Z1AullYNRxl9A8eBbAJ/nUxKe9cK+VXk5AkXOec2eYR68qqCG5UIM3xw6h/Kg08b8dKQUlrTQ3I LDHZF0nAssMT8D X-Google-Smtp-Source: AGHT+IEijdoH1Zm1vEUNN8clgPnF85kUIylmBhwWOeTRyNuXxr2FDDTlpmZ7yumJg9xOxYChzb99DQ== X-Received: by 2002:a05:6000:26c2:b0:42b:3746:3b82 with SMTP id ffacd0b85a97d-42e0f3623d5mr12422172f8f.54.1764253466214; Thu, 27 Nov 2025 06:24:26 -0800 (PST) From: =?UTF-8?q?Cl=C3=A9ment=20Chigot?= To: qemu-block@nongnu.org Cc: qemu-devel@nongnu.org, kwolf@redhat.com, hreitz@redhat.com, eblake@redhat.com, armbru@redhat.com, =?UTF-8?q?Cl=C3=A9ment=20Chigot?= Subject: [PATCH v3 3/5] vvfat: add a define for VVFAT_SECTOR_BITS and VVFAT_SECTOR_SIZE Date: Thu, 27 Nov 2025 15:24:15 +0100 Message-ID: <20251127142417.710094-4-chigot@adacore.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251127142417.710094-1-chigot@adacore.com> References: <20251127142417.710094-1-chigot@adacore.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::42d; envelope-from=chigot@adacore.com; helo=mail-wr1-x42d.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @adacore.com) X-ZM-MESSAGEID: 1764253566845019200 This removes some hardcoded 0x200 making them far clearer. This also renames some BDRV_SECTOR_* constants that were introduced during the transitions for sector-based to bytes-based block interfaces. While they have the same values, the BDRV_SECTOR_* constants are unrelated to the VVFAT sectors. Signed-off-by: Cl=C3=A9ment Chigot --- block/vvfat.c | 119 ++++++++++++++++++++++++++++---------------------- 1 file changed, 66 insertions(+), 53 deletions(-) diff --git a/block/vvfat.c b/block/vvfat.c index baf04e678b..6b038067a2 100644 --- a/block/vvfat.c +++ b/block/vvfat.c @@ -75,6 +75,9 @@ static void checkpoint(void); */ #define BOOTSECTOR_OEM_NAME "MSWIN4.1" =20 +#define VVFAT_SECTOR_BITS 9 +#define VVFAT_SECTOR_SIZE (1ULL << VVFAT_SECTOR_BITS) + #define DIR_DELETED 0xe5 #define DIR_KANJI DIR_DELETED #define DIR_KANJI_FAKE 0x05 @@ -300,7 +303,7 @@ static void print_mapping(const struct mapping_t* mappi= ng); typedef struct BDRVVVFATState { CoMutex lock; BlockDriverState* bs; /* pointer to parent */ - unsigned char first_sectors[0x40*0x200]; + unsigned char first_sectors[0x40 * VVFAT_SECTOR_SIZE]; =20 int fat_type; /* 16 or 32 */ array_t fat,directory,mapping; @@ -690,11 +693,11 @@ static inline void init_fat(BDRVVVFATState* s) if (s->fat_type =3D=3D 12) { array_init(&(s->fat),1); array_ensure_allocated(&(s->fat), - s->sectors_per_fat * 0x200 * 3 / 2 - 1); + s->sectors_per_fat * VVFAT_SECTOR_SIZE * 3 / 2 - 1); } else { array_init(&(s->fat),(s->fat_type=3D=3D32?4:2)); array_ensure_allocated(&(s->fat), - s->sectors_per_fat * 0x200 / s->fat.item_size - 1); + s->sectors_per_fat * VVFAT_SECTOR_SIZE / s->fat.item_size = - 1); } memset(s->fat.pointer,0,s->fat.size); =20 @@ -902,19 +905,19 @@ static int init_directories(BDRVVVFATState* s, unsigned int i; unsigned int cluster; =20 - memset(&(s->first_sectors[0]),0,0x40*0x200); + memset(&(s->first_sectors[0]), 0 , 0x40 * VVFAT_SECTOR_SIZE); =20 - s->cluster_size=3Ds->sectors_per_cluster*0x200; + s->cluster_size =3D s->sectors_per_cluster * VVFAT_SECTOR_SIZE; s->cluster_buffer=3Dg_malloc(s->cluster_size); =20 /* - * The formula: sc =3D spf+1+spf*spc*(512*8/fat_type), + * The formula: sc =3D spf+1+spf*spc*(VVFAT_SECTOR_SIZE*8/fat_type), * where sc is sector_count, * spf is sectors_per_fat, * spc is sectors_per_clusters, and * fat_type =3D 12, 16 or 32. */ - i =3D 1+s->sectors_per_cluster*0x200*8/s->fat_type; + i =3D 1 + s->sectors_per_cluster * VVFAT_SECTOR_SIZE * 8 / s->fat_type; s->sectors_per_fat=3D(s->sector_count+i)/i; /* round up */ =20 s->offset_to_fat =3D s->offset_to_bootsector + 1; @@ -1012,12 +1015,13 @@ static int init_directories(BDRVVVFATState* s, s->current_mapping =3D NULL; =20 bootsector =3D (bootsector_t *)(s->first_sectors - + s->offset_to_bootsector * 0x200); + + s->offset_to_bootsector + * VVFAT_SECTOR_SIZE); bootsector->jump[0]=3D0xeb; bootsector->jump[1]=3D0x3e; bootsector->jump[2]=3D0x90; memcpy(bootsector->name, BOOTSECTOR_OEM_NAME, 8); - bootsector->sector_size=3Dcpu_to_le16(0x200); + bootsector->sector_size =3D cpu_to_le16(VVFAT_SECTOR_SIZE); bootsector->sectors_per_cluster=3Ds->sectors_per_cluster; bootsector->reserved_sectors=3Dcpu_to_le16(1); bootsector->number_of_fats=3D0x2; /* number of FATs */ @@ -1310,7 +1314,7 @@ fail: =20 static void vvfat_refresh_limits(BlockDriverState *bs, Error **errp) { - bs->bl.request_alignment =3D BDRV_SECTOR_SIZE; /* No sub-sector I/O */ + bs->bl.request_alignment =3D VVFAT_SECTOR_SIZE; /* No sub-sector I/O */ } =20 static inline void vvfat_close_current_file(BDRVVVFATState *s) @@ -1496,21 +1500,23 @@ vvfat_read(BlockDriverState *bs, int64_t sector_num= , uint8_t *buf, int nb_sector if (s->qcow) { int64_t n; int ret; - ret =3D bdrv_co_is_allocated(s->qcow->bs, sector_num * BDRV_SE= CTOR_SIZE, - (nb_sectors - i) * BDRV_SECTOR_SIZE= , &n); + ret =3D bdrv_co_is_allocated(s->qcow->bs, + sector_num * VVFAT_SECTOR_SIZE, + (nb_sectors - i) * VVFAT_SECTOR_SIZ= E, + &n); if (ret < 0) { return ret; } if (ret) { DLOG(fprintf(stderr, "sectors %" PRId64 "+%" PRId64 " allocated\n", sector_num, - n >> BDRV_SECTOR_BITS)); - if (bdrv_co_pread(s->qcow, sector_num * BDRV_SECTOR_SIZE, = n, - buf + i * 0x200, 0) < 0) { + n >> VVFAT_SECTOR_BITS)); + if (bdrv_co_pread(s->qcow, sector_num * VVFAT_SECTOR_SIZE, + n, buf + i * VVFAT_SECTOR_SIZE, 0) < 0) { return -1; } - i +=3D (n >> BDRV_SECTOR_BITS) - 1; - sector_num +=3D (n >> BDRV_SECTOR_BITS) - 1; + i +=3D (n >> VVFAT_SECTOR_BITS) - 1; + sector_num +=3D (n >> VVFAT_SECTOR_BITS) - 1; continue; } DLOG(fprintf(stderr, "sector %" PRId64 " not allocated\n", @@ -1518,19 +1524,20 @@ vvfat_read(BlockDriverState *bs, int64_t sector_num= , uint8_t *buf, int nb_sector } if (sector_num < s->offset_to_root_dir) { if (sector_num < s->offset_to_fat) { - memcpy(buf + i * 0x200, - &(s->first_sectors[sector_num * 0x200]), - 0x200); + memcpy(buf + i * VVFAT_SECTOR_SIZE, + &(s->first_sectors[sector_num * VVFAT_SECTOR_SIZE]), + VVFAT_SECTOR_SIZE); } else if (sector_num < s->offset_to_fat + s->sectors_per_fat)= { - memcpy(buf + i * 0x200, - &(s->fat.pointer[(sector_num - - s->offset_to_fat) * 0x200]), - 0x200); + memcpy(buf + i * VVFAT_SECTOR_SIZE, + &(s->fat.pointer[(sector_num - s->offset_to_fat) + * VVFAT_SECTOR_SIZE]), + VVFAT_SECTOR_SIZE); } else if (sector_num < s->offset_to_root_dir) { - memcpy(buf + i * 0x200, + memcpy(buf + i * VVFAT_SECTOR_SIZE, &(s->fat.pointer[(sector_num - s->offset_to_fat - - s->sectors_per_fat) * 0x200]), - 0x200); + - s->sectors_per_fat) + * VVFAT_SECTOR_SIZE]), + VVFAT_SECTOR_SIZE); } } else { uint32_t sector =3D sector_num - s->offset_to_root_dir, @@ -1538,10 +1545,12 @@ vvfat_read(BlockDriverState *bs, int64_t sector_num= , uint8_t *buf, int nb_sector cluster_num=3Dsector/s->sectors_per_cluster; if(cluster_num > s->cluster_count || read_cluster(s, cluster_n= um) !=3D 0) { /* LATER TODO: strict: return -1; */ - memset(buf+i*0x200,0,0x200); + memset(buf + i * VVFAT_SECTOR_SIZE, 0, VVFAT_SECTOR_SIZE); continue; } - memcpy(buf+i*0x200,s->cluster+sector_offset_in_cluster*0x200,0= x200); + memcpy(buf + i * VVFAT_SECTOR_SIZE, + s->cluster + sector_offset_in_cluster * VVFAT_SECTOR_SI= ZE, + VVFAT_SECTOR_SIZE); } } return 0; @@ -1553,12 +1562,12 @@ vvfat_co_preadv(BlockDriverState *bs, int64_t offse= t, int64_t bytes, { int ret; BDRVVVFATState *s =3D bs->opaque; - uint64_t sector_num =3D offset >> BDRV_SECTOR_BITS; - int nb_sectors =3D bytes >> BDRV_SECTOR_BITS; + uint64_t sector_num =3D offset >> VVFAT_SECTOR_BITS; + int nb_sectors =3D bytes >> VVFAT_SECTOR_BITS; void *buf; =20 - assert(QEMU_IS_ALIGNED(offset, BDRV_SECTOR_SIZE)); - assert(QEMU_IS_ALIGNED(bytes, BDRV_SECTOR_SIZE)); + assert(QEMU_IS_ALIGNED(offset, VVFAT_SECTOR_SIZE)); + assert(QEMU_IS_ALIGNED(bytes, VVFAT_SECTOR_SIZE)); =20 buf =3D g_try_malloc(bytes); if (bytes && buf =3D=3D NULL) { @@ -1824,8 +1833,8 @@ cluster_was_modified(BDRVVVFATState *s, uint32_t clus= ter_num) for (i =3D 0; !was_modified && i < s->sectors_per_cluster; i++) { was_modified =3D bdrv_co_is_allocated(s->qcow->bs, (cluster2sector(s, cluster_num= ) + - i) * BDRV_SECTOR_SIZE, - BDRV_SECTOR_SIZE, NULL); + i) * VVFAT_SECTOR_SIZE, + VVFAT_SECTOR_SIZE, NULL); } =20 /* @@ -1979,8 +1988,8 @@ get_cluster_count_for_direntry(BDRVVVFATState* s, dir= entry_t* direntry, const ch int res; =20 res =3D bdrv_co_is_allocated(s->qcow->bs, - (offs + i) * BDRV_SECTOR_SI= ZE, - BDRV_SECTOR_SIZE, NULL); + (offs + i) * VVFAT_SECTOR_S= IZE, + VVFAT_SECTOR_SIZE, NULL); if (res < 0) { return -1; } @@ -1989,9 +1998,9 @@ get_cluster_count_for_direntry(BDRVVVFATState* s, dir= entry_t* direntry, const ch if (res) { return -1; } - res =3D bdrv_co_pwrite(s->qcow, offs * BDRV_SECTOR= _SIZE, - BDRV_SECTOR_SIZE, s->cluster_= buffer, - 0); + res =3D bdrv_co_pwrite(s->qcow, offs * VVFAT_SECTO= R_SIZE, + VVFAT_SECTOR_SIZE, + s->cluster_buffer, 0); if (res < 0) { return -2; } @@ -2169,7 +2178,7 @@ DLOG(checkpoint()); * - if all is fine, return number of used clusters */ if (s->fat2 =3D=3D NULL) { - int size =3D 0x200 * s->sectors_per_fat; + int size =3D VVFAT_SECTOR_SIZE * s->sectors_per_fat; s->fat2 =3D g_malloc(size); memcpy(s->fat2, s->fat.pointer, size); } @@ -2566,7 +2575,8 @@ commit_one_file(BDRVVVFATState* s, int dir_index, uin= t32_t offset) (size > offset && c >=3D2 && !fat_eof(s, c))); =20 ret =3D vvfat_read(s->bs, cluster2sector(s, c), - (uint8_t*)cluster, DIV_ROUND_UP(rest_size, 0x200)); + (uint8_t *)cluster, + DIV_ROUND_UP(rest_size, VVFAT_SECTOR_SIZE)); =20 if (ret < 0) { qemu_close(fd); @@ -2945,7 +2955,7 @@ static int coroutine_fn GRAPH_RDLOCK do_commit(BDRVVV= FATState* s) } =20 /* copy FAT (with bdrv_pread) */ - memcpy(s->fat.pointer, s->fat2, 0x200 * s->sectors_per_fat); + memcpy(s->fat.pointer, s->fat2, VVFAT_SECTOR_SIZE * s->sectors_per_fat= ); =20 /* recurse direntries from root (using bs->bdrv_pread) */ ret =3D commit_direntries(s, 0, -1); @@ -3009,14 +3019,15 @@ DLOG(checkpoint()); * used to mark volume dirtiness */ unsigned char *bootsector =3D s->first_sectors - + s->offset_to_bootsector * 0x200; + + s->offset_to_bootsector + * VVFAT_SECTOR_SIZE; /* * LATER TODO: if FAT32, this is wrong (see init_directories(), * which always creates a FAT16 bootsector) */ const int reserved1_offset =3D offsetof(bootsector_t, u.fat16.rese= rved1); =20 - for (i =3D 0; i < 0x200; i++) { + for (i =3D 0; i < VVFAT_SECTOR_SIZE; i++) { if (i !=3D reserved1_offset && bootsector[i] !=3D buf[i]) { fprintf(stderr, "Tried to write to protected bootsector\n"= ); return -1; @@ -3071,7 +3082,9 @@ DLOG(checkpoint()); end =3D sector_num + nb_sectors; dir_index =3D mapping->dir_index + 0x10 * (begin - mapping->begin * s->sectors_per_cluste= r); - direntries =3D (direntry_t*)(buf + 0x200 * (begin - sector= _num)); + direntries =3D + (direntry_t *)(buf + VVFAT_SECTOR_SIZE + * (begin - sector_num)); =20 for (k =3D 0; k < (end - begin) * 0x10; k++) { /* no access to the direntry of a read-only file */ @@ -3097,8 +3110,8 @@ DLOG(checkpoint()); * Use qcow backend. Commit later. */ DLOG(fprintf(stderr, "Write to qcow backend: %d + %d\n", (int)sector_num, = nb_sectors)); - ret =3D bdrv_co_pwrite(s->qcow, sector_num * BDRV_SECTOR_SIZE, - nb_sectors * BDRV_SECTOR_SIZE, buf, 0); + ret =3D bdrv_co_pwrite(s->qcow, sector_num * VVFAT_SECTOR_SIZE, + nb_sectors * VVFAT_SECTOR_SIZE, buf, 0); if (ret < 0) { fprintf(stderr, "Error writing to qcow backend\n"); return ret; @@ -3124,12 +3137,12 @@ vvfat_co_pwritev(BlockDriverState *bs, int64_t offs= et, int64_t bytes, { int ret; BDRVVVFATState *s =3D bs->opaque; - uint64_t sector_num =3D offset >> BDRV_SECTOR_BITS; - int nb_sectors =3D bytes >> BDRV_SECTOR_BITS; + uint64_t sector_num =3D offset >> VVFAT_SECTOR_BITS; + int nb_sectors =3D bytes >> VVFAT_SECTOR_BITS; void *buf; =20 - assert(QEMU_IS_ALIGNED(offset, BDRV_SECTOR_SIZE)); - assert(QEMU_IS_ALIGNED(bytes, BDRV_SECTOR_SIZE)); + assert(QEMU_IS_ALIGNED(offset, VVFAT_SECTOR_SIZE)); + assert(QEMU_IS_ALIGNED(bytes, VVFAT_SECTOR_SIZE)); =20 buf =3D g_try_malloc(bytes); if (bytes && buf =3D=3D NULL) { @@ -3195,7 +3208,7 @@ static int enable_write_target(BlockDriverState *bs, = Error **errp) =20 opts =3D qemu_opts_create(bdrv_qcow->create_opts, NULL, 0, &error_abor= t); qemu_opt_set_number(opts, BLOCK_OPT_SIZE, - bs->total_sectors * BDRV_SECTOR_SIZE, &error_abort= ); + bs->total_sectors * VVFAT_SECTOR_SIZE, &error_abor= t); qemu_opt_set(opts, BLOCK_OPT_BACKING_FILE, "fat:", &error_abort); =20 ret =3D bdrv_create(bdrv_qcow, s->qcow_filename, opts, errp); --=20 2.43.0