On 06/20/2011 15:51, John Baldwin wrote:
On Saturday, June 18, 2011 5:04:07 am Henri Hennebert wrote:
On 06/17/2011 19:37, John Baldwin wrote:
On Friday, June 17, 2011 1:06:22 pm Henri Hennebert wrote:
On 06/16/2011 19:35, John Baldwin wrote:
On Thursday, June 16, 2011 8:45:41 am Zhihao Yuan wrote:
Exactly. The MFCed ZFSv28 is different from any patch maintained by
mm@. Maybe some untested changes involved.

Can you try reverting this change:

Author: jhb
Date: Thu Apr 28 17:44:24 2011
New Revision: 221177
URL: http://svn.freebsd.org/changeset/base/221177

Log:
    Due to space constraints, the UFS boot2 and boot1 use an evil hack where
    boot2 calls back into boot1 to perform disk reads.  The ZFS MBR boot blocks
    do not have the same space constraints, so remove this hack for ZFS.
    While here, remove commented out code to support C/H/S addressing from
    zfsldr.  The ZFS and GPT bootstraps always just use EDD LBA addressing.

    MFC after:    2 weeks

Modified:
    head/sys/boot/i386/boot2/Makefile
    head/sys/boot/i386/common/drv.c
    head/sys/boot/i386/zfsboot/Makefile
    head/sys/boot/i386/zfsboot/zfsldr.S

I try with this revision (221177) reverted to no avail:
same error - 'read error'

Hmm, ok.  No other ideas off the top of my head.

I make the same test under virtualbox and get:

A critical error has occurred while running the virtual machine and the
machine execution has been stopped.

I attach VBox.log.

PS - the message 'ZFS: supported version 28' comes from my patch:

Index: sys/boot/zfs/zfsimpl.c
===================================================================
--- sys/boot/zfs/zfsimpl.c      (revision 212549)
+++ sys/boot/zfs/zfsimpl.c      (working copy)
@@ -61,6 +61,8 @@
        STAILQ_INIT(&zfs_vdevs);
        STAILQ_INIT(&zfs_pools);

+       printf("ZFS: supported version %u\n", (unsigned) SPA_VERSION);
+
        zfs_temp_buf = malloc(TEMP_SIZE);
        zfs_temp_end = zfs_temp_buf + TEMP_SIZE;
        zfs_temp_ptr = zfs_temp_buf;

Hmm, can you add printfs and narrow down where the hang happens (or which
reads are failing)?  The VBOX log seems to make no sense.  It shows the
CPU trying to call into the BIOS from within protected mode in the loader
but that shouldn't ever happen (note a cs of 0x2b (which is the loader's
%cs selector) but an eip that looks like a cs:ip of a BIOS routine).

I just try to put printf but I get only 'Read error' without any of my printf.

Previously event my printf in zfs_init don't show up on the console of my netbook. Under VBox it was printed.

Maybe printf is not allowed so soon in zfsboot ?

For the record, I write the bootcode with this 2 commands after booting with mfsbsd (from mm@) and fetching zfsboot in /tmp:

dd if=/tmp/zfsboot of=/dev/ad0s2a bs=512 count=1
dd if=/tmp/zfsboot of=/dev/ad0s2a bs=512 skip=1 seek=1024


My debugging patch in zfsboot.c:

[root@morzine zfsboot]# svn diff zfsboot.c
Index: zfsboot.c
===================================================================
--- zfsboot.c   (revision 223081)
+++ zfsboot.c   (working copy)
@@ -447,10 +447,16 @@
     off_t off;
     struct dsk *dsk;

+       printf("==>trying to boot\n");
+
dmadat = (void *)(roundup2(__base + (int32_t)&_end, 0x10000) - __base);

+       printf("==>about to call bios_getmem()\n");
+
     bios_getmem();

+       printf("==>bios_getmem() completed\n");
+       
     if (high_heap_size > 0) {
        heap_end = PTOV(high_heap_base + high_heap_size);
        heap_next = PTOV(high_heap_base);
@@ -482,6 +488,8 @@

     autoboot = 1;

+       printf("==>about to call zfs_init()\n");
+       
     zfs_init();

     /*


Henri
_______________________________________________
freebsd-stable@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-stable
To unsubscribe, send any mail to "freebsd-stable-unsubscr...@freebsd.org"

Reply via email to