The newboot rootconf() subroutine 

    http://cvs.opensolaris.org/source/xref/usr/src/uts/common/fs/vfs.c#rootconf

contains code which is (more or less) cloned from 

    
http://cvs.opensolaris.org/source/xref/usr/src/uts/common/os/swapgeneric.c#rootconf


The newboot rootconf() code in vfs.c contains a panic call which references the
string "svm_bootpath" at line 3889:

   3885         error = VFS_MOUNTROOT(rootvfs, ROOT_INIT);
   ...
   3889         if (error)
   3890                 cmn_err(CE_PANIC, "cannot mount root path %s", 
svm_bootpath);
   3891         return (error);

In my tests the "svm_bootpath" character array always contains an empty string,
so the panic message printed is "cannot mount root path ".  I guess svm_bootpath
is a non-empty string only if svm (solaris volume manager ?) is used on the root
device.


The original code in swapgeneric.c seems to print more reasonble panic messages:

    202         error = VFS_MOUNTROOT(rootvfs, ROOT_INIT);
    ...
    206         if (error)
    207                 cmn_err(CE_CONT, "Cannot mount root on %s fstype %s\n",
    208                     rootfs.bo_name, rootfs.bo_fstype);
    209         else
    210                 cmn_err(CE_CONT, "?root on %s fstype %s\n",
    211                     rootfs.bo_name, rootfs.bo_fstype);
    212         return (error);


Why doesn't SPARC (swapgeneric.c rootconf()) report the svm_rootpath when 
mounting
the root filesystem has failed? Or why must x86 newboot (vfs.c rootconf()) 
report
svm_rootpath when mounting the root fs has failed?
This message posted from opensolaris.org

Reply via email to