1*4882a593SmuzhiyunFrom cb45960e575e7c8c88744e09fda93c934cd1b1c1 Mon Sep 17 00:00:00 2001 2*4882a593SmuzhiyunFrom: Jeffy Chen <jeffy.chen@rock-chips.com> 3*4882a593SmuzhiyunDate: Fri, 9 Nov 2018 12:14:29 +0800 4*4882a593SmuzhiyunSubject: [PATCH 1/3] init/do_mounts.c: Retry all fs after failed to mount with 5*4882a593Smuzhiyun "rootfstype=" 6*4882a593Smuzhiyun 7*4882a593SmuzhiyunRetry all filesystems when failed to mount with specified ones. 8*4882a593Smuzhiyun 9*4882a593SmuzhiyunChange-Id: Ic1b794cc61d61f1d0715e3b32400b3e96b0dddea 10*4882a593SmuzhiyunSigned-off-by: Jeffy Chen <jeffy.chen@rock-chips.com> 11*4882a593Smuzhiyun--- 12*4882a593Smuzhiyun init/do_mounts.c | 12 +++++++++++- 13*4882a593Smuzhiyun 1 file changed, 11 insertions(+), 1 deletion(-) 14*4882a593Smuzhiyun 15*4882a593Smuzhiyundiff --git a/init/do_mounts.c b/init/do_mounts.c 16*4882a593Smuzhiyunindex b5f9604d0c98..d85f60d79107 100644 17*4882a593Smuzhiyun--- a/init/do_mounts.c 18*4882a593Smuzhiyun+++ b/init/do_mounts.c 19*4882a593Smuzhiyun@@ -423,12 +423,13 @@ static int __init do_mount_root(const char *name, const char *fs, 20*4882a593Smuzhiyun return ret; 21*4882a593Smuzhiyun } 22*4882a593Smuzhiyun 23*4882a593Smuzhiyun-void __init mount_block_root(char *name, int flags) 24*4882a593Smuzhiyun+void __init mount_block_root(char *name, int mountflags) 25*4882a593Smuzhiyun { 26*4882a593Smuzhiyun struct page *page = alloc_page(GFP_KERNEL); 27*4882a593Smuzhiyun char *fs_names = page_address(page); 28*4882a593Smuzhiyun char *p; 29*4882a593Smuzhiyun char b[BDEVNAME_SIZE]; 30*4882a593Smuzhiyun+ int flags = mountflags; 31*4882a593Smuzhiyun 32*4882a593Smuzhiyun scnprintf(b, BDEVNAME_SIZE, "unknown-block(%u,%u)", 33*4882a593Smuzhiyun MAJOR(ROOT_DEV), MINOR(ROOT_DEV)); 34*4882a593Smuzhiyun@@ -464,6 +465,15 @@ void __init mount_block_root(char *name, int flags) 35*4882a593Smuzhiyun goto retry; 36*4882a593Smuzhiyun } 37*4882a593Smuzhiyun 38*4882a593Smuzhiyun+ /* Retry all filesystems when failed to mount with specified ones */ 39*4882a593Smuzhiyun+ if (root_fs_names) { 40*4882a593Smuzhiyun+ printk("Retrying all filesystems\n"); 41*4882a593Smuzhiyun+ root_fs_names = NULL; 42*4882a593Smuzhiyun+ get_fs_names(fs_names); 43*4882a593Smuzhiyun+ flags = mountflags; 44*4882a593Smuzhiyun+ goto retry; 45*4882a593Smuzhiyun+ } 46*4882a593Smuzhiyun+ 47*4882a593Smuzhiyun printk("List of all partitions:\n"); 48*4882a593Smuzhiyun printk_all_partitions(); 49*4882a593Smuzhiyun printk("No filesystem could mount root, tried: "); 50*4882a593Smuzhiyun-- 51*4882a593Smuzhiyun2.20.1 52*4882a593Smuzhiyun 53