John, >> So disallowing WRITE SAME unless all component devices have the same LBS >> is the correct fix. > > Alternately, could possibly WRITE_SAME bios be accepted with the > minimum sector size of the stack rather than the max, e.g. 512 in this > example rather than 4k? They'd need to have a granularity of the > larger sector size, though, presumabily necessitating new queue limits > write_same_{granularity,block_size}, which might be too much work. I don't have a problem restricting the buffer contents to be consistent within a page. Or even change the upper layer semantics to specify the buffer contents using a single byte (0x00..0xff). But the issue of head and tail remains if there is a block size mismatch so it's important that we keep scaling the logical block size up when stacking and reject any bio that can't be honored on a 4Kn device. > (I use WRITE_SAME to fill devices with a particular pattern in order > to catch failures to initialize disk structures appropriately, > personally, but it's just for convenience/speed.) The intent was for stuff like MD to use it to initialize parity disks, etc. But adoption has been pretty slow. I don't have any problems keeping WRITE_SAME around if people are actually using it. It just seemed like most active users only cared about writing zeroes. -- Martin K. Petersen Oracle Linux Engineering