newfs segfault (was:nvme dma returns EFBIG (27))

Jesper Schmitz Mouridsen jsm at FreeBSD.org
Thu Feb 11 13:22:37 UTC 2021


On 11.02.2021 04.13, Mark Millard wrote:
> On 2021-Feb-10, at 15:01, Jesper Schmitz Mouridsen <jsm at FreeBSD.org> wrote:
>
>> On 10.02.2021 23.08, Emmanuel Vadot wrote:
>>> On Wed, 10 Feb 2021 22:55:27 +0100
>>> Jesper Schmitz Mouridsen <jsm at FreeBSD.org> wrote:
>>>
>>>> Hi
>>>>
>>>> I can dd blocks from /dev/nda0p0 but I cannot run newfs.
>>>>
>>>> It prints nvme0: nvme_payload_map: err  27.  and ctrl+t shows it is
>>>> stuck in physwri
>>>>
>>>> https://github.com/freebsd/freebsd-src/blob/a6dc68c0e0f8a24ffaf0b4e78e58141ef7897047/sys/dev/nvme/nvme_qpair.c#L1003
>>>>
>>>> https://github.com/freebsd/freebsd-src/blob/c6c70c074633569447be4bfd2b694a1c294015bd/sys/dev/nvme/nvme_qpair.c#L567
>>>>
>>>> I could format as ext4 under Linux.
>>>>
>>>> Any hints or pointers are welcome.
>>>>
>>>> Thanks
>>>>
>>>> Jesper
>>>   What board ?
>>>   What version of FreeBSD ?
>>>   dmesg ?
>>>
>>>   Any of the above is *always* required for trying to reproduce and
>>> finding bugs.
>>>
>>>   Cheers,
>>>
>> I was on FreeBSD generic 13.0-ALPHA1 on
>>
>> on FreeBSD generic 13.0-ALPHA2 FreeBSD 13.0-ALPHA2 #0 c256201-g02611ef8ee9
>>
>> newfs /dev/nda0p1v now core dumps.
>>
>> Program terminated with signal SIGSEGV, Segmentation fault.
>> #0  isblock (cp=0x100247f9f <error: Cannot access memory at address 0x100247f9f>, h=0, fs=<optimized out>) at /usr/src/sbin/newfs/mkfs.c:1085
>> 1085    /usr/src/sbin/newfs/mkfs.c: No such file or directory.
>> (gdb) bt
>> #0  isblock (cp=0x100247f9f <error: Cannot access memory at address 0x100247f9f>, h=0, fs=<optimized out>) at /usr/src/sbin/newfs/mkfs.c:1085
>> #1  alloc (size=4096, mode=mode at entry=16893) at /usr/src/sbin/newfs/mkfs.c:1001
>> #2  0x0000000000215d20 in fsinit (utime=<optimized out>) at /usr/src/sbin/newfs/mkfs.c:948
>> #3  mkfs (pp=<optimized out>, pp at entry=0x0, fsys=<optimized out>, fsys at entry=0xffffffffee26 "/dev/nda0p1") at /usr/src/sbin/newfs/mkfs.c:611
>> #4  0x00000000002133ec in main (argc=<optimized out>, argv=<optimized out>) at /usr/src/sbin/newfs/newfs.c:405
>>
>> It is on my pinebookpro. nvmecontrol devlist
>>   nvme0: KINGSTON SA2000M8250G
>>      nvme0ns1 (238475MB)
> Care to try somehting like . . .
>
> # gdb newfs
> . . .
> Reading symbols from newfs...
> Reading symbols from /usr/lib/debug//sbin/newfs.debug...
> (gdb) start /dev/nda0p1v
> Temporary breakpoint 1 at 0x2129f8: file /usr/fbsd/mm-src/sbin/newfs/newfs.c, line 142.
> . . .
> Temporary breakpoint 1, main (argc=1, argv=0xffffffffeb80) at /usr/fbsd/mm-src/sbin/newfs/newfs.c:142
> 142             reserved = 0;
> (gdb) print &disk.d_sbunion.d_fs
> ???
> (gdb) print (&disk.d_sbunion.d_fs)+1
> ???
>
> I'm curious about the ??? figures reports vs. the 0x100247f9f
> in your backtrace. (Not that I'm sure what to do with the
> reported information.) The start causes some libraries to
> load, which is why I indicated to use it.
Below gdb output and nvmecontrol identify nvme0


Type "apropos word" to search for commands related to "word"...

Reading symbols from newfs...
Reading symbols from /usr/lib/debug//sbin/newfs.debug...
(gdb) b newfs.c:142
Breakpoint 1 at 0x2129d8: file /usr/src/sbin/newfs/newfs.c, line 142.
(gdb) c
The program is not being run.
(gdb) start /dev/nda0p1
Temporary breakpoint 2 at 0x2129d8: file /usr/src/sbin/newfs/newfs.c, 
line 142.
Starting program: /sbin/newfs /dev/nda0p1

Breakpoint 1, main (argc=2, argv=0xffffffffea60)
     at /usr/src/sbin/newfs/newfs.c:142
warning: Source file is more recent than executable.
142             reserved = 0;
(gdb)  print &disk.d_sbunion.d_fs
$1 = (struct fs *) 0x237fa0 <disk+64>
(gdb) print (&disk.d_sbunion.d_fs)+1

$2 = (struct fs *) 0x238500 <disk+1440>

nvmecontrol identify nvme0
Controller Capabilities/Features
================================
Vendor ID:                   2646
Subsystem Vendor ID:         2646
Serial Number:
Model Number:                KINGSTON SA2000M8250G
Firmware Version:            S5Z42105
Recommended Arb Burst:       6
IEEE OUI Identifier:         b7 26 00
Multi-Path I/O Capabilities: Not Supported
Max Data Transfer Size:      131072 bytes
Controller ID:               0x0001
Version:                     1.3.0

Admin Command Set Attributes
============================
Security Send/Receive:       Supported
Format NVM:                  Supported
Firmware Activate/Download:  Supported
Namespace Managment:         Not Supported
Device Self-test:            Supported
Directives:                  Not Supported
NVMe-MI Send/Receive:        Not Supported
Virtualization Management:   Not Supported
Doorbell Buffer Config:      Not Supported
Get LBA Status:              Not Supported
Sanitize:                    crypto, block,
Abort Command Limit:         5
Async Event Request Limit:   8
Number of Firmware Slots:    2
Firmware Slot 1 Read-Only:   No
Per-Namespace SMART Log:     Yes
Error Log Page Entries:      256
Number of Power States:      5
Total NVM Capacity:          0 bytes
Unallocated NVM Capacity:    0 bytes
Firmware Update Granularity: 00 (Not Reported)
Host Buffer Preferred Size:  0 bytes
Host Buffer Minimum Size:    0 bytes

NVM Command Set Attributes
==========================
Submission Queue Entry Size
   Max:                       64
   Min:                       64
Completion Queue Entry Size
   Max:                       16
   Min:                       16
Number of Namespaces:        1
Compare Command:             Supported
Write Uncorrectable Command: Supported
Dataset Management Command:  Supported
Write Zeroes Command:        Supported
Save Features:               Supported
Reservations:                Not Supported
Timestamp feature:           Supported
Verify feature:              Not Supported
Fused Operation Support:     Not Supported
Format NVM Attributes:       Crypto Erase, Per-NS Erase, Per-NS Format
Volatile Write Cache:        Present, flush all

NVM Subsystem Name:          (null)


More information about the freebsd-arm mailing list