Re: freezing on unmountin ext2fs USB device

From: Warner Losh <imp_at_bsdimp.com>
Date: Sat, 29 Nov 2025 10:32:09 UTC
On Sat, Nov 29, 2025 at 1:59 AM FreeBSD User <freebsd@walstatt-de.de> wrote:

> On Thu, 27 Nov 2025 23:33:50 -0700
> Warner Losh <imp@bsdimp.com> wrote:
>
> > On Thu, Nov 27, 2025, 10:22 PM FreeBSD User <freebsd@walstatt-de.de>
> wrote:
> >
> > > On Tue, 25 Nov 2025 21:03:01 -0700
> > > Warner Losh <imp@bsdimp.com> wrote:
> > >
> > > > On Sun, Nov 23, 2025 at 7:15 AM A FreeBSD User <
> freebsd@walstatt-de.de>
> > > > wrote:
> > > >
> > > > > Hello,
> > > > >
> > > > > running FreeBSD 16.0-CURRENT #4 master-n282101-c8cf5a99f82b: Sun
> Nov 23
> > > > > 13:56:23 CET
> > > > > 2025 amd64 I'm running into a serious problem when mounting an
> ext2fs
> > > > > formated USB Flash
> > > > > device (512GB). The devince contains files written by a Linux
> system,
> > > > > mounting the USB Flash
> > > > > via extended4fs, the size of the written datafiles is > 128GB.
> Deleting
> > > > > those files larger
> > > > > than some 20GB results in an I/O error reported by FReeBSD (# sudo
> rm
> > > > > /mnt/USB/filename).
> > > > > Unmounting the ext2fs after deletion (sudo umount /mnt) results in
> a
> > > total
> > > > > freeze of the box.
> > > > > No crash, no core dump, nothing. I waited almost an hour hoping for
> > > > > recover. I have to
> > > > > physically switch off the box.
> > > > >
> > > > > I checked with other USB flash I have at hand, one Samsung 256 GB,
> ZFS
> > > -
> > > > > no problem, another
> > > > > 128GB, UFS, no problem and several much smaller (4 - 64GB) with
> FAT or
> > > UFS
> > > > > filesystems, all no
> > > > > problem.
> > > > >
> > > > > I can not figure out whether it is the USB flash drive itself,
> the
> > > size or
> > > > > the ext2fs itself
> > > > > causing the problem.
> > > > >
> > > > > Does anybody see similar problems or do have an tip to
> investigate
> > > without
> > > > > risking my box'
> > > > > health switching it on/off on failure?
> > > > >
> > > >
> > > > I've not seen this on the smaller tests I've been able to run.
> > > >
> > > > So can you share the error messages that you get when you say you
> get I/O
> > > > errors? I'd like to see if this is due to an error in ext2fs or on
> the
> > > USB
> > > > drive. It's kinda sounding a little like the particular USB is
> triggering
> > > > some kind of issue that at the very least we should work around.
> Given
> > > that
> > > > it's not happening on all ext2fs drives you try to access, I'm
> leaning
> > > > towards the drive, but you never know.
> > > >
> > > > Thanks
> > >
> > > Plugging the USB flash gives the following hardware information on the
> > > console:
> > >
> > > [...]
> > > ugen1.5: <ASolid USB> at usbus1
> > > umass0 on uhub6
> > > umass0: <ASolid USB, class 0/0, rev 3.20/1.10, addr 4> on usbus1
> > > (probe0:umass-sim0:0:0:0): REPORT LUNS. CDB: a0 00 00 00 00 00 00 00
> 00 10
> > > 00 00
> > > (probe0:umass-sim0:0:0:0): CAM status: SCSI Status Error
> > > (probe0:umass-sim0:0:0:0): SCSI status: Check Condition
> > > (probe0:umass-sim0:0:0:0): SCSI sense: ILLEGAL REQUEST asc:20,0
> (Invalid
> > > command
> > > operation code) (probe0:umass-sim0:0:0:0): Error 22, Unretryable error
> > > da4 at umass-sim0 bus 0 scbus11 target 0 lun 0
> > > da4: <ASolid USB > Removable Direct Access SPC-4 SCSI device
> > > da4: Serial Number somer serial numbers
> > > da4: 400.000MB/s transfers
> > > da4: 475000MB (972800000 512 byte sectors)
> > > da4: quirks=0x2<NO_6_BYTE>
> > > [...]
> > >
> > > Trying to mount via:  # mount -t ext2fs /dev/da4p1 /mnt/image
> > >
> > > [...]
> > > (da4:umass-sim0:0:0:0): got CAM status 0x444
> > > (da4:umass-sim0:0:0:0): fatal error, failed to attach to device
> > > da4 at umass-sim0 bus 0 scbus11 target 0 lun 0
> > > da4: <ASolid USB >  s/n some serial numbers  detached
> > > (da4:umass-sim0:0:0:0): Periph destroyed
> > >
> > > mount: /dev/da4p1: Device not configured
> > >
> >
> > This has the classic hallmarks of a drive that loses its mind on
> > SYNCHRONIZE CACHE. Normally, we detect that automatically, but sometimes
> we
> > don't. Let's see if this drive is suffering from that. These instructions
> > are a bit long, but the shorter ones are harder to explain :).
> >
> > First, you'll need to find what this drive is. You'll need to use
> > "usbconfig -v" to find the drive. Redirect that to a file, then search,
> you
> > should find something akin to
> >
> > ugen0.13: <Flash Drive Silicon Motion, Inc. - Taiwan (formerly Feiya
> > Technology Corp.)> at usbus0, cfg=0 md=HOST spd=SUPER (5.0Gbps) pwr=ON
> > (76mA)
> > ugen0.13.0: umass1: <ASolid USB, class 0/0, rev 3.00/11.00, addr 12>
> >
> > The first line might not match, and the numbers will be different. But
> > you'll need the vendor and product IDs from this drive. They are a few
> > lines later and look akin to the following:
> > ...
> >   idVendor = 0x090c
> >   idProduct = 0x1000
> > ...
>
> You'll find the required output as attachment, desinated usb_asolid.txt.
>
> The required identifications should be
>
>   idVendor = 0x24a9
>   idProduct = 0x205a
>   bcdDevice = 0x0110
>
>
> >
> > Now, remove the drive and type in the following (with your vendor and
> > product replacing mine):
> >
> > usbconfig add_dev_quirk_vplh 0x090c 0x1000 0x0000
> > 0xffff UQ_MSC_NO_SYNC_CACHE
>
> In my case in question it would be
>
> usbconfig add_dev_quirk_vplh 0x24a9 0x205a 0x0000 0xffff
> UQ_MSC_NO_SYNC_CACHE
>
> right?
>
> >
> > This will add a quirk to the usb quirk table. You should see
> NO_SYNC_CACHE
> > show up in the da4 probe quirk report when you plug the drive back in.
> >
> > If that fixes it, please let me know. "Hang on close" or "Periph goes
> away
> > on close" very often is due to this. umount will close the device. I may
> > have additional questions for you to help me add a quirk or a heuristic
> to
> > the code... I'm not yet sure, though, of the correlation to big files. It
> > may be something else, or it may be this.
>
> Do not see required state change in output:
>
> [...]
> ugen1.5: <ASolid USB> at usbus1
> umass0 on uhub6
> umass0: <ASolid USB, class 0/0, rev 3.20/1.10, addr 4> on usbus1
> (probe0:umass-sim0:0:0:0): REPORT LUNS. CDB: a0 00 00 00 00 00 00 00 00 10
> 00 00
> (probe0:umass-sim0:0:0:0): CAM status: SCSI Status Error
> (probe0:umass-sim0:0:0:0): SCSI status: Check Condition
> (probe0:umass-sim0:0:0:0): SCSI sense: ILLEGAL REQUEST asc:20,0 (Invalid
> command
> operation code) (probe0:umass-sim0:0:0:0): Error 22, Unretryable error
>

