On Thu, 27 Nov 2025 23:33:50 -0700
Warner Losh <[email protected]> wrote:

> On Thu, Nov 27, 2025, 10:22 PM FreeBSD User <[email protected]> wrote:
> 
> > On Tue, 25 Nov 2025 21:03:01 -0700
> > Warner Losh <[email protected]> wrote:
> >  
> > > On Sun, Nov 23, 2025 at 7:15 AM A FreeBSD User <[email protected]>
> > > 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
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

(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.

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
> >  

ugen1.5: <USB ASolid> at usbus1, cfg=0 md=HOST spd=SUPER (5.0Gbps) pwr=ON (76mA)
ugen1.5.0: umass0: <ASolid USB, class 0/0, rev 3.20/1.10, addr 4>

  bLength = 0x0012 
  bDescriptorType = 0x0001 
  bcdUSB = 0x0320 
  bDeviceClass = 0x0000  <Probed by interface class>
  bDeviceSubClass = 0x0000 
  bDeviceProtocol = 0x0000 
  bMaxPacketSize0 = 0x0009 
  idVendor = 0x24a9 
  idProduct = 0x205a 
  bcdDevice = 0x0110 
  iManufacturer = 0x0002  <retrieving string failed>
  iProduct = 0x0003  <retrieving string failed>
  iSerialNumber = 0x0004  <retrieving string failed>
  bNumConfigurations = 0x0001 


 Configuration index 0

    bLength = 0x0009 
    bDescriptorType = 0x0002 
    wTotalLength = 0x002c 
    bNumInterfaces = 0x0001 
    bConfigurationValue = 0x0001 
    iConfiguration = 0x0000  <no string>
    bmAttributes = 0x0080 
    bMaxPower = 0x0026 

    Interface 0
      bLength = 0x0009 
      bDescriptorType = 0x0004 
      bInterfaceNumber = 0x0000 
      bAlternateSetting = 0x0000 
      bNumEndpoints = 0x0002 
      bInterfaceClass = 0x0008  <Mass storage>
      bInterfaceSubClass = 0x0006 
      bInterfaceProtocol = 0x0050 
      iInterface = 0x0000  <no string>

     Endpoint 0
        bLength = 0x0007 
        bDescriptorType = 0x0005 
        bEndpointAddress = 0x0081  <IN>
        bmAttributes = 0x0002  <BULK>
        wMaxPacketSize = 0x0400 
        bInterval = 0x0000 
        bRefresh = 0x0000 
        bSynchAddress = 0x0000 

      Additional Descriptor

      bLength = 0x06
      bDescriptorType = 0x30
      bDescriptorSubType = 0x03
       RAW dump: 
       0x00 | 0x06, 0x30, 0x03, 0x00, 0x00, 0x00


     Endpoint 1
        bLength = 0x0007 
        bDescriptorType = 0x0005 
        bEndpointAddress = 0x0002  <OUT>
        bmAttributes = 0x0002  <BULK>
        wMaxPacketSize = 0x0400 
        bInterval = 0x0000 
        bRefresh = 0x0000 
        bSynchAddress = 0x0000 

      Additional Descriptor

      bLength = 0x06
      bDescriptorType = 0x30
      bDescriptorSubType = 0x03
       RAW dump: 
       0x00 | 0x06, 0x30, 0x03, 0x00, 0x00, 0x00

Reply via email to