From nobody Sat Sep 6 17:19:46 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=1756886354; cv=none; d=zohomail.com; s=zohoarc; b=AR4JE6Svqd8G6AC58XADGpG9TEpCdD+F/K1upDRZN/3MPh9kEAghFNt6u7Bl2vOMU4V+l7Mxa1cB/bE3oW8jsZztzMVjf3U+QzFDahDcryr0zQHoI6MJ/5Oa8HIip7KpyLb4On9l4+deRrxkjZFmWy+PvYfnhNn4K0QcRGEgXKQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756886354; 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=LKDt9NbbQt4YL2i2ghhzO4DBHVA7LMjZYIaUTZlT55U=; b=KzV3pxDyFViB0H7ii2z+oJ6TljMmnoQFxQonGad2WNsukQmF8V7ofPcTvcg0rAz9iXT6N2SFd6K3M++1lDM9W6QmqdzW+3ZpGFuou2wjxHmXOXHiCrBsJnwJDHX/SrE5+huRFSCNuEq4adBde06UpIfQT6G9L2QYWohmOZW5Fuc= 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 1756886354714508.24583498098775; Wed, 3 Sep 2025 00:59:14 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1utiNc-0006sm-3C; Wed, 03 Sep 2025 03:58:08 -0400 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 1utiNK-0006h8-43 for qemu-devel@nongnu.org; Wed, 03 Sep 2025 03:57:51 -0400 Received: from mail-wr1-x431.google.com ([2a00:1450:4864:20::431]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1utiNG-0005N7-E9 for qemu-devel@nongnu.org; Wed, 03 Sep 2025 03:57:49 -0400 Received: by mail-wr1-x431.google.com with SMTP id ffacd0b85a97d-3d1bf79d7acso2298680f8f.0 for ; Wed, 03 Sep 2025 00:57:44 -0700 (PDT) Received: from chigot-Dell.home ([2a01:cb15:80db:7c00:8880:8b9d:ac82:8ac6]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-45b7e7d2393sm227923335e9.3.2025.09.03.00.57.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 03 Sep 2025 00:57:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=adacore.com; s=google; t=1756886263; x=1757491063; 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=LKDt9NbbQt4YL2i2ghhzO4DBHVA7LMjZYIaUTZlT55U=; b=MoiIKnXoETPkKwjp/Z+DRaPf2FuteV+FrB682JpLlXcx3kwCtYmymkMG6+l/r/2b1K i9ocEfiBceNgieob4LcfeXLZQAg6QB9F6ZkC3ZcjHS1o9vfLoIrf8HBHeH0/iSbxy8Mj H6mT9audAfZfadm9q03vNDZ/WHaktrJduxQIUed+F9Xnc0H7oSrv3NT5fzp3QDY1n/lu K7VvGXiyzPQ+f/i3kv/jW90QNb87LZ41RtmuVBd8qzF0YdYuXPkJh52ZedK5k69wLZeu TFWc/+ZGmfX8RkLNJo/ZtvQL6y1GhzP686iUYmMgGz9v+/2Pi/K+vGMAc3fqUc05Tzfe UaAA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756886263; x=1757491063; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=LKDt9NbbQt4YL2i2ghhzO4DBHVA7LMjZYIaUTZlT55U=; b=iZESc0mzNA0vElIzezmZhdQfUYK6g/VgrVt1fc3FEAITq2RlRmwzGJen90uZyB8Q0k J12yrPrN1R9WJXu/uGdhZaN1sBx+4Ueh87sbOEUh3CriVHiPT+5QvrMXGawAHwn2pPoa XIQL75Fcarp+HefIiq6JdAT5LBEXtfkUueQHU5lG7gaFV0c/fmhQ4OQHSg+Xh1yp/vi2 GsXx60Rf0XEF2z1mzcHNJ8zfALR+iRoaKq96ATfL9PjiJKYTOgN5PKABtPyVP27EaDUb DaDpB27tKFYx4QTB8C6wwB2CPMT+E1Uq0+UUw32kffU2fr4RNzKj3xggmHbgxh4PecGY bdOQ== X-Gm-Message-State: AOJu0YysMmn2w2BQminb5e88o2IpH9NTrbU6vg7KJbKz1GfvJIfreXkP 3bAydPUJK1k9AS0MxAoOErIZf7Nk4E3S6aMGg6IXbJCjJzNTm5lmhYKAapYSGxbcM1kPFBi6oA4 Rp1U= X-Gm-Gg: ASbGncv5FORqTapSTVGycVB90wYWCqwXWWQjETaOl+eQADQ7vUlm6CjAmKL5NKXmUg8 wujbZcTEBnLMV5lumuZlSkZ8CErY3PcG71OSoRVgbbxBr6cMd2VaaMqcb/g9s/aoH3VOWh/lggq tIKAV1tORs+LVSuB0iCZAkvyRVtIEvE8HYK/qMQQbSwIRBaiqxx0zVwsF6XOXMGjvHQ0HByRjci CTx5y9tugwc+SMblRGut2H8aVfn28Dl3aT7N2jR9PVIZf7ZCmZZ5AuBW8BHeZL1umGiM8nxeov/ MuhqZ1m+1oYV1A16mvSZuQlfmjL9+xqAQLhjZeJ5SOxof5+DTwKgm1Dn8VAvMK/mad5ijHEYm6c JgW3GlumN5fYDIfnM660O/3oZoX26KuYc9e2adaqVZQ== X-Google-Smtp-Source: AGHT+IEhtyqWymREAN5C48vsH4ddzrdoo+5K6a4GShj3M7XfKLyMmdxw1qJc1G6ITMRodDyYlYjL1A== X-Received: by 2002:a05:6000:420e:b0:3c9:f8a:f257 with SMTP id ffacd0b85a97d-3d1e05b5facmr11247699f8f.50.1756886262858; Wed, 03 Sep 2025 00:57:42 -0700 (PDT) From: =?UTF-8?q?Cl=C3=A9ment=20Chigot?= To: qemu-devel@nongnu.org Cc: kwolf@redhat.com, hreitz@redhat.com, qemu-block@nongnu.org, =?UTF-8?q?Cl=C3=A9ment=20Chigot?= Subject: [PATCH 3/5] vvfat: add a define for SECTOR_SIZE Date: Wed, 3 Sep 2025 09:57:19 +0200 Message-Id: <20250903075721.77623-4-chigot@adacore.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250903075721.77623-1-chigot@adacore.com> References: <20250903075721.77623-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::431; envelope-from=chigot@adacore.com; helo=mail-wr1-x431.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=unavailable 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: 1756886357300124100 This makes those 0x200 far clearer. Signed-off-by: Cl=C3=A9ment Chigot --- block/vvfat.c | 60 ++++++++++++++++++++++++++++----------------------- 1 file changed, 33 insertions(+), 27 deletions(-) diff --git a/block/vvfat.c b/block/vvfat.c index 91e4ad3158..6b6d158a18 100644 --- a/block/vvfat.c +++ b/block/vvfat.c @@ -75,6 +75,8 @@ static void checkpoint(void); */ #define BOOTSECTOR_OEM_NAME "MSWIN4.1" =20 +#define SECTOR_SIZE 0x200 + #define DIR_DELETED 0xe5 #define DIR_KANJI DIR_DELETED #define DIR_KANJI_FAKE 0x05 @@ -300,7 +302,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 * SECTOR_SIZE]; =20 int fat_type; /* 16 or 32 */ array_t fat,directory,mapping; @@ -689,11 +691,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 * 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 * SECTOR_SIZE / s->fat.item_size - 1); } memset(s->fat.pointer,0,s->fat.size); =20 @@ -901,19 +903,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 * SECTOR_SIZE); =20 - s->cluster_size=3Ds->sectors_per_cluster*0x200; + s->cluster_size =3D s->sectors_per_cluster * 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*(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 * 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; @@ -1011,12 +1013,12 @@ 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 * 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(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 */ @@ -1513,7 +1515,7 @@ vvfat_read(BlockDriverState *bs, int64_t sector_num, = uint8_t *buf, int nb_sector " 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) { + buf + i * SECTOR_SIZE, 0) < 0) { return -1; } i +=3D (n >> BDRV_SECTOR_BITS) - 1; @@ -1525,19 +1527,19 @@ 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 * SECTOR_SIZE, + &(s->first_sectors[sector_num * SECTOR_SIZE]), + SECTOR_SIZE); } else if (sector_num < s->offset_to_fat + s->sectors_per_fat)= { - memcpy(buf + i * 0x200, + memcpy(buf + i * SECTOR_SIZE, &(s->fat.pointer[(sector_num - - s->offset_to_fat) * 0x200]), - 0x200); + - s->offset_to_fat) * SECTOR_SIZE]), + SECTOR_SIZE); } else if (sector_num < s->offset_to_root_dir) { - memcpy(buf + i * 0x200, + memcpy(buf + i * SECTOR_SIZE, &(s->fat.pointer[(sector_num - s->offset_to_fat - - s->sectors_per_fat) * 0x200]), - 0x200); + - s->sectors_per_fat) * SECTOR_SIZE= ]), + SECTOR_SIZE); } } else { uint32_t sector =3D sector_num - s->offset_to_root_dir, @@ -1545,10 +1547,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 * SECTOR_SIZE, 0, SECTOR_SIZE); continue; } - memcpy(buf+i*0x200,s->cluster+sector_offset_in_cluster*0x200,0= x200); + memcpy(buf + i * SECTOR_SIZE, + s->cluster + sector_offset_in_cluster * SECTOR_SIZE, + SECTOR_SIZE); } } return 0; @@ -2176,7 +2180,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 SECTOR_SIZE * s->sectors_per_fat; s->fat2 =3D g_malloc(size); memcpy(s->fat2, s->fat.pointer, size); } @@ -2573,7 +2577,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, SECTOR_SIZE)); =20 if (ret < 0) { qemu_close(fd); @@ -2952,7 +2957,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, SECTOR_SIZE * s->sectors_per_fat); =20 /* recurse direntries from root (using bs->bdrv_pread) */ ret =3D commit_direntries(s, 0, -1); @@ -3016,14 +3021,14 @@ DLOG(checkpoint()); * used to mark volume dirtiness */ unsigned char *bootsector =3D s->first_sectors - + s->offset_to_bootsector * 0x200; + + s->offset_to_bootsector * SECTOR_SIZ= E; /* * 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 < SECTOR_SIZE; i++) { if (i !=3D reserved1_offset && bootsector[i] !=3D buf[i]) { fprintf(stderr, "Tried to write to protected bootsector\n"= ); return -1; @@ -3078,7 +3083,8 @@ 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 + 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 */ --=20 2.34.1