I would have expected a quirk line for umass0:

[911991.296485] umass1 numa-domain 0 on uhub13
[911991.299036] umass1: <Samsung Flash Drive, class 0/0, rev 3.00/11.00,
addr 12> on usbus0
[911991.305703] umass1:  SCSI over Bulk-Only; quirks =
0x4000<NO_SYNCHRONIZE_CACHE>

Is what I get. I don't see the SCSI over Bulk-Only line either in your
demsg. I wonder why.

I think your device is at 0.6, so something like the following (confirm
with usbconfig showing ugen0.4 as this device):

usbconfig -d ugen0.6 power_off
usbconfig -d ugne0.6 add_quirk UQ_MSC_NO_SYNC_CACHE
usbconfig -d ugen0.6 power_on

is what I did to generate the umass line above (but with 0.13 instead of
0.6). I wish there was a quirk for REPORT LUNS not being supported, but
that warning is harmless. We'll ignore the error and go on to the next
thing (I should fix the errors we're just going to ignore when they aren't
supported, but I digress). If you can build a kernel, adding USB_DEBUG to
it for the duration of testing would give us more information, including
the line that I have and that you don't (maybe I should make that
unconditional).


> da4 at umass-sim0 bus 0 scbus11 target 0 lun 0
> da4: <ASolid USB > Removable Direct Access SPC-4 SCSI device
> da4: Serial Number 25010993010046
> da4: 400.000MB/s transfers
> da4: 475000MB (972800000 512 byte sectors)
> da4: quirks=0x2<NO_6_BYTE>
> ugen1.5: <ASolid USB> at usbus1 (disconnected)
> umass0: at uhub6, port 1, addr 4 (disconnected)
> da4 at umass-sim0 bus 0 scbus11 target 0 lun 0
> da4: <ASolid USB >  s/n 25010993010046 detached
> (da4:umass-sim0:0:0:0): Periph destroyed
> umass0: detached
> ugen1.5: <ASolid USB> at usbus1
> umass0 on uhub6
> umass0: <ASolid USB, class 0/0, rev 3.20/1.10, addr 5> on usbus1
> (probe0:umass-sim0:0:0:0): REPORT LUNS. CDB: a0 00 00 00 00 00 00 00 00 10
> 00 00
> (probe0:umass-sim0:0:0:0): CAM status: SCSI Status Error
> (probe0:umass-sim0:0:0:0): SCSI status: Check Condition
> (probe0:umass-sim0:0:0:0): SCSI sense: ILLEGAL REQUEST asc:20,0 (Invalid
> command
> operation code) (probe0:umass-sim0:0:0:0): Error 22, Unretryable error
> da4 at umass-sim0 bus 0 scbus11 target 0 lun 0
> da4: <ASolid USB > Removable Direct Access SPC-4 SCSI device
> da4: Serial Number 25010993010046
> da4: 400.000MB/s transfers
> da4: 475000MB (972800000 512 byte sectors)
> da4: quirks=0x2<NO_6_BYTE>Tryping to mount
>
> [...]
>
> Trying to mount /dev/da4p1 (which is the supposed ext4fs/ext2fs partition
> on the USB
> flash device) results in:
>
> WARNING: R/W mount denied.  Filesystem is not clean - run fsck
>
> and when trying to solve the problem via
>
> [...]
> # /compat/linux/sbin/fsck.ext4 /dev/da4p1
> e2fsck 1.46.5 (30-Dec-2021)
> /compat/linux/sbin/fsck.ext4: No such file or directory while trying to
> open /dev/da4p1
> Possibly non-existent device?
>
> and on console
>

