]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
disk: Replace code that calculates the log of sector size with grub_log2ull()
authorGlenn Washburn <development@efficientek.com>
Thu, 9 Jun 2022 16:48:29 +0000 (11:48 -0500)
committerDaniel Kiper <daniel.kiper@oracle.com>
Mon, 4 Jul 2022 12:43:26 +0000 (14:43 +0200)
Signed-off-by: Glenn Washburn <development@efficientek.com>
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
17 files changed:
grub-core/disk/ata.c
grub-core/disk/efi/efidisk.c
grub-core/disk/geli.c
grub-core/disk/i386/pc/biosdisk.c
grub-core/disk/ieee1275/obdisk.c
grub-core/disk/ieee1275/ofdisk.c
grub-core/disk/scsi.c
grub-core/disk/uboot/ubootdisk.c
grub-core/disk/xen/xendisk.c
grub-core/osdep/apple/hostdisk.c
grub-core/osdep/aros/hostdisk.c
grub-core/osdep/bsd/hostdisk.c
grub-core/osdep/freebsd/hostdisk.c
grub-core/osdep/hurd/hostdisk.c
grub-core/osdep/linux/hostdisk.c
grub-core/osdep/sun/hostdisk.c
grub-core/osdep/windows/hostdisk.c

index 8a96b854bd28df9e5962b46d7f4edac75fd490d0..7b6ac7bfc708fb1216120d5f62ddcff3acc5f838 100644 (file)
@@ -181,10 +181,7 @@ grub_ata_identify (struct grub_ata *dev)
       if (secsize & (secsize - 1) || !secsize
          || secsize > 1048576)
        secsize = 256;
-      for (dev->log_sector_size = 0;
-          (1U << dev->log_sector_size) < secsize;
-          dev->log_sector_size++);
-      dev->log_sector_size++;
+      dev->log_sector_size = grub_log2ull (secsize) + 1;
     }
   else
     dev->log_sector_size = 9;
index 8ada2c45a94dacd0e2b69ca3cd3c1cedab8597da..d7540040ed0670638cabfcc5385348d4eb4268c7 100644 (file)
@@ -523,9 +523,7 @@ grub_efidisk_open (const char *name, struct grub_disk *disk)
   if (m->block_size & (m->block_size - 1) || !m->block_size)
     return grub_error (GRUB_ERR_IO, "invalid sector size %d",
                       m->block_size);
-  for (disk->log_sector_size = 0;
-       (1U << disk->log_sector_size) < m->block_size;
-       disk->log_sector_size++);
+  disk->log_sector_size = grub_log2ull (m->block_size);
   disk->data = d;
 
   grub_dprintf ("efidisk", "opening %s succeeded\n", name);
index b3c9bbd8035142ed5b5907ec3ce81f43c6e22019..e190066f97f0b739c5094471f1476cbf1279c9cf 100644 (file)
@@ -380,9 +380,7 @@ geli_scan (grub_disk_t disk, grub_cryptomount_args_t cargs)
   newdev->hash = GRUB_MD_SHA512;
   newdev->iv_hash = GRUB_MD_SHA256;
 
-  for (newdev->log_sector_size = 0;
-       (1U << newdev->log_sector_size) < grub_le_to_cpu32 (header.sector_size);
-       newdev->log_sector_size++);
+  newdev->log_sector_size = grub_log2ull (grub_le_to_cpu32 (header.sector_size));
 
   if (grub_le_to_cpu32 (header.version) >= 5)
     {
index 49e4e8a14f8f73c1ca480358779e80def46acb05..f9362d17cd59cd6ec17c3137a8a3bcaa9351549a 100644 (file)
@@ -388,11 +388,7 @@ grub_biosdisk_open (const char *name, grub_disk_t disk)
                  && !(drp->bytes_per_sector & (drp->bytes_per_sector - 1))
                  && drp->bytes_per_sector >= 512
                  && drp->bytes_per_sector <= 16384)
-               {
-                 for (disk->log_sector_size = 0;
-                      (1 << disk->log_sector_size) < drp->bytes_per_sector;
-                      disk->log_sector_size++);
-               }
+               disk->log_sector_size = grub_log2ull (drp->bytes_per_sector);
            }
        }
     }
