X-Git-Url: http://git.ozlabs.org/?p=yaboot.git;a=blobdiff_plain;f=second%2Ffs_of.c;h=e7b37bdd05742c915125cf787c611d2b49a1fb01;hp=2c848264969512074621e36d3e308220c9ed0154;hb=b95e2fe6b9c48a252ff6a3a9efe9f06e582ce4f4;hpb=2ad0d7649e5042cad43a16b4a03bf53f39948316 diff --git a/second/fs_of.c b/second/fs_of.c index 2c84826..e7b37bd 100644 --- a/second/fs_of.c +++ b/second/fs_of.c @@ -1,7 +1,7 @@ /* * fs_of.c - an implementation for OpenFirmware supported filesystems * - * Copyright (C) 2001 Ethan Benson + * Copyright (C) 2001, 2002 Ethan Benson * * Copyright (C) 1999 Benjamin Herrenschmidt * @@ -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);