Commit c8376994 authored by Christoph Hellwig's avatar Christoph Hellwig

initrd: remove support for multiple floppies

Remove the special handling for multiple floppies in the initrd code.
No one should be using floppies for booting these days. (famous last
words..)

Includes a spelling fix from Colin Ian King <colin.king@canonical.com>.
Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
Acked-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 7e0adbfc
...@@ -91,8 +91,6 @@ __tagtable(ATAG_VIDEOTEXT, parse_tag_videotext); ...@@ -91,8 +91,6 @@ __tagtable(ATAG_VIDEOTEXT, parse_tag_videotext);
static int __init parse_tag_ramdisk(const struct tag *tag) static int __init parse_tag_ramdisk(const struct tag *tag)
{ {
rd_image_start = tag->u.ramdisk.start; rd_image_start = tag->u.ramdisk.start;
rd_doload = (tag->u.ramdisk.flags & 1) == 0;
rd_prompt = (tag->u.ramdisk.flags & 2) == 0;
if (tag->u.ramdisk.size) if (tag->u.ramdisk.size)
rd_size = tag->u.ramdisk.size; rd_size = tag->u.ramdisk.size;
......
...@@ -290,8 +290,6 @@ void __init setup_arch(char **cmdline_p) ...@@ -290,8 +290,6 @@ void __init setup_arch(char **cmdline_p)
#ifdef CONFIG_BLK_DEV_RAM #ifdef CONFIG_BLK_DEV_RAM
rd_image_start = RAMDISK_FLAGS & RAMDISK_IMAGE_START_MASK; rd_image_start = RAMDISK_FLAGS & RAMDISK_IMAGE_START_MASK;
rd_prompt = ((RAMDISK_FLAGS & RAMDISK_PROMPT_FLAG) != 0);
rd_doload = ((RAMDISK_FLAGS & RAMDISK_LOAD_FLAG) != 0);
#endif #endif
if (!MOUNT_ROOT_RDONLY) if (!MOUNT_ROOT_RDONLY)
......
...@@ -353,8 +353,6 @@ void __init setup_arch(char **cmdline_p) ...@@ -353,8 +353,6 @@ void __init setup_arch(char **cmdline_p)
ROOT_DEV = old_decode_dev(root_dev); ROOT_DEV = old_decode_dev(root_dev);
#ifdef CONFIG_BLK_DEV_RAM #ifdef CONFIG_BLK_DEV_RAM
rd_image_start = ram_flags & RAMDISK_IMAGE_START_MASK; rd_image_start = ram_flags & RAMDISK_IMAGE_START_MASK;
rd_prompt = ((ram_flags & RAMDISK_PROMPT_FLAG) != 0);
rd_doload = ((ram_flags & RAMDISK_LOAD_FLAG) != 0);
#endif #endif
prom_setsync(prom_sync_me); prom_setsync(prom_sync_me);
......
...@@ -659,8 +659,6 @@ void __init setup_arch(char **cmdline_p) ...@@ -659,8 +659,6 @@ void __init setup_arch(char **cmdline_p)
ROOT_DEV = old_decode_dev(root_dev); ROOT_DEV = old_decode_dev(root_dev);
#ifdef CONFIG_BLK_DEV_RAM #ifdef CONFIG_BLK_DEV_RAM
rd_image_start = ram_flags & RAMDISK_IMAGE_START_MASK; rd_image_start = ram_flags & RAMDISK_IMAGE_START_MASK;
rd_prompt = ((ram_flags & RAMDISK_PROMPT_FLAG) != 0);
rd_doload = ((ram_flags & RAMDISK_LOAD_FLAG) != 0);
#endif #endif
task_thread_info(&init_task)->kregs = &fake_swapper_regs; task_thread_info(&init_task)->kregs = &fake_swapper_regs;
......
...@@ -870,8 +870,6 @@ void __init setup_arch(char **cmdline_p) ...@@ -870,8 +870,6 @@ void __init setup_arch(char **cmdline_p)
#ifdef CONFIG_BLK_DEV_RAM #ifdef CONFIG_BLK_DEV_RAM
rd_image_start = boot_params.hdr.ram_size & RAMDISK_IMAGE_START_MASK; rd_image_start = boot_params.hdr.ram_size & RAMDISK_IMAGE_START_MASK;
rd_prompt = ((boot_params.hdr.ram_size & RAMDISK_PROMPT_FLAG) != 0);
rd_doload = ((boot_params.hdr.ram_size & RAMDISK_LOAD_FLAG) != 0);
#endif #endif
#ifdef CONFIG_EFI #ifdef CONFIG_EFI
if (!strncmp((char *)&boot_params.efi_info.efi_loader_signature, if (!strncmp((char *)&boot_params.efi_info.efi_loader_signature,
......
...@@ -2,12 +2,6 @@ ...@@ -2,12 +2,6 @@
#define INITRD_MINOR 250 /* shouldn't collide with /dev/ram* too soon ... */ #define INITRD_MINOR 250 /* shouldn't collide with /dev/ram* too soon ... */
/* 1 = load ramdisk, 0 = don't load */
extern int rd_doload;
/* 1 = prompt for ramdisk, 0 = don't prompt */
extern int rd_prompt;
/* starting block # of image */ /* starting block # of image */
extern int rd_image_start; extern int rd_image_start;
......
...@@ -28,8 +28,6 @@ ...@@ -28,8 +28,6 @@
#include "do_mounts.h" #include "do_mounts.h"
int __initdata rd_doload; /* 1 = load RAM disk, 0 = don't load */
int root_mountflags = MS_RDONLY | MS_SILENT; int root_mountflags = MS_RDONLY | MS_SILENT;
static char * __initdata root_device_name; static char * __initdata root_device_name;
static char __initdata saved_root_name[64]; static char __initdata saved_root_name[64];
...@@ -39,7 +37,7 @@ dev_t ROOT_DEV; ...@@ -39,7 +37,7 @@ dev_t ROOT_DEV;
static int __init load_ramdisk(char *str) static int __init load_ramdisk(char *str)
{ {
rd_doload = simple_strtol(str,NULL,0) & 3; pr_warn("ignoring the deprecated load_ramdisk= option\n");
return 1; return 1;
} }
__setup("load_ramdisk=", load_ramdisk); __setup("load_ramdisk=", load_ramdisk);
...@@ -553,66 +551,20 @@ static int __init mount_cifs_root(void) ...@@ -553,66 +551,20 @@ static int __init mount_cifs_root(void)
} }
#endif #endif
#if defined(CONFIG_BLK_DEV_RAM) || defined(CONFIG_BLK_DEV_FD)
void __init change_floppy(char *fmt, ...)
{
struct termios termios;
char buf[80];
char c;
int fd;
va_list args;
va_start(args, fmt);
vsprintf(buf, fmt, args);
va_end(args);
fd = ksys_open("/dev/root", O_RDWR | O_NDELAY, 0);
if (fd >= 0) {
ksys_ioctl(fd, FDEJECT, 0);
ksys_close(fd);
}
printk(KERN_NOTICE "VFS: Insert %s and press ENTER\n", buf);
fd = ksys_open("/dev/console", O_RDWR, 0);
if (fd >= 0) {
ksys_ioctl(fd, TCGETS, (long)&termios);
termios.c_lflag &= ~ICANON;
ksys_ioctl(fd, TCSETSF, (long)&termios);
ksys_read(fd, &c, 1);
termios.c_lflag |= ICANON;
ksys_ioctl(fd, TCSETSF, (long)&termios);
ksys_close(fd);
}
}
#endif
void __init mount_root(void) void __init mount_root(void)
{ {
#ifdef CONFIG_ROOT_NFS #ifdef CONFIG_ROOT_NFS
if (ROOT_DEV == Root_NFS) { if (ROOT_DEV == Root_NFS) {
if (mount_nfs_root()) if (!mount_nfs_root())
printk(KERN_ERR "VFS: Unable to mount root fs via NFS.\n");
return; return;
printk(KERN_ERR "VFS: Unable to mount root fs via NFS, trying floppy.\n");
ROOT_DEV = Root_FD0;
} }
#endif #endif
#ifdef CONFIG_CIFS_ROOT #ifdef CONFIG_CIFS_ROOT
if (ROOT_DEV == Root_CIFS) { if (ROOT_DEV == Root_CIFS) {
if (mount_cifs_root()) if (!mount_cifs_root())
printk(KERN_ERR "VFS: Unable to mount root fs via SMB.\n");
return; return;
printk(KERN_ERR "VFS: Unable to mount root fs via SMB, trying floppy.\n");
ROOT_DEV = Root_FD0;
}
#endif
#ifdef CONFIG_BLK_DEV_FD
if (MAJOR(ROOT_DEV) == FLOPPY_MAJOR) {
/* rd_doload is 2 for a dual initrd/ramload setup */
if (rd_doload==2) {
if (rd_load_disk(1)) {
ROOT_DEV = Root_RAM1;
root_device_name = NULL;
}
} else
change_floppy("root floppy");
} }
#endif #endif
#ifdef CONFIG_BLOCK #ifdef CONFIG_BLOCK
...@@ -631,8 +583,6 @@ void __init mount_root(void) ...@@ -631,8 +583,6 @@ void __init mount_root(void)
*/ */
void __init prepare_namespace(void) void __init prepare_namespace(void)
{ {
int is_floppy;
if (root_delay) { if (root_delay) {
printk(KERN_INFO "Waiting %d sec before mounting root device...\n", printk(KERN_INFO "Waiting %d sec before mounting root device...\n",
root_delay); root_delay);
...@@ -675,11 +625,6 @@ void __init prepare_namespace(void) ...@@ -675,11 +625,6 @@ void __init prepare_namespace(void)
async_synchronize_full(); async_synchronize_full();
} }
is_floppy = MAJOR(ROOT_DEV) == FLOPPY_MAJOR;
if (is_floppy && rd_doload && rd_load_disk(0))
ROOT_DEV = Root_RAM0;
mount_root(); mount_root();
out: out:
devtmpfs_mount(); devtmpfs_mount();
......
...@@ -9,7 +9,6 @@ ...@@ -9,7 +9,6 @@
#include <linux/major.h> #include <linux/major.h>
#include <linux/root_dev.h> #include <linux/root_dev.h>
void change_floppy(char *fmt, ...);
void mount_block_root(char *name, int flags); void mount_block_root(char *name, int flags);
void mount_root(void); void mount_root(void);
extern int root_mountflags; extern int root_mountflags;
......
...@@ -15,11 +15,9 @@ ...@@ -15,11 +15,9 @@
#include <linux/decompress/generic.h> #include <linux/decompress/generic.h>
int __initdata rd_prompt = 1;/* 1 = prompt for RAM disk, 0 = don't prompt */
static int __init prompt_ramdisk(char *str) static int __init prompt_ramdisk(char *str)
{ {
rd_prompt = simple_strtol(str,NULL,0) & 1; pr_warn("ignoring the deprecated prompt_ramdisk= option\n");
return 1; return 1;
} }
__setup("prompt_ramdisk=", prompt_ramdisk); __setup("prompt_ramdisk=", prompt_ramdisk);
...@@ -178,7 +176,7 @@ int __init rd_load_image(char *from) ...@@ -178,7 +176,7 @@ int __init rd_load_image(char *from)
int res = 0; int res = 0;
int in_fd, out_fd; int in_fd, out_fd;
unsigned long rd_blocks, devblocks; unsigned long rd_blocks, devblocks;
int nblocks, i, disk; int nblocks, i;
char *buf = NULL; char *buf = NULL;
unsigned short rotate = 0; unsigned short rotate = 0;
decompress_fn decompressor = NULL; decompress_fn decompressor = NULL;
...@@ -243,21 +241,15 @@ int __init rd_load_image(char *from) ...@@ -243,21 +241,15 @@ int __init rd_load_image(char *from)
printk(KERN_NOTICE "RAMDISK: Loading %dKiB [%ld disk%s] into ram disk... ", printk(KERN_NOTICE "RAMDISK: Loading %dKiB [%ld disk%s] into ram disk... ",
nblocks, ((nblocks-1)/devblocks)+1, nblocks>devblocks ? "s" : ""); nblocks, ((nblocks-1)/devblocks)+1, nblocks>devblocks ? "s" : "");
for (i = 0, disk = 1; i < nblocks; i++) { for (i = 0; i < nblocks; i++) {
if (i && (i % devblocks == 0)) { if (i && (i % devblocks == 0)) {
pr_cont("done disk #%d.\n", disk++); pr_cont("done disk #1.\n");
rotate = 0; rotate = 0;
if (ksys_close(in_fd)) { if (ksys_close(in_fd)) {
printk("Error closing the disk.\n"); printk("Error closing the disk.\n");
goto noclose_input; goto noclose_input;
} }
change_floppy("disk #%d", disk); break;
in_fd = ksys_open(from, O_RDONLY, 0);
if (in_fd < 0) {
printk("Error opening disk.\n");
goto noclose_input;
}
printk("Loading disk #%d... ", disk);
} }
ksys_read(in_fd, buf, BLOCK_SIZE); ksys_read(in_fd, buf, BLOCK_SIZE);
ksys_write(out_fd, buf, BLOCK_SIZE); ksys_write(out_fd, buf, BLOCK_SIZE);
...@@ -284,8 +276,6 @@ int __init rd_load_image(char *from) ...@@ -284,8 +276,6 @@ int __init rd_load_image(char *from)
int __init rd_load_disk(int n) int __init rd_load_disk(int n)
{ {
if (rd_prompt)
change_floppy("root floppy disk to be loaded into RAM disk");
create_dev("/dev/root", ROOT_DEV); create_dev("/dev/root", ROOT_DEV);
create_dev("/dev/ram", MKDEV(RAMDISK_MAJOR, n)); create_dev("/dev/ram", MKDEV(RAMDISK_MAJOR, n));
return rd_load_image("/dev/root"); return rd_load_image("/dev/root");
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment