[rtems commit] dosfs: Fix format request with sectors per cluster

Sebastian Huber sebh at rtems.org
Thu May 31 11:47:43 UTC 2012


Module:    rtems
Branch:    master
Commit:    53f2ca3be67186a8a99a8d819640e1141e2efbff
Changeset: http://git.rtems.org/rtems/commit/?id=53f2ca3be67186a8a99a8d819640e1141e2efbff

Author:    Sebastian Huber <sebastian.huber at embedded-brains.de>
Date:      Thu May 31 13:50:08 2012 +0200

dosfs: Fix format request with sectors per cluster

---

 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 9af86b7..305cec9 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;




More information about the vc mailing list