May 08

What is: doesn't support DPO or FUA?

Category: Linux   — Published by goeszen on May 8, 2021 at 7:33 pm

Did you ever track the health of your hard drives under Linux or tweaked the drive configurations through gnome-disks and then spotted something like:

sd 5:0:0:0: [sdd] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA

in dmesg? Well the Internet is full of articles, mailing list posts and discussions where this is mentioned and people ponder if that is something of concern. But so far I haven't found a single source that actually explained what DPO or FUA actually mean!?

The answer is: both are newer features described in the ATAPI specs. FUA - introduced with ATA/ATAPI-7 (since 2001, ANSI INCITS 397-2005) - is the official abbreviation for "Forced Unit Access". It means the host is able to tell storage "... to fetch the data from the media surface and to not use a cached copy". That' an old SCSI feature from the late 1980s. SCSI? Well, as can be read here ATAPI assimilated some of the SCSI specs and at doing so things like NCQ (Native Command Queuing), FUA and DPO were carried over to ATA/ATAPI.

Now, DPO is also an older SCSI feature. it's an abbreviation of "Disable Page Out" and according to specs it "... allows the initiator to warn the target that the data being read is unlikely to be requested again soon and so is not worth keeping in the target's data cache."

If you're interested to learn more about these older SCSI (and then newer ATA/ATAPI features) you can read about them here. Both are part of the SCSI READ command set and this also explains why they are related to write /read caching settings and often pop-up when you alter cache settings on Linux systems, for example via sdparm or gnome-disks.

I, so far, didn't stumble over a driver/drive combo, on Linux at least, that actually does support DPO, FUA or both, but if you can shed more light, feel welcome to post to the comments.

Leave a Reply