X-Git-Url: http://git.ozlabs.org/?p=yaboot.git;a=blobdiff_plain;f=second%2Ffs_of.c;h=e7b37bdd05742c915125cf787c611d2b49a1fb01;hp=d9caa3226be9b24a29779354cf6fded84b193fb9;hb=b95e2fe6b9c48a252ff6a3a9efe9f06e582ce4f4;hpb=b58b7f84f40f96f61a1d5fc1f88a1abd9c1a4193;ds=sidebyside diff --git a/second/fs_of.c b/second/fs_of.c index d9caa32..e7b37bd 100644 --- a/second/fs_of.c +++ b/second/fs_of.c @@ -39,12 +39,14 @@ #include "prom.h" #include "string.h" #include "partition.h" +#include "fdisk-part.h" #include "fs.h" #include "errors.h" #include "debug.h" #define LOAD_BUFFER_POS 0x600000 -#define LOAD_BUFFER_SIZE 0x400000 +/* this cannot be safely increased any further */ +#define LOAD_BUFFER_SIZE 0x600000 static int of_open(struct boot_file_t* file, const char* dev_name, struct partition_t* part, const char* file_name); @@ -91,6 +93,11 @@ of_open(struct boot_file_t* file, const char* dev_name, strncpy(buffer, dev_name, 768); strcat(buffer, ":"); if (part) { + if (part->sys_ind == LINUX_RAID) { + DEBUG_F("skipping because partition is marked LINUX_RAID\n"); + DEBUG_LEAVE(FILE_ERR_BAD_FSYS); + return FILE_ERR_BAD_FSYS; + } char pn[3]; sprintf(pn, "%02d", part->part_number); strcat(buffer, pn);