index ec413c3fd78778ad9cf4bc864a2ad3cddfc4f87d..cd923b90fb012e618d176827beea2062e964348f 100644 (file)
@@ -1023,11 +1023,7 @@ grub_obdisk_open (const char *name, grub_disk_t disk)
         dev->num_blocks = GRUB_DISK_SIZE_UNKNOWN;
 
       if (dev->block_size != 0)
-        {
-          for (dev->log_sector_size = 0;
-               (1U << dev->log_sector_size) < dev->block_size;
-               dev->log_sector_size++);
-        }
+        dev->log_sector_size = grub_log2ull (dev->block_size);
       else
         dev->log_sector_size = 9;
 
index 9b14d972084db3f848a9a07fd4f6f178d399554c..c6cba0c8aaf0b52db783537f0d4f7acca13195e5 100644 (file)
@@ -516,11 +516,7 @@ grub_ofdisk_open (const char *name, grub_disk_t disk)
         return err;
       }
     if (block_size != 0)
-      {
-       for (disk->log_sector_size = 0;
-            (1U << disk->log_sector_size) < block_size;
-            disk->log_sector_size++);
-      }
+      disk->log_sector_size = grub_log2ull (block_size);
     else
       disk->log_sector_size = 9;
   }
index 2a25b4b42370c2b1c0e0dcad209008fc7574c15d..1c3865fd2b7cf33f0453b13ba443dbbd61bd9538 100644 (file)
@@ -620,9 +620,7 @@ grub_scsi_open (const char *name, grub_disk_t disk)
          grub_free (scsi);
          return grub_errno;
        }
-      for (disk->log_sector_size = 0;
-          (1U << disk->log_sector_size) < scsi->blocksize;
-          disk->log_sector_size++);
+      disk->log_sector_size = grub_log2ull (scsi->blocksize);
 
       grub_dprintf ("scsi", "last_block=%" PRIuGRUB_UINT64_T ", blocksize=%u\n",
                    scsi->last_block, scsi->blocksize);
index 2d115a94dadcea03686b62e511a4a7d6081a1a2b..0e918d4d1bd5feb7e39eb1a9fca98bda93b9c7aa 100644 (file)
@@ -186,9 +186,7 @@ uboot_disk_open (const char *name, struct grub_disk *disk)
   if (d->block_size == 0)
     return grub_error (GRUB_ERR_IO, "no block size");
 
-  for (disk->log_sector_size = 0;
-       (1U << disk->log_sector_size) < d->block_size;
-       disk->log_sector_size++);
+  disk->log_sector_size = grub_log2ull (d->block_size);
 
   grub_dprintf ("ubootdisk", "(%s) blocksize=%d, log_sector_size=%d\n",
                disk->name, d->block_size, disk->log_sector_size);
index d6612eebd75e30cea0c8a9588dae70d17dbeb029..496f1ea7b096fe8f7a47880f3df2b5f14ba67360 100644 (file)
@@ -113,9 +113,7 @@ grub_virtdisk_open (const char *name, grub_disk_t disk)
       || secsize > GRUB_XEN_PAGE_SIZE)
     return grub_error (GRUB_ERR_IO, "unsupported sector size %d", secsize);
 
-  for (disk->log_sector_size = 0;
-       (1U << disk->log_sector_size) < secsize; disk->log_sector_size++);
-
+  disk->log_sector_size = grub_log2ull (secsize);
   disk->total_sectors >>= disk->log_sector_size - 9;
 
   return GRUB_ERR_NONE;
