3 ms·
(Why was I voted down!?!??!) No - what they're talking about is that the controller LIES to ZFS about what blocks are being stored. That throws a huge wrench i
by sc68cal 15y ago
(Why was I voted down!?!??!)
No - what they're talking about is that the controller LIES to ZFS about what blocks are being stored. That throws a huge wrench in ZFS' COW and safety features. If ZFS writes two extra copies of a block, and the SSD deduplicates those two extra without bothering to tell ZFS, then you've got a serious problem.
Imagine if the SSD deduplicated all the ditto blocks?
(Ditto Blocks) http://blogs.oracle.com/bill/entry/ditto_blocks_the_amazing_tape http://blogs.oracle.com/bill/entry/ditto_blocks_the_amazing_...
- jrockway 15y agoSo? All disks lie to the controller. Have you ever had a spinning disk with a bad sector? When the disk controller notices this, it remaps the sector to some spare space elsewhere on the drive. It doesn't ask the OS if this is OK, it Just Fucking Does It. Abstraction means that things lie to you. It also means that spinning disks can last longer than a month.
- Symmetry 15y agoAnd HDDs have had RAM catches for a while now, further complicating things. The SATA interface defines an abstraction over the storage system that the hard drive has to live up to. If the OS makes assumptions that aren't part of that contract that the drive doesn't live up to, thats the OS's fault. Separation of concerns is a vital engineering practice, and if some software violates abstraction barriers and things break that's the software's own fault.
- tbrownaw 15y agoHow exactly does that count as the disk lying? ZFS assumes that different block addresses with the same data point to different pieces of backing storage and therefore have certain behavior in case of errors, but does the spec actually state that this is a valid assumption? Or is this just a case of ZFS relying on particular behavior from things that are implementation-defined or undefined?