On Fri 13 Nov 2020 05:11:20 PM CET, Max Reitz wrote: >> We could set all supported_zero_flags as long as all children support >> them, right? > > Sure, I was just thinking that we could set these regardless of > whether the children support them, because (on zero-writes) the block > layer will figure out for us whether the child nodes support them. O:)
But it can happen that one child supports e.g. BDRV_REQ_NO_FALLBACK but the rest don't. In this case I think the block layer should return -ENOTSUP earlier without writing to the child(ren) that do support that flag. So Quorum's supported_zero_flags would be the logical and of all of its children's flags, right? I'm unsure about BDRV_REQ_WRITE_UNCHANGED, many filters set that on top of the other flags, but when would a BDS not support this flag? >> pwrite_zeroes() does this additionaly: >> >> if (!(child->bs->open_flags & BDRV_O_UNMAP)) { >> flags &= ~BDRV_REQ_MAY_UNMAP; >> } > > Interesting. Technically, Quorum doesn’t support that flag (in > supported_zero_flags O:))), so it shouldn’t appear, but, er, well > then. It would with the change that I'm proposing above. Berto