]> git.proxmox.com Git - grub2.git/commitdiff
Simplify disk opening
authorVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Thu, 7 Jul 2011 19:46:25 +0000 (21:46 +0200)
committerVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Thu, 7 Jul 2011 19:46:25 +0000 (21:46 +0200)
15 files changed:
grub-core/disk/arc/arcdisk.c
grub-core/disk/ata.c
grub-core/disk/efi/efidisk.c
grub-core/disk/host.c
grub-core/disk/i386/pc/biosdisk.c
grub-core/disk/ieee1275/nand.c
grub-core/disk/ieee1275/ofdisk.c
grub-core/disk/loopback.c
grub-core/disk/lvm.c
grub-core/disk/memdisk.c
grub-core/disk/raid.c
grub-core/disk/scsi.c
grub-core/kern/disk.c
grub-core/kern/emu/hostdisk.c
include/grub/disk.h

index 7dff309318b3bb9a33a2a1867598e459d3fb9e81..170bf521dff9dd044edb861f48919dee0965190e 100644 (file)
@@ -79,7 +79,8 @@ arcdisk_hash_add (char *devpath)
 
 
 static int
-grub_arcdisk_iterate (int (*hook_in) (const char *name))
+grub_arcdisk_iterate (int (*hook_in) (const char *name),
+                     grub_disk_pull_t pull)
 {
   auto int hook (const char *name, const struct grub_arc_component *comp);
   int hook (const char *name, const struct grub_arc_component *comp)
@@ -90,6 +91,9 @@ grub_arcdisk_iterate (int (*hook_in) (const char *name))
       return 0;
     return hook_in (name);
   }
+  if (pull != GRUB_DISK_PULL_NONE)
+    return 0;
+
   return grub_arc_iterate_devs (hook, 1);
 }
 
index 9a09ee158bd2a26e0b72d3a9a3f8a4339b4acdab..8add7f4de7e428eba5b61e2572f669e70875a100 100644 (file)
@@ -412,8 +412,7 @@ grub_ata_iterate (int (*hook_in) (const char *name),
 }
 
 static grub_err_t
-grub_ata_open (const char *name, grub_disk_t disk,
-              grub_disk_pull_t pull __attribute__ ((unused)))
+grub_ata_open (const char *name, grub_disk_t disk)
 {
   unsigned id, bus;
   struct grub_ata *ata;
index 4ae1d7bb95818937e3f217cee133ddb75ac1a651..85969cc1dea5d07ba87ba5c4ab3de846a27b42de 100644 (file)
@@ -454,8 +454,7 @@ get_device (struct grub_efidisk_data *devices, int num)
 }
 
 static grub_err_t
