Linux USB
 help / color / mirror / Atom feed
* Samsung T5 SSD: "Synchronize Cache(10) failed" on removal
@ 2023-09-09  8:06 Jonathan Woithe
  2023-09-09 16:14 ` Alan Stern
  0 siblings, 1 reply; 4+ messages in thread
From: Jonathan Woithe @ 2023-09-09  8:06 UTC (permalink / raw)
  To: linux-usb

Hi all

Recently I became aware that my system reports a "Synchronize Cache(10)
failed" error whenever a Samsung T5 500 GB SSD is unplugged:

     sd 11:0:0:0: [sdg] Synchronizing SCSI cache
     sd 11:0:0:0: [sdg] Synchronize Cache(10) failed: Result: hostbyte=0x07
                  driverbyte=DRIVER_OK

Occasionally the "hostbyte" is 0x01 instead of 0x07.  I don't think this is
a new problem since it's been occuring possibly since I started using the T5
in early 2021.  A second Samsung T5 (a 250 GB model) triggers the
same messages when removed.

To produce the failure message it is necessary to simply connect the drive
and then remove it.  Mounting a filesystem from the drive is not required. 
The Linux system does not auto-mount these drives.

I have seen the problem under kernels 5.15.38, 5.15.72, 5.15.117 and 6.1.52.

The T5 uses uas by default.  I have tried forcing the use of usb-storage
with

  options usb-storage quirks=04e8:61f5:u

This binds the device to usb-storage instead of uas (according to dmesg) but
the error is still reported on removal.

I guess the fundamental question is whether this error is significant in any
way.  If it's of no consequence then I'll happily ignore it and move on.

If on the other hand it' is something best fixed, please let me know how I
can assist with this.

The device is reported by lsusb as

  Bus 004 Device 004: ID 04e8:61f5 Samsung Electronics Co., Ltd Portable SSD T5

The verbose lsusb output is included at the end of this post[1].

The "Synchronize Cache(10) failed" message is seen regardless of what USB
sockets the drive is connected to:

 * Front panel USB2 [Intel Corporation 82801JI (ICH10 Family) USB2 EHCI]
 * Rear panel USB2  [Intel Corporation 82801JI (ICH10 Family) USB2 EHCI]
 * PCIe USB3   [ASMedia Technology Inc. ASM1142 USB 3.1 Host Controller]
 * PCIe USB-C  [ASMedia Technology Inc. ASM1142 USB 3.1 Host Controller]

The mainboard has no onboard USB3 or USB-C sockets.  These are provided by
a PCIe card.

The Samsung T5 drive does not appear to be adversely affected by the error
report - I have not yet experienced any data loss.

I am seeing the same "Synchronize Cache(10) failed" on other machines
which have different hardware.  I can dig the hardware details up if that
would be useful.

Regards
  jonathan

[1] Samsung T5 "lsusb -v" output follows.

Bus 004 Device 004: ID 04e8:61f5 Samsung Electronics Co., Ltd Portable SSD T5
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               3.10
  bDeviceClass            0 
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0         9
  idVendor           0x04e8 Samsung Electronics Co., Ltd
  idProduct          0x61f5 Portable SSD T5
  bcdDevice            1.00
  iManufacturer           2 Samsung
  iProduct                3 Portable SSD T5
  iSerial                 1 1234568370EF
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x0079
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0x80
      (Bus Powered)
    MaxPower              896mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass         8 Mass Storage
      bInterfaceSubClass      6 SCSI
      bInterfaceProtocol     80 Bulk-Only
      iInterface              0 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0400  1x 1024 bytes
        bInterval               0
        bMaxBurst              15
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x02  EP 2 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0400  1x 1024 bytes
        bInterval               0
        bMaxBurst              15
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       1
      bNumEndpoints           4
      bInterfaceClass         8 Mass Storage
      bInterfaceSubClass      6 SCSI
      bInterfaceProtocol     98 
      iInterface              0 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0400  1x 1024 bytes
        bInterval               0
        bMaxBurst              15
        MaxStreams             32
        Data-in pipe (0x03)
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x02  EP 2 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0400  1x 1024 bytes
        bInterval               0
        bMaxBurst              15
        MaxStreams             32
        Data-out pipe (0x04)
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x83  EP 3 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0400  1x 1024 bytes
        bInterval               0
        bMaxBurst              15
        MaxStreams             32
        Status pipe (0x02)
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x04  EP 4 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0400  1x 1024 bytes
        bInterval               0
        bMaxBurst               0
        Command pipe (0x01)
Binary Object Store Descriptor:
  bLength                 5
  bDescriptorType        15
  wTotalLength       0x002a
  bNumDeviceCaps          3
  USB 2.0 Extension Device Capability:
    bLength                 7
    bDescriptorType        16
    bDevCapabilityType      2
    bmAttributes   0x0000f41e
      BESL Link Power Management (LPM) Supported
    BESL value     1024 us 
    Deep BESL value    61440 us 
  SuperSpeed USB Device Capability:
    bLength                10
    bDescriptorType        16
    bDevCapabilityType      3
    bmAttributes         0x00
    wSpeedsSupported   0x000e
      Device can operate at Full Speed (12Mbps)
      Device can operate at High Speed (480Mbps)
      Device can operate at SuperSpeed (5Gbps)
    bFunctionalitySupport   1
      Lowest fully-functional device speed is Full Speed (12Mbps)
    bU1DevExitLat          10 micro seconds
    bU2DevExitLat        2047 micro seconds
  SuperSpeedPlus USB Device Capability:
    bLength                20
    bDescriptorType        16
    bDevCapabilityType     10
    bmAttributes         0x00000001
      Sublink Speed Attribute count 1
      Sublink Speed ID count 0
    wFunctionalitySupport   0x1100
    bmSublinkSpeedAttr[0]   0x000a4030
      Speed Attribute ID: 0 10Gb/s Symmetric RX SuperSpeedPlus
    bmSublinkSpeedAttr[1]   0x000a40b0
      Speed Attribute ID: 0 10Gb/s Symmetric TX SuperSpeedPlus
Device Status:     0x0000
  (Bus Powered)

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: Samsung T5 SSD: "Synchronize Cache(10) failed" on removal
  2023-09-09  8:06 Samsung T5 SSD: "Synchronize Cache(10) failed" on removal Jonathan Woithe
@ 2023-09-09 16:14 ` Alan Stern
  2023-09-10  9:11   ` Jonathan Woithe
  0 siblings, 1 reply; 4+ messages in thread
From: Alan Stern @ 2023-09-09 16:14 UTC (permalink / raw)
  To: Jonathan Woithe; +Cc: linux-usb

On Sat, Sep 09, 2023 at 05:36:48PM +0930, Jonathan Woithe wrote:
> Hi all
> 
> Recently I became aware that my system reports a "Synchronize Cache(10)
> failed" error whenever a Samsung T5 500 GB SSD is unplugged:
> 
>      sd 11:0:0:0: [sdg] Synchronizing SCSI cache
>      sd 11:0:0:0: [sdg] Synchronize Cache(10) failed: Result: hostbyte=0x07
>                   driverbyte=DRIVER_OK
> 
> Occasionally the "hostbyte" is 0x01 instead of 0x07.  I don't think this is
> a new problem since it's been occuring possibly since I started using the T5
> in early 2021.  A second Samsung T5 (a 250 GB model) triggers the
> same messages when removed.
> 
> To produce the failure message it is necessary to simply connect the drive
> and then remove it.  Mounting a filesystem from the drive is not required. 
> The Linux system does not auto-mount these drives.
> 
> I have seen the problem under kernels 5.15.38, 5.15.72, 5.15.117 and 6.1.52.
> 
> The T5 uses uas by default.  I have tried forcing the use of usb-storage
> with
> 
>   options usb-storage quirks=04e8:61f5:u
> 
> This binds the device to usb-storage instead of uas (according to dmesg) but
> the error is still reported on removal.
> 
> I guess the fundamental question is whether this error is significant in any
> way.  If it's of no consequence then I'll happily ignore it and move on.

The significance is this: When you remove a drive from the system, the 
kernel tries to make sure that any data sent to the drive and still in 
the drive's cache gets safely written out to permanent storage.  It does 
this by sending a SYNCHRONIZE CACHE command to the drive.  Of course, if 
you haven't written anything to the drive then there will be no data to 
synchronize.  Also, if you unmounted a filesystem on the drive just 
before removing it then there will be no data to synchronize, because 
unmounting automatically performs a SYNCHRONIZE CACHE.  In either case, 
failure of the command will have no bad effects.

The reason the error message shows up at all is that the kernel doesn't 
know you're removing the drive until the USB cable gets unplugged.  And 
by then, it's too late to send anything to the drive -- the attempted 
command fails because the computer obviously can't communicate with a 
device that has been unplugged.

> If on the other hand it' is something best fixed, please let me know how I
> can assist with this.

The most likely situation where this would indicate a real problem would 
be if you had mounted a filesystem on the drive, written some data, and 
then unplugged it without unmounting first.  If you haven't done that 
then you don't have to worry about anything.

On the other hand, if you would like to get rid of those annoying error 
messages, you can do so by telling the kernel that the drive is about to 
be removed before you unplug it.  You do this by writing to the "remove" 
attribute file in the USB device's sysfs device directory; this is the 
equivalent of using the "Safely remove a device" button in Windows.  
Some GUIs may provide an easy-to-use mechanism for doing this, such as 
an "eject" selection on a device menu.

Alan Stern

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: Samsung T5 SSD: "Synchronize Cache(10) failed" on removal
  2023-09-09 16:14 ` Alan Stern
