summaryrefslogtreecommitdiff
path: root/block
diff options
context:
space:
mode:
authorPaolo Bonzini <pbonzini@redhat.com>2011-10-05 09:12:06 +0200
committerKevin Wolf <kwolf@redhat.com>2011-11-04 16:27:07 +0100
commita36c7c132947f897322b0c26387845e2cd11586c (patch)
treef312a33ec09a380c30e9b5e97d108d9c08827e0a /block
parented7ee042d869c080bd9f12cd1eb242bec36c9977 (diff)
downloadqemu-a36c7c132947f897322b0c26387845e2cd11586c.tar.gz
qemu-a36c7c132947f897322b0c26387845e2cd11586c.tar.bz2
qemu-a36c7c132947f897322b0c26387845e2cd11586c.zip
vvfat: unify and correct computation of sector count
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 <pbonzini@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Diffstat (limited to 'block')
-rw-r--r--block/vvfat.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/block/vvfat.c b/block/vvfat.c
index 1f7cc48fe5..3e7b40786f 100644
--- a/block/vvfat.c
+++ b/block/vvfat.c
@@ -1026,8 +1026,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;
@@ -1035,9 +1033,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;