Applying Gentoos dosfstools-2.11-fat32size.patch from Mike Frysinger

<vapier@gentoo.org> to fix generation of filesystems on 256meg devices:

  * Fix generation of FAT filesystems on devices that are 256meg in size
    Patch by Ulrich Mueller and accepted upstream
    http://bugs.gentoo.org/112504

Signed-off-by: Daniel Baumann <mail@daniel-baumann.ch>
This commit is contained in:
Daniel Baumann 2008-09-26 15:33:36 +02:00
parent a6dc6a4d4b
commit e670ea82c9

View File

@ -764,18 +764,19 @@ establish_params (int device_num,int size)
size_fat = 32;
}
if (size_fat == 32) {
/* For FAT32, try to do the same as M$'s format command:
* fs size < 256M: 0.5k clusters
* fs size < 8G: 4k clusters
* fs size < 16G: 8k clusters
* fs size >= 16G: 16k clusters
/* For FAT32, try to do the same as M$'s format command
* (see http://www.win.tue.nl/~aeb/linux/fs/fat/fatgen103.pdf p. 20):
* fs size <= 260M: 0.5k clusters
* fs size <= 8G: 4k clusters
* fs size <= 16G: 8k clusters
* fs size > 16G: 16k clusters
*/
unsigned long sz_mb =
(blocks+(1<<(20-BLOCK_SIZE_BITS))-1) >> (20-BLOCK_SIZE_BITS);
bs.cluster_size = sz_mb >= 16*1024 ? 32 :
sz_mb >= 8*1024 ? 16 :
sz_mb >= 256 ? 8 :
1;
bs.cluster_size = sz_mb > 16*1024 ? 32 :
sz_mb > 8*1024 ? 16 :
sz_mb > 260 ? 8 :
1;
}
else {
/* FAT12 and FAT16: start at 4 sectors per cluster */
@ -1031,6 +1032,8 @@ setup_tables (void)
break;
case 32:
if (clust32 < MIN_CLUST_32)
fprintf(stderr, "WARNING: Not enough clusters for a 32 bit FAT!\n");
cluster_count = clust32;
fat_length = fatlength32;
bs.fat_length = CT_LE_W(0);