-grub_efidisk_open (const char *name, struct grub_disk *disk,
-                  grub_disk_pull_t pull __attribute__ ((unused)))
+grub_efidisk_open (const char *name, struct grub_disk *disk)
 {
   int num;
   struct grub_efidisk_data *d = 0;
index 5376cc6ceeb683ee2a601fb54ab939248326f0c7..5ee0d2e56a8ead53ca94f15b298ed12cde89af4e 100644 (file)
@@ -39,8 +39,7 @@ grub_host_iterate (int (*hook) (const char *name),
 }
 
 static grub_err_t
-grub_host_open (const char *name, grub_disk_t disk,
-               grub_disk_pull_t pull __attribute__ ((unused)))
+grub_host_open (const char *name, grub_disk_t disk)
 {
   if (grub_strcmp (name, "host"))
       return grub_error (GRUB_ERR_UNKNOWN_DEVICE, "not a host disk");
index 1198d43055eeb81b9a3a5e39e8c5eab38397cf33..e152b9d896c86e1119f5452a508e6d5417390602 100644 (file)
@@ -328,8 +328,7 @@ grub_biosdisk_iterate (int (*hook) (const char *name),
 }
 
 static grub_err_t
-grub_biosdisk_open (const char *name, grub_disk_t disk,
-                   grub_disk_pull_t pull __attribute__ ((unused)))
+grub_biosdisk_open (const char *name, grub_disk_t disk)
 {
   grub_uint64_t total_sectors = 0;
   int drive;
index 4be5b564140538db2ee8fb3b60c099cea47f5286..94d62bc4f37b7faac84de0d0c4d780e270b34fd0 100644 (file)
@@ -58,8 +58,7 @@ grub_nand_read (grub_disk_t disk, grub_disk_addr_t sector,
                 grub_size_t size, char *buf);
 
 static grub_err_t
-grub_nand_open (const char *name, grub_disk_t disk,
-               grub_disk_pull_t pull __attribute__ ((unused)))
+grub_nand_open (const char *name, grub_disk_t disk)
 {
   grub_ieee1275_ihandle_t dev_ihandle = 0;
   struct grub_nand_data *data = 0;
index 7b7db3a086c390fb340736e1393a1376aabc36e9..2cd43d80a98c284260657ba1fbc1112d57670c20 100644 (file)
@@ -233,8 +233,7 @@ compute_dev_path (const char *name)
 }
 
 static grub_err_t
-grub_ofdisk_open (const char *name, grub_disk_t disk,
-                 grub_disk_pull_t pull __attribute__ ((unused)))
+grub_ofdisk_open (const char *name, grub_disk_t disk)
 {
   grub_ieee1275_phandle_t dev;
   char *devpath;
index 21345af57c8819d5fc6ab6ef620816b50d5cd50a..dca83b7c674960d6a637b2aafac7a166d1d9fec4 100644 (file)
@@ -148,8 +148,7 @@ grub_loopback_iterate (int (*hook) (const char *name),
 }
 
 static grub_err_t
-grub_loopback_open (const char *name, grub_disk_t disk,
-                   grub_disk_pull_t pull __attribute__ ((unused)))
+grub_loopback_open (const char *name, grub_disk_t disk)
 {
   struct grub_loopback *dev;
 
index 9e304c00124f1ca239ece29aa50c1046600d3243..06e9f6d6a721773bea1475dd3fad8c65187ec073 100644 (file)
@@ -181,8 +181,7 @@ find_lv (const char *name)
 static const char *scan_for = NULL;
 
 static grub_err_t
-grub_lvm_open (const char *name, grub_disk_t disk,
-              grub_disk_pull_t pull)
+grub_lvm_open (const char *name, grub_disk_t disk)
 {
   struct grub_lvm_lv *lv = NULL;
   int explicit = 0;
@@ -192,8 +191,7 @@ grub_lvm_open (const char *name, grub_disk_t disk,
 
   lv = find_lv (name);
 
-  if (! lv && !scan_depth &&
-      pull == (explicit ? GRUB_DISK_PULL_RESCAN : GRUB_DISK_PULL_RESCAN_UNTYPED))
+  if (! lv && !scan_depth && explicit)
     {
       scan_for = name;
       scan_depth++;
index 77523405574e31c253cc03ae31bfade5159cf4b1..ed570c6a0e7a738285164bde9caaf0e45c5dc334 100644 (file)
@@ -40,8 +40,7 @@ grub_memdisk_iterate (int (*hook) (const char *name),
 }
 
 static grub_err_t
-grub_memdisk_open (const char *name, grub_disk_t disk,
-                  grub_disk_pull_t pull __attribute__ ((unused)))
+grub_memdisk_open (const char *name, grub_disk_t disk)
 {
   if (grub_strcmp (name, "memdisk"))
       return grub_error (GRUB_ERR_UNKNOWN_DEVICE, "not a memdisk");
index a7d36bfb2dfcfa73db6a6538b14e8f219f336d05..5d8326dafb97560d1dc40494f0a61dc23c6754ab 100644 (file)
@@ -257,7 +257,7 @@ find_array (const char *name)
 }
 
 static grub_err_t
-grub_raid_open (const char *name, grub_disk_t disk, grub_disk_pull_t pull)
+grub_raid_open (const char *name, grub_disk_t disk)
 {
   struct grub_raid_array *array;
   unsigned n;
@@ -268,7 +268,7 @@ grub_raid_open (const char *name, grub_disk_t disk, grub_disk_pull_t pull)
 
   array = find_array (name);
 
-  if (! array && pull == GRUB_DISK_PULL_RESCAN)
+  if (! array)
     {
       scan_devices (name);
       if (grub_errno)
index 5ab5177e97fcf575a93a592aa65c9da63fef89cd..610cc4dc5b1df58a55b1579969fee0a897505c2c 100644 (file)
@@ -371,8 +371,7 @@ grub_scsi_iterate (int (*hook) (const char *name),
 }
 
 static grub_err_t
-grub_scsi_open (const char *name, grub_disk_t disk,
-               grub_disk_pull_t pull __attribute__ ((unused)))
+grub_scsi_open (const char *name, grub_disk_t disk)
 {
   grub_scsi_dev_t p;
   grub_scsi_t scsi;
index 022157434c7b6f4aca24de6b89bb5c440f97c22b..5584030bda83c4fdeacb3e414abda76478e284c0 100644 (file)
@@ -206,13 +206,9 @@ grub_disk_dev_iterate (int (*hook) (const char *name))
   grub_disk_pull_t pull;
 
   for (pull = 0; pull < GRUB_DISK_PULL_MAX; pull++)
-    {
-      if (pull == GRUB_DISK_PULL_RESCAN_UNTYPED)
-       continue;
-      for (p = grub_disk_dev_list; p; p = p->next)
-       if (p->iterate && (p->iterate) (hook, pull))
-         return 1;
-    }
+    for (p = grub_disk_dev_list; p; p = p->next)
+      if (p->iterate && (p->iterate) (hook, pull))
+       return 1;
 
   return 0;
 }
@@ -243,7 +239,6 @@ grub_disk_open (const char *name)
   grub_disk_dev_t dev;
   char *raw = (char *) name;
   grub_uint64_t current_time;
-  grub_disk_pull_t pull;
 
   grub_dprintf ("disk", "Opening `%s'...\n", name);
 
@@ -270,19 +265,14 @@ grub_disk_open (const char *name)
   if (! disk->name)
     goto fail;
 
-  for (pull = 0; pull < GRUB_DISK_PULL_MAX; pull++)
+  for (dev = grub_disk_dev_list; dev; dev = dev->next)
     {
-      for (dev = grub_disk_dev_list; dev; dev = dev->next)
-       {
-         if ((dev->open) (raw, disk, pull) == GRUB_ERR_NONE)
-           break;
-         else if (grub_errno == GRUB_ERR_UNKNOWN_DEVICE)
-           grub_errno = GRUB_ERR_NONE;
-         else
-           goto fail;
-       }
-      if (dev)
+      if ((dev->open) (raw, disk) == GRUB_ERR_NONE)
        break;
+      else if (grub_errno == GRUB_ERR_UNKNOWN_DEVICE)
+       grub_errno = GRUB_ERR_NONE;
+      else
+       goto fail;
     }
 
   if (! dev)
index a2f9ce0845c61889640001d92528f87de9b579b7..59d7a4a2c6c0b81e14019ef69518e633decb33e2 100644 (file)
@@ -227,8 +227,7 @@ grub_util_biosdisk_iterate (int (*hook) (const char *name),
 }
 
 static grub_err_t
-grub_util_biosdisk_open (const char *name, grub_disk_t disk,
-                        grub_disk_pull_t pull __attribute__ ((unused)))
+grub_util_biosdisk_open (const char *name, grub_disk_t disk)
 {
   int drive;
   struct stat st;
index efa27a4d2e593ccab3b86d7eb69ec50acdd181f3..2b6d02972c16182c388cfc67aa0fc728b01e5acd 100644 (file)
@@ -56,7 +56,6 @@ typedef enum
     GRUB_DISK_PULL_NONE,
     GRUB_DISK_PULL_REMOVABLE,
     GRUB_DISK_PULL_RESCAN,
-    GRUB_DISK_PULL_RESCAN_UNTYPED,
     GRUB_DISK_PULL_MAX
   } grub_disk_pull_t;
 
@@ -74,8 +73,7 @@ struct grub_disk_dev
                  grub_disk_pull_t pull);
 
   /* Open the device named NAME, and set up DISK.  */
-  grub_err_t (*open) (const char *name, struct grub_disk *disk,
-                     grub_disk_pull_t pull);
+  grub_err_t (*open) (const char *name, struct grub_disk *disk);
 
   /* Close the disk DISK.  */
   void (*close) (struct grub_disk *disk);