aboutsummaryrefslogtreecommitdiff
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
commit5a742b55576c044a6fe07b42937272e553503ddd (patch)
treef312a33ec09a380c30e9b5e97d108d9c08827e0a
parentaad37c06dda2cd6ab950648435b24ef7776574b0 (diff)
downloadqemu-5a742b55576c044a6fe07b42937272e553503ddd.zip
qemu-5a742b55576c044a6fe07b42937272e553503ddd.tar.gz
qemu-5a742b55576c044a6fe07b42937272e553503ddd.tar.bz2
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>
-rw-r--r--block/vvfat.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/block/vvfat.c b/block/vvfat.c
index 1f7cc48..3e7b407 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;