diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2012-05-31 13:51:41 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2012-05-31 13:51:41 +0200 |
commit | 6b24b881239e6bebea49656888637f4789456c25 (patch) | |
tree | 3834cada3bd776077430a02c4565cf1416fa812c | |
parent | Merge branch 'upstream' (diff) | |
parent | dosfs: Fix format request with sectors per cluster (diff) | |
download | rtems-6b24b881239e6bebea49656888637f4789456c25.tar.bz2 |
Merge branch 'upstream'
-rw-r--r-- | cpukit/libfs/src/dosfs/msdos_format.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/cpukit/libfs/src/dosfs/msdos_format.c b/cpukit/libfs/src/dosfs/msdos_format.c index 9af86b7d62..305cec9596 100644 --- a/cpukit/libfs/src/dosfs/msdos_format.c +++ b/cpukit/libfs/src/dosfs/msdos_format.c @@ -484,14 +484,22 @@ static int msdos_format_determine_fmt_params * NOTE: maximum sect_per_clust is arbitrarily choosen with values that * are a compromise concerning capacity and efficency */ + uint32_t fat12_sect_per_clust = 8; + uint32_t fat16_sect_per_clust = 32; + + if (rqdata != NULL && rqdata->sectors_per_cluster != 0) { + fat12_sect_per_clust = rqdata->sectors_per_cluster; + fat16_sect_per_clust = rqdata->sectors_per_cluster; + } + if (fmt_params->totl_sector_cnt - < ((uint32_t)FAT_FAT12_MAX_CLN)*8) { + < FAT_FAT12_MAX_CLN * fat12_sect_per_clust) { fmt_params->fattype = FAT_FAT12; /* start trying with small clusters */ fmt_params->sectors_per_cluster = 2; } else if (fmt_params->totl_sector_cnt - < ((uint32_t)FAT_FAT16_MAX_CLN)*32) { + < FAT_FAT16_MAX_CLN * fat16_sect_per_clust) { fmt_params->fattype = FAT_FAT16; /* start trying with small clusters */ fmt_params->sectors_per_cluster = 2; |