Bug 153552

Summary: [zfs] zfsboot from 8.2-RC1 freeze at boot time
Product: Base System Reporter: Henri Hennebert <hlh>
Component: kernAssignee: Andrey V. Elsukov <ae>
Status: Closed FIXED    
Severity: Affects Only Me    
Priority: Normal    
Version: Unspecified   
Hardware: Any   
OS: Any   

Description Henri Hennebert 2010-12-30 15:20:09 UTC
When trying to boot from second slice with zfsboot from 8.2-RC1, the boot
freeze with "-" in the upper left corner of the screen.

Disk configuration:

arapahoe# gpart show
=>      63  25165728  ad0  MBR  (12G)
        63  12582801    1  freebsd  (6.0G)
  12582864  12582927    2  freebsd  [active]  (6.0G)

=>       0  12582801  ad0s1  BSD  (6.0G)
         0  10485760      1  freebsd-ufs  (5.0G)
  10485760   2097041      2  freebsd-swap  (1.0G)

=>       0  12582927  ad0s2  BSD  (6.0G)
         0  12582927      1  freebsd-zfs  (6.0G)


I put zfsboot with the `classical method' booting with FreeBSD-8.2-RC1-amd64-livefs.iso:

dd if=/boot/zfsboot of=/dev/ad0s2a count=1
dd if=/boot/zfsboot of=/dev/ad0s2a skip=1 seek=1024

I grab an old zfsboot (v15 aware) from a 8.1-STABLE r213582 (thank you
snapshot) and this one work perfectly.

All this have been tested under virtualbox-ose-3.2.10_2 *and* a 'real server'.

Fix: 

zfsboot from 8.1-STABLE r213582 work fine.
Comment 1 Mark Linimon freebsd_committer freebsd_triage 2010-12-30 22:18:50 UTC
Responsible Changed
From-To: freebsd-bugs->freebsd-fs

Over to maintainer(s).
Comment 2 Martin Matuska freebsd_committer freebsd_triage 2010-12-31 10:05:04 UTC
Just a question - is there any particular reason why you are not using
GPT partitioning?
Comment 3 Henri Hennebert 2010-12-31 15:07:45 UTC
I'm using gpt on all my computers except the one which is hosted at OVH 
(http://www.ovh.com/).

The standard procedure offered by OVH use MBR and install a slice of 6GB 
with FreeBSD 8.0. In case of problem I may ask (with the web interface) 
a net boot giving me a mfsBSD under FreeBSD 8.0.

As I want to follow each release and use the latest ZFS, I keep the 
first slice under UFS and upgrade it to 8.x. The rest of the disk is a 
slice with ZFS. In normal use, this slice is used.

In case of problem, I can switch to the first slice and make any repair 
on the second one because it contain a kernel able to import the ZPOOL. 
If the kernel is bad, I can netboot under 8.0, push any correction on 
the UFS slice, reboot from it and put the correction on the ZFS slice.

I can repartition the disk with gpt but I would lost my data under ZFS. 
(Yes I have a backup but I prefer to keep all this running).

On my netbook, I have a first slice with Windows7 preinstalled and the 
second one with ZFS. I have no CD allowing me to reinstall windows7.

BTW thank you for your great work on ZFS.

Henri
Comment 4 Alexander V. Ribchansky 2011-01-02 13:22:03 UTC
Just another "Me too"

If I use /boot/zfsboot form recent STABLE (from snapshot CD
or built myself) to boot up this

monstro# gpart show ad6
=>        63  625142385  ad6  MBR  (298G)
           63  104872257    1  ntfs  [active]  (50G)
    104872320  520270128    2  freebsd  (248G)

monstro# gpart show ad6s2
=>         0  520270128  ad6s2  BSD  (248G)
            0  516075824      1  freebsd-zfs  (246G)
    516075824    4194304      2  freebsd-swap  (2.0G)

I install /boot/zfsboot as

dd if=/boot/zfsboot of=/dev/ad6s2 count=1
dd if=/boot/zfsboot of=/dev/ad6s2a skip=1 seek=1024

when I reboot, system stuck in "-" or "\" or "/" or finaly "|" prompt.

when I install /boot/zfsboot from recent 9-CURRENT snapshot CD all
boots-up perfectly.
More over, fresh built /boot/zfsboot from v28 pachset either from 8-S or
9-C patches stuck as I describe above.

I do not use GPT because of windows on the same machine.
Comment 5 dfilter service freebsd_committer freebsd_triage 2011-03-16 20:05:19 UTC
Author: ae
Date: Wed Mar 16 20:04:56 2011
New Revision: 219702
URL: http://svn.freebsd.org/changeset/base/219702

Log:
  Set control flags in putc(). This should fix zfsboot hangs in drvread().
  
  PR:		kern/153552
  Reviewed by:	jhb
  MFC after:	1 week

Modified:
  head/sys/boot/i386/common/cons.c

Modified: head/sys/boot/i386/common/cons.c
==============================================================================
--- head/sys/boot/i386/common/cons.c	Wed Mar 16 17:09:51 2011	(r219701)
+++ head/sys/boot/i386/common/cons.c	Wed Mar 16 20:04:56 2011	(r219702)
@@ -37,6 +37,7 @@ void
 putc(int c)
 {
 
+	v86.ctl = V86_FLAGS;
 	v86.addr = 0x10;
 	v86.eax = 0xe00 | (c & 0xff);
 	v86.ebx = 0x7;
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscribe@freebsd.org"
Comment 6 Eitan Adler freebsd_committer freebsd_triage 2011-03-16 21:06:45 UTC
State Changed
From-To: open->patched

committed in r219702 


Comment 7 Eitan Adler freebsd_committer freebsd_triage 2011-03-16 21:06:45 UTC
Responsible Changed
From-To: freebsd-fs->ae

committed in r219702
Comment 8 dfilter service freebsd_committer freebsd_triage 2011-03-23 06:19:36 UTC
Author: ae
Date: Wed Mar 23 06:19:17 2011
New Revision: 219896
URL: http://svn.freebsd.org/changeset/base/219896

Log:
  MFC r219702:
    Set control flags in putc(). This should fix zfsboot hangs in drvread().
  
    PR:		kern/153552
    Reviewed by:	jhb

Modified:
  stable/8/sys/boot/i386/common/cons.c
Directory Properties:
  stable/8/sys/   (props changed)
  stable/8/sys/amd64/include/xen/   (props changed)
  stable/8/sys/cddl/contrib/opensolaris/   (props changed)
  stable/8/sys/contrib/dev/acpica/   (props changed)
  stable/8/sys/contrib/pf/   (props changed)

Modified: stable/8/sys/boot/i386/common/cons.c
==============================================================================
--- stable/8/sys/boot/i386/common/cons.c	Wed Mar 23 05:13:54 2011	(r219895)
+++ stable/8/sys/boot/i386/common/cons.c	Wed Mar 23 06:19:17 2011	(r219896)
@@ -37,6 +37,7 @@ void
 putc(int c)
 {
 
+	v86.ctl = V86_FLAGS;
 	v86.addr = 0x10;
 	v86.eax = 0xe00 | (c & 0xff);
 	v86.ebx = 0x7;
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscribe@freebsd.org"
Comment 9 Andrey V. Elsukov freebsd_committer freebsd_triage 2011-03-23 06:20:50 UTC
State Changed
From-To: patched->closed

Merged to stable/8.