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