Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
[autoboot] Ensure that an error message is always printed for a boot …
…failure

The case of an unsupported SAN protocol will currently not result in
any error message.  Fix by printing the error message at the top level
using strerror(), rather than using hard-coded error messages in the
error paths.
  • Loading branch information
Michael Brown committed Nov 18, 2009
1 parent f406ede commit 5bee2a2
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 18 deletions.
2 changes: 0 additions & 2 deletions src/arch/i386/interface/pcbios/aoeboot.c
Expand Up @@ -20,8 +20,6 @@ static int aoeboot ( const char *root_path ) {
memset ( &ata, 0, sizeof ( ata ) );
memset ( &drive, 0, sizeof ( drive ) );

printf ( "AoE booting from %s\n", root_path );

/* FIXME: ugly, ugly hack */
struct net_device *netdev = last_opened_netdev();

Expand Down
2 changes: 0 additions & 2 deletions src/arch/i386/interface/pcbios/iscsiboot.c
Expand Up @@ -27,8 +27,6 @@ static int iscsiboot ( const char *root_path ) {
goto err_alloc_drive;
}

printf ( "iSCSI booting from %s\n", root_path );

if ( ( rc = iscsi_attach ( scsi, root_path ) ) != 0 ) {
printf ( "Could not attach iSCSI device: %s\n",
strerror ( rc ) );
Expand Down
30 changes: 16 additions & 14 deletions src/usr/autoboot.c
Expand Up @@ -67,10 +67,8 @@ int boot_next_server_and_filename ( struct in_addr next_server,

/* Construct URI */
uri = parse_uri ( filename );
if ( ! uri ) {
printf ( "Out of memory\n" );
if ( ! uri )
return -ENOMEM;
}
filename_is_absolute = uri_is_absolute ( uri );
uri_put ( uri );
if ( ! filename_is_absolute ) {
Expand All @@ -86,21 +84,14 @@ int boot_next_server_and_filename ( struct in_addr next_server,
}

image = alloc_image();
if ( ! image ) {
printf ( "Out of memory\n" );
if ( ! image )
return -ENOMEM;
}
if ( ( rc = imgfetch ( image, filename,
register_and_autoload_image ) ) != 0 ) {
printf ( "Could not load %s: %s\n",
filename, strerror ( rc ) );
goto done;
}
if ( ( rc = imgexec ( image ) ) != 0 ) {
printf ( "Could not boot %s: %s\n",
filename, strerror ( rc ) );
if ( ( rc = imgexec ( image ) ) != 0 )
goto done;
}

done:
image_put ( image );
Expand Down Expand Up @@ -173,14 +164,25 @@ static int netboot ( struct net_device *netdev ) {
fetch_string_setting ( NULL, &filename_setting, buf, sizeof ( buf ) );
if ( buf[0] ) {
printf ( "Booting from filename \"%s\"\n", buf );
return boot_next_server_and_filename ( next_server, buf );
if ( ( rc = boot_next_server_and_filename ( next_server,
buf ) ) != 0 ) {
printf ( "Could not boot from filename \"%s\": %s\n",
buf, strerror ( rc ) );
return rc;
}
return 0;
}

/* No filename; try the root path */
fetch_string_setting ( NULL, &root_path_setting, buf, sizeof ( buf ) );
if ( buf[0] ) {
printf ( "Booting from root path \"%s\"\n", buf );
return boot_root_path ( buf );
if ( ( rc = boot_root_path ( buf ) ) != 0 ) {
printf ( "Could not boot from root path \"%s\": %s\n",
buf, strerror ( rc ) );
return rc;
}
return 0;
}

printf ( "No filename or root path specified\n" );
Expand Down

0 comments on commit 5bee2a2

Please sign in to comment.