]> git.ozlabs.org Git - yaboot.git/blobdiff - second/partition.c
Treat iSCSI targets as block devices.
[yaboot.git] / second / partition.c
index 0cb8ae85f1768bb7aef755c6ef37f64b64f5f168..4381770fcca5facc0171fc52308b273478235608 100644 (file)
@@ -40,6 +40,7 @@
 #include "linux/iso_fs.h"
 #include "debug.h"
 #include "errors.h"
 #include "linux/iso_fs.h"
 #include "debug.h"
 #include "errors.h"
+#include "bootinfo.h"
 #include "byteorder.h"
 
 /* We currently don't check the partition type, some users
 #include "byteorder.h"
 
 /* We currently don't check the partition type, some users
@@ -286,7 +287,7 @@ partition_amiga_lookup( const char *dev_name, prom_handle disk,
        for (i=0; i < possible; i++) used[i] = 0;
 
 
        for (i=0; i < possible; i++) used[i] = 0;
 
 
-       for (part = amiga_block[AMIGA_PARTITIONS], partition = 0;
+       for (part = amiga_block[AMIGA_PARTITIONS], partition = 1;
                part != AMIGA_END;
                part = amiga_block[AMIGA_PART_NEXT], partition++)
        {
                part != AMIGA_END;
                part = amiga_block[AMIGA_PART_NEXT], partition++)
        {
@@ -337,7 +338,8 @@ partitions_lookup(const char *device)
      unsigned int prom_blksize, iso_root_block;
 
      strncpy(block_buffer, device, 2040);
      unsigned int prom_blksize, iso_root_block;
 
      strncpy(block_buffer, device, 2040);
-     strcat(block_buffer, ":0");
+     if (_machine != _MACH_bplan)
+         strcat(block_buffer, ":0");
 
      /* Open device */
      disk = prom_open(block_buffer);
 
      /* Open device */
      disk = prom_open(block_buffer);
@@ -398,7 +400,8 @@ get_part_type(char *device, int partition)
      struct partition_t*       found;
      char *type = NULL;
 
      struct partition_t*       found;
      char *type = NULL;
 
-     if (prom_get_devtype(device) != FILE_DEVICE_BLOCK)
+     int device_kind = prom_get_devtype(device);
+     if (device_kind != FILE_DEVICE_BLOCK && device_kind != FILE_DEVICE_ISCSI)
          return NULL;
 
      parts = partitions_lookup(device);
          return NULL;
 
      parts = partitions_lookup(device);