mirror of
https://github.com/adulau/aha.git
synced 2024-12-27 19:26:25 +00:00
init: make initrd/initramfs decompression failure a KERN_EMERG event
Impact: More consistent behaviour, avoid policy in the kernel Upgrade/downgrade initrd/initramfs decompression failure from inconsistently a panic or a KERN_ALERT message to a KERN_EMERG event. It is, however, possible do design a system which can recover from this (using the kernel builtin code and/or the internal initramfs), which means this is policy, not a technical necessity. A good way to handle this would be to have a panic-level=X option, to force a panic on a printk above a certain level. That is a separate patch, however. Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
This commit is contained in:
parent
23a22d57a8
commit
73310a169a
2 changed files with 9 additions and 5 deletions
|
@ -83,7 +83,8 @@ identify_ramdisk_image(int fd, int start_block, decompress_fn *decompressor)
|
||||||
printk(KERN_NOTICE "RAMDISK: %s image found at block %d\n",
|
printk(KERN_NOTICE "RAMDISK: %s image found at block %d\n",
|
||||||
compress_name, start_block);
|
compress_name, start_block);
|
||||||
if (!*decompressor)
|
if (!*decompressor)
|
||||||
printk(KERN_CRIT "RAMDISK: %s decompressor not configured!\n",
|
printk(KERN_EMERG
|
||||||
|
"RAMDISK: %s decompressor not configured!\n",
|
||||||
compress_name);
|
compress_name);
|
||||||
nblocks = 0;
|
nblocks = 0;
|
||||||
goto done;
|
goto done;
|
||||||
|
|
|
@ -528,7 +528,7 @@ static int __init populate_rootfs(void)
|
||||||
char *err = unpack_to_rootfs(__initramfs_start,
|
char *err = unpack_to_rootfs(__initramfs_start,
|
||||||
__initramfs_end - __initramfs_start, 0);
|
__initramfs_end - __initramfs_start, 0);
|
||||||
if (err)
|
if (err)
|
||||||
panic(err);
|
panic(err); /* Failed to decompress INTERNAL initramfs */
|
||||||
if (initrd_start) {
|
if (initrd_start) {
|
||||||
#ifdef CONFIG_BLK_DEV_RAM
|
#ifdef CONFIG_BLK_DEV_RAM
|
||||||
int fd;
|
int fd;
|
||||||
|
@ -554,9 +554,12 @@ static int __init populate_rootfs(void)
|
||||||
printk(KERN_INFO "Unpacking initramfs...");
|
printk(KERN_INFO "Unpacking initramfs...");
|
||||||
err = unpack_to_rootfs((char *)initrd_start,
|
err = unpack_to_rootfs((char *)initrd_start,
|
||||||
initrd_end - initrd_start, 0);
|
initrd_end - initrd_start, 0);
|
||||||
if (err)
|
if (err) {
|
||||||
panic(err);
|
printk(" failed!\n");
|
||||||
|
printk(KERN_EMERG "%s\n", err);
|
||||||
|
} else {
|
||||||
printk(" done\n");
|
printk(" done\n");
|
||||||
|
}
|
||||||
free_initrd();
|
free_initrd();
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue