X-Git-Url: http://git.ozlabs.org/?p=yaboot.git;a=blobdiff_plain;f=second%2Ffs_reiserfs.c;h=4b83a7aa1c26070f072574258a26626f520053d6;hp=4ad1c2ec176dbb9bb7495e9550e0d4312c40643e;hb=a9e02f948a7e3f8ada87e07a0c1a382805ad15c6;hpb=a2b7bb030d78c61ef150f8c9f6926c9558a6f1b5 diff --git a/second/fs_reiserfs.c b/second/fs_reiserfs.c index 4ad1c2e..4b83a7a 100644 --- a/second/fs_reiserfs.c +++ b/second/fs_reiserfs.c @@ -29,11 +29,12 @@ #include "fs.h" #include "errors.h" #include "debug.h" +#include "bootinfo.h" #include "reiserfs/reiserfs.h" /* Exported in struct fs_t */ -static int reiserfs_open( struct boot_file_t *file, const char *dev_name, - struct partition_t *part, const char *file_name ); +static int reiserfs_open( struct boot_file_t *file, struct partition_t *part, + struct boot_fspec_t *fspec); static int reiserfs_read( struct boot_file_t *file, unsigned int size, void *buffer ); @@ -62,10 +63,12 @@ int errnum; static int -reiserfs_open( struct boot_file_t *file, const char *dev_name, - struct partition_t *part, const char *file_name ) +reiserfs_open( struct boot_file_t *file, struct partition_t *part, + struct boot_fspec_t *fspec) { static char buffer[1024]; + char *dev_name = fspec->dev; + char *file_name = fspec->file; DEBUG_ENTER; DEBUG_OPEN; @@ -73,7 +76,7 @@ reiserfs_open( struct boot_file_t *file, const char *dev_name, memset( INFO, 0, sizeof(struct reiserfs_state) ); INFO->file = file; - if (part) + if (fspec->part) { DEBUG_F( "Determining offset for partition %d\n", part->part_number ); INFO->partition_offset = ((uint64_t)part->part_start) * part->blocksize; @@ -84,7 +87,10 @@ reiserfs_open( struct boot_file_t *file, const char *dev_name, else INFO->partition_offset = 0; - sprintf( buffer, "%s:%d", dev_name, 0 ); /* 0 is full disk in OF */ + strncpy(buffer, dev_name, 1020); + if (_machine != _MACH_bplan) + strcat(buffer, ":0"); /* 0 is full disk in (non-buggy) OF */ + file->of_device = prom_open( buffer ); DEBUG_F( "Trying to open dev_name=%s; filename=%s; partition offset=%Lu\n", buffer, file_name, INFO->partition_offset );