Seagate Flex SMR
Noah Bergbauer <[email protected]>
| Newsgroups | org.kernel.vger.linux-block |
|---|---|
| Message-ID | <[email protected]> |
Hello, Seagate Flex SMR drives are an early generation of hybrid SMR (HSMR) drives with a configurable zone layout. There are three main challenges towards supporting this in the kernel: 1. Instead of CONV they use SEQ_OR_BEFORE (type 4) zones. These permit random writes below the write pointer, so once full they behave exactly like CONV. 2. In an (in my opinion rather questionable) attempt at backwards compatibility the drives camouflage themselves as non-ZBC. Their ZAC support can be detected from a special ATA log page but ZBC commands must be emulated via ATA PASS-THROUGH as a SAT may refuse zone commands on a non-ZBC drive. 3. The zone configuration works by reporting both SEQ_OR_BEFORE and SEQWRITE_REQ zones each for the entire disk, and then for each pair of overlapping zones only one of them can be active while the other one will be in the offline condition. Right now some parts of the kernel (e.g. btrfs) don't play well with offline zones. I implemented all of this last year and in the end everything was working fine under btrfs. Now I would like to attempt to get this into the kernel. This would involve rewriting most of my patches from scratch. So before I invest a lot of time and effort into doing so, my question is: would you as the maintainer even be willing to accept these changes into the kernel? Best, Noah Bergbauer