index 8d9b4b402d769295d170a8cc3586f40753551591..638e8ba86dfc4c164676d2f90260ecc866e2756b 100644 (file)
@@ -58,9 +58,7 @@ grub_util_get_fd_size_os (grub_util_fd_t fd, const char *name, unsigned *log_sec
 
   if (sector_size & (sector_size - 1) || !sector_size)
     return -1;
-  for (log_sector_size = 0;
-       (1 << log_sector_size) < sector_size;
-       log_sector_size++);
+  log_sector_size = grub_log2ull (sector_size);
 
   if (log_secsize)
     *log_secsize = log_sector_size;
index 6f83b3a8979e6115276651803516142f33000198..08723bd456ce64af6e7d7d99dc920cf179393412 100644 (file)
@@ -116,9 +116,7 @@ grub_util_get_fd_size_volume (grub_util_fd_t fd __attribute__ ((unused)),
   if (sector_size & (sector_size - 1) || !sector_size)
     return -1;
 
-  for (log_sector_size = 0;
-       (1 << log_sector_size) < sector_size;
-       log_sector_size++);
+  log_sector_size = grub_log2ull (sector_size);
 
   if (log_secsize)
     *log_secsize = log_sector_size;
index 5912d14bff30cf93335f3aeaa94f48325af61fca..8911094628a072ca7d2500c76ca4ca7e2c3c8800 100644 (file)
@@ -114,9 +114,7 @@ grub_util_get_fd_size_os (grub_util_fd_t fd, const char *name, unsigned *log_sec
   sector_size = label.d_secsize;
   if (sector_size & (sector_size - 1) || !sector_size)
     return -1;
-  for (log_sector_size = 0;
-       (1 << log_sector_size) < sector_size;
-       log_sector_size++);
+  log_sector_size = grub_log2ull (sector_size);
 
   if (log_secsize)
     *log_secsize = log_sector_size;
index 6145d073555246d714a9f3fd6af528498b641e0c..8bfe7d488e8474007fa9d96bcb3ff57a44064a46 100644 (file)
@@ -61,9 +61,7 @@ grub_util_get_fd_size_os (grub_util_fd_t fd, const char *name, unsigned *log_sec
     return -1;
   if (sector_size & (sector_size - 1) || !sector_size)
     return -1;
-  for (log_sector_size = 0;
-       (1 << log_sector_size) < sector_size;
-       log_sector_size++);
+  log_sector_size = grub_log2ull (sector_size);
 
   if (log_secsize)
     *log_secsize = log_sector_size;
index 8196d8c0ec14b69c9dd9e3ae05948d419cb93141..17463950b386928dd4d6fe66a57d829594e7b1df 100644 (file)
@@ -147,9 +147,7 @@ grub_util_get_fd_size_os (grub_util_fd_t fd, const char *name, unsigned *log_sec
 
   if (sector_size & (sector_size - 1) || !sector_size)
     return -1;
-  for (log_sector_size = 0;
-       (1 << log_sector_size) < sector_size;
-       log_sector_size++);
+  log_sector_size = grub_log2ull (sector_size);
 
   if (log_secsize)
     *log_secsize = log_sector_size;
index d3326d09598e5220b7e603706a7e005eafef4de0..07058f63abd1bd2f9b5b9c0463bff9bd47d734de 100644 (file)
@@ -83,9 +83,7 @@ grub_util_get_fd_size_os (grub_util_fd_t fd, const char *name, unsigned *log_sec
 
   if (sector_size & (sector_size - 1) || !sector_size)
     return -1;
-  for (log_sector_size = 0;
-       (1 << log_sector_size) < sector_size;
-       log_sector_size++);
+  log_sector_size = grub_log2ull (sector_size);
 
   if (log_secsize)
     *log_secsize = log_sector_size;
index dab96dcffdd2f918744981b837ae025a12127742..a6d4c733e8819b00760e72bec035ca6d952bd506 100644 (file)
@@ -57,9 +57,7 @@ grub_util_get_fd_size_os (grub_util_fd_t fd, const char *name, unsigned *log_sec
 
   if (sector_size & (sector_size - 1) || !sector_size)
     return -1;
-  for (log_sector_size = 0;
-       (1 << log_sector_size) < sector_size;
-       log_sector_size++);
+  log_sector_size = grub_log2ull (sector_size);
 
   if (log_secsize)
     *log_secsize = log_sector_size;
index 428d81466249aab768482c5ae30077c67d17bd4d..aaa6e2f8e7b308125437d83c5535b37ce4a17e68 100644 (file)
@@ -185,9 +185,7 @@ grub_util_get_fd_size (grub_util_fd_t hd, const char *name_in,
       size = g.Cylinders.QuadPart;
       size *= g.TracksPerCylinder * g.SectorsPerTrack * g.BytesPerSector;
 
-      for (log_sector_size = 0;
-          (1 << log_sector_size) < g.BytesPerSector;
-          log_sector_size++);
+      log_sector_size = grub_log2ull (g.BytesPerSector);
     }
   else
     {