Fwd: Re: ssd for zfs

krichy at cflinux.hu krichy at cflinux.hu
Sun Dec 1 19:45:44 UTC 2013


Dear scsi devs,

This short diff may add such support for ata devices:

diff --git a/sys/cam/ata/ata_da.c b/sys/cam/ata/ata_da.c
index cc28311..75486d1 100644
--- a/sys/cam/ata/ata_da.c
+++ b/sys/cam/ata/ata_da.c
@@ -94,6 +94,7 @@ typedef enum {
  typedef enum {
         ADA_Q_NONE              = 0x00,
         ADA_Q_4K                = 0x01,
+       ADA_Q_NO_SYNC_CACHE     = 0x02,
  } ada_quirks;

  #define ADA_Q_BIT_STRING       \
@@ -1243,7 +1244,7 @@ adaregister(struct cam_periph *periph, void *arg)
         softc->disk->d_maxsize = maxio;
         softc->disk->d_unit = periph->unit_number;
         softc->disk->d_flags = 0;
-       if (softc->flags & ADA_FLAG_CAN_FLUSHCACHE)
+       if ((softc->flags & ADA_FLAG_CAN_FLUSHCACHE) && (softc->quirks & 
ADA_Q_NO_SYNC_CACHE) == 0)
                 softc->disk->d_flags |= DISKFLAG_CANFLUSHCACHE;
         if (softc->flags & ADA_FLAG_CAN_TRIM) {
                 softc->disk->d_flags |= DISKFLAG_CANDELETE;

And with that I can add the SSD into both ata and scsi quirk list. Am I 
right?

Regards,


2013-11-29 21:35 időpontban Steven Hartland ezt írta:
> You could add a DA_Q_NO_SYNC_CACHE quirk for you device
> which will prevent the cam layer attempting to call sync but this
> will only work if its attached to a SCSI controller like an LSI there's
> no such quirk currently implemented in ATA cam layer.
> 
>    Regards
>    Steve
> ----- Original Message ----- From: <krichy at cflinux.hu>
> To: <freebsd-scsi at freebsd.org>
> Sent: Friday, November 29, 2013 8:17 PM
> Subject: Re: Fwd: Re: ssd for zfs
> 
> 
>> Dear scsi-devs,
>> 
>> It seems that my device handles the flush commands slowly. The linux 
>> code avoids issuing this if the device reports its write cache is 
>> turned off. That way my SSD works fast under linux, but infortunately 
>> slow under FreeBSD. Actually I dont understand why is it slow for the 
>> flush command, as it has power-loss-protection, maybe for such a 
>> command it really flushes everything out, dont know. But when I enable 
>> the write cache in linux also, the block layer gets knowledge of the 
>> write cache, it issues the flush commands, and it gets same slow.
>> 
>> How could this be solved?
> 
> 
> ================================================
> This e.mail is private and confidential between Multiplay (UK) Ltd.
> and the person or entity to whom it is addressed. In the event of
> misdirection, the recipient is prohibited from using, copying,
> printing or otherwise disseminating it or any information contained in
> it.
> 
> In the event of misdirection, illegible or incomplete transmission
> please telephone +44 845 868 1337
> or return the E.mail to postmaster at multiplay.co.uk.


More information about the freebsd-scsi mailing list