@ 2023-09-10  9:11   ` Jonathan Woithe
  2023-09-10 14:35     ` Alan Stern
  0 siblings, 1 reply; 4+ messages in thread
From: Jonathan Woithe @ 2023-09-10  9:11 UTC (permalink / raw)
  To: Alan Stern; +Cc: linux-usb

Hi Alan

On Sat, Sep 09, 2023 at 12:14:49PM -0400, Alan Stern wrote:
> > If on the other hand it' is something best fixed, please let me know how I
> > can assist with this.
> 
> The most likely situation where this would indicate a real problem would 
> be if you had mounted a filesystem on the drive, written some data, and 
> then unplugged it without unmounting first.  If you haven't done that 
> then you don't have to worry about anything.

Thanks for confirming this.  The scenarios I've outlined all involve drives
which have definitely been unmounted before they were unplugged.  Thus, so
long as the unmount has been done then this error can be ignored.

I guess what drew my attention to the message is that USB flash drives do
not show the "Synchronize Cache(10) failed" error when unplugged.  I guess
the different behaviour may be the result of varying caching arrangements
(or other low level structural details) across the devices.

> On the other hand, if you would like to get rid of those annoying error 
> messages, you can do so by telling the kernel that the drive is about to 
> be removed before you unplug it.  You do this by writing to the "remove" 
> attribute file in the USB device's sysfs device directory; this is the 
> equivalent of using the "Safely remove a device" button in Windows.  
> Some GUIs may provide an easy-to-use mechanism for doing this, such as 
> an "eject" selection on a device menu.

