Date: Sun, 01 Dec 2013 20:45:33 +0100 From: krichy@cflinux.hu To: Steven Hartland <killing@multiplay.co.uk> Cc: freebsd-scsi@freebsd.org Subject: Re: Fwd: Re: ssd for zfs Message-ID: <1de2afcd6b5c67053095ead706eff80d@cflinux.hu> In-Reply-To: <EA212CF8655D4EA6BD6AF9019470E5DE@multiplay.co.uk> References: <0b12c19b8832c72369ff7244d7231846@cflinux.hu> <81b87ca49aef7d88db1b4dbd5f7eb201@cflinux.hu> <923bc6b4aa9141e5e9a49ab76b3a18b5@cflinux.hu> <EA212CF8655D4EA6BD6AF9019470E5DE@multiplay.co.uk>
next in thread | previous in thread | raw e-mail | index | archive | help
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@cflinux.hu>
> To: <freebsd-scsi@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@multiplay.co.uk.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1de2afcd6b5c67053095ead706eff80d>
