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>
This commit is contained in:
parent
aad37c06dd
commit
5a742b5557
@ -1026,8 +1026,6 @@ DLOG(if (stderr == NULL) {
|
|||||||
bs->cyls = 80; bs->heads = 2; bs->secs = 36;
|
bs->cyls = 80; bs->heads = 2; bs->secs = 36;
|
||||||
}
|
}
|
||||||
|
|
||||||
s->sector_count=bs->cyls*bs->heads*bs->secs;
|
|
||||||
|
|
||||||
if (strstr(dirname, ":32:")) {
|
if (strstr(dirname, ":32:")) {
|
||||||
fprintf(stderr, "Big fat greek warning: FAT32 has not been tested. You are welcome to do so!\n");
|
fprintf(stderr, "Big fat greek warning: FAT32 has not been tested. You are welcome to do so!\n");
|
||||||
s->fat_type = 32;
|
s->fat_type = 32;
|
||||||
@ -1035,9 +1033,11 @@ DLOG(if (stderr == NULL) {
|
|||||||
s->fat_type = 16;
|
s->fat_type = 16;
|
||||||
} else if (strstr(dirname, ":12:")) {
|
} else if (strstr(dirname, ":12:")) {
|
||||||
s->fat_type = 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 (strstr(dirname, ":rw:")) {
|
||||||
if (enable_write_target(s))
|
if (enable_write_target(s))
|
||||||
return -1;
|
return -1;
|
||||||
|
Loading…
Reference in New Issue
Block a user