the following are the only new one?


> (da4:umass-sim0:0:0:0): got CAM status 0x444
> (da4:umass-sim0:0:0:0): fatal error, failed to attach to device
> da4 at umass-sim0 bus 0 scbus11 target 0 lun 0
> da4: <ASolid USB >  s/n 25010993010046 detached
> (da4:umass-sim0:0:0:0): Periph destroyed
>
>
> I think this special "low cost" device did not only lost its mind, it lost
> its head
> also.
>

Yes. I kinda want to swap you for this: you send it to me and I'll send you
one of my happy devices :)

Warner


> Regards,
>
> Oliver
>
> p.s. One note:
>
> # gpart show -l da4
> =>       40  972799920  da4  GPT  (464G)
>          40  972799920    1  (null)  (464G)
>
> The device in question does have a GPT partition layout. I guess it
> doesn't matter here,
> but I'll add it anyway for the record.
>
> >
> > Warner
> >
> > [...]
> > >
> > > [...]
> > > # /compat/linux/sbin/fsck.ext4 /dev/da4p1
> > > e2fsck 1.46.5 (30-Dec-2021)
> > > SINA was not cleanly unmounted, check forced.
> > > Pass 1: Checking inodes, blocks, and sizes
> > > Pass 2: Checking directory structure
> > > Pass 3: Checking directory connectivity
> > > Pass 4: Checking reference counts
> > > Pass 5: Checking group summary information
> > > Error writing file system info: Invalid argument
> > >
> > > XXXX: ***** FILE SYSTEM WAS MODIFIED *****
> > >
> > > [...]
> > >
> > > detaching and attaching to another USB slot on the same (external) HUB:
> > >
> > > [...]
> > > ugen1.5: <ASolid USB> at usbus1
> > > umass0 on uhub6
> > > umass0: <ASolid USB, class 0/0, rev 3.20/1.10, addr 6> on usbus1
> > > (probe0:umass-sim0:0:0:0): REPORT LUNS. CDB: a0 00 00 00 00 00 00 00
> 00 10
> > > 00 00
> > > (probe0:umass-sim0:0:0:0): CAM status: SCSI Status Error
> > > (probe0:umass-sim0:0:0:0): SCSI status: Check Condition
> > > (probe0:umass-sim0:0:0:0): SCSI sense: ILLEGAL REQUEST asc:20,0
> (Invalid
> > > command
> > > operation code) (probe0:umass-sim0:0:0:0): Error 22, Unretryable error
> > > da4 at umass-sim0 bus 0 scbus11 target 0 lun 0
> > > da4: <ASolid USB > Removable Direct Access SPC-4 SCSI device
> > > da4: Serial Number some serial numbers
> > > da4: 400.000MB/s transfers
> > > da4: 475000MB (972800000 512 byte sectors)
> > > da4: quirks=0x2<NO_6_BYTE>
> > > linux: jid 0 pid 5087 (fsck.ext4): linux_ioctl_fallback fd=3,
> cmd=0x127c
> > > ('\^R',124) is
> > > not implemented linux: jid 0 pid 5087 (fsck.ext4): linux_ioctl_fallback
> > > fd=3, cmd=0x125e
> > > ('\^R',94) is not implemented (da4:umass-sim0:0:0:0): got CAM status
> 0x444
> > > (da4:umass-sim0:0:0:0): fatal error, failed to attach to device
> > > da4 at umass-sim0 bus 0 scbus11 target 0 lun 0
> > > da4: <ASolid USB >  s/n some serial numbers detached
> > > (da4:umass-sim0:0:0:0): Periph destroyed
> > >
> > > [...]
> > >
> > > I can not even mount the device on CURRENT (FreeBSD 16.0-CURRENT #1
> > > master-n282217-34d66b0c96d5: Fri Nov 28 05:15:56 CET 2025 amd64).
> > >
> > > Package used for linux operation: emulators/linux-rl9
> > >
>
>