From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:56109) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RBLeM-0005Ua-0Y for qemu-devel@nongnu.org; Wed, 05 Oct 2011 03:12:22 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RBLeK-0005Mv-QH for qemu-devel@nongnu.org; Wed, 05 Oct 2011 03:12:17 -0400 Received: from mail-wy0-f173.google.com ([74.125.82.173]:40277) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RBLeK-0005Je-CP for qemu-devel@nongnu.org; Wed, 05 Oct 2011 03:12:16 -0400 Received: by mail-wy0-f173.google.com with SMTP id 22so1502868wyh.4 for ; Wed, 05 Oct 2011 00:12:16 -0700 (PDT) Sender: Paolo Bonzini From: Paolo Bonzini Date: Wed, 5 Oct 2011 09:12:06 +0200 Message-Id: <1317798728-28938-5-git-send-email-pbonzini@redhat.com> In-Reply-To: <1317798728-28938-1-git-send-email-pbonzini@redhat.com> References: <1317798728-28938-1-git-send-email-pbonzini@redhat.com> Subject: [Qemu-devel] [PATCH 4/6] vvfat: unify and correct computation of sector count List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org The sector count is stored in the partition and hence must not include the sectors before its start. At the same time, remove the useless special casing for 1.44 MB floppies. This fixes fsck on VVFAT hard disks, which otherwise tries to seek past the end of the disk. Signed-off-by: Paolo Bonzini --- block/vvfat.c | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-) diff --git a/block/vvfat.c b/block/vvfat.c index eb91642..a682eae 100644 --- a/block/vvfat.c +++ b/block/vvfat.c @@ -1040,8 +1040,6 @@ DLOG(if (stderr == NULL) { bs->cyls = 80; bs->heads = 2; bs->secs = 36; } - s->sector_count=bs->cyls*bs->heads*bs->secs; - if (strstr(dirname, ":32:")) { fprintf(stderr, "Big fat greek warning: FAT32 has not been tested. You are welcome to do so!\n"); s->fat_type = 32; @@ -1049,9 +1047,11 @@ DLOG(if (stderr == NULL) { s->fat_type = 16; } else if (strstr(dirname, ":12:")) { s->fat_type = 12; - s->sector_count=2880; + bs->secs = 18; } + s->sector_count=bs->cyls*bs->heads*bs->secs-(s->first_sectors_number-1); + if (strstr(dirname, ":rw:")) { if (enable_write_target(s)) return -1; -- 1.7.6