I've noticed separate "Eject" and "Unmount" items under various desktop
environments and always wondered why they were separated.  Thanks for
providing the missing information.  I personally run a very simple window
manager (fvwm2) so don't get device menus.  If the message gets to me I'll
look into arranging for the sysfs attribute write.  However, knowing now
that it's essentially a quirk of the way the device interacts with the
subsystem I will be happy to simply leave things as they are.

Thank you again for taking the time to respond.

Regards
  jonathan

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: Samsung T5 SSD: "Synchronize Cache(10) failed" on removal
  2023-09-10  9:11   ` Jonathan Woithe
@ 2023-09-10 14:35     ` Alan Stern
  0 siblings, 0 replies; 4+ messages in thread
From: Alan Stern @ 2023-09-10 14:35 UTC (permalink / raw)
  To: Jonathan Woithe; +Cc: linux-usb

On Sun, Sep 10, 2023 at 06:41:31PM +0930, Jonathan Woithe wrote:
> Hi Alan
> 
> On Sat, Sep 09, 2023 at 12:14:49PM -0400, Alan Stern wrote:
> > > If on the other hand it' is something best fixed, please let me know how I
> > > can assist with this.
> > 
> > The most likely situation where this would indicate a real problem would 
> > be if you had mounted a filesystem on the drive, written some data, and 
> > then unplugged it without unmounting first.  If you haven't done that 
> > then you don't have to worry about anything.
> 
> Thanks for confirming this.  The scenarios I've outlined all involve drives
> which have definitely been unmounted before they were unplugged.  Thus, so
> long as the unmount has been done then this error can be ignored.

In principle you can write to a drive without mounting it first.  
Perhaps the most common examples are creating/modifying a partition 
table, doing a filesystem repair, or copying an OS install image.  Then 
there wouldn't be an unmount to automatically synchronize the cache.

However, I believe the partitioning and repair utilities do their own 
cache synchronization, so again it's not an issue in those cases.  
Mostly it's just necessary to be careful about your own raw-disk 
accesses -- something most of us very rarely do.

> I guess what drew my attention to the message is that USB flash drives do
> not show the "Synchronize Cache(10) failed" error when unplugged.  I guess
> the different behaviour may be the result of varying caching arrangements
> (or other low level structural details) across the devices.

Yes.  Most likely the flash drives don't claim to have caches, so the 
kernel doesn't try to issue a SYNCHRONIZE CACHE command.

> > On the other hand, if you would like to get rid of those annoying error 
> > messages, you can do so by telling the kernel that the drive is about to 
> > be removed before you unplug it.  You do this by writing to the "remove" 
> > attribute file in the USB device's sysfs device directory; this is the 
> > equivalent of using the "Safely remove a device" button in Windows.  
> > Some GUIs may provide an easy-to-use mechanism for doing this, such as 
> > an "eject" selection on a device menu.
> 
> I've noticed separate "Eject" and "Unmount" items under various desktop
> environments and always wondered why they were separated.  Thanks for
> providing the missing information.  I personally run a very simple window
> manager (fvwm2) so don't get device menus.  If the message gets to me I'll
> look into arranging for the sysfs attribute write.  However, knowing now
> that it's essentially a quirk of the way the device interacts with the
> subsystem I will be happy to simply leave things as they are.
> 
> Thank you again for taking the time to respond.

You're welcome.

Alan Stern

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2023-09-10 14:35 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-09-09  8:06 Samsung T5 SSD: "Synchronize Cache(10) failed" on removal Jonathan Woithe
2023-09-09 16:14 ` Alan Stern
2023-09-10  9:11   ` Jonathan Woithe
2023-09-10 14:35     ` Alan Stern

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox