On 10/30/20 9:51 AM, Naohiro Aota wrote:
This is the 2/3 patch to enable tree-log on ZONED mode. Since we can start more than one log transactions per subvolume simultaneously, nodes from multiple transactions can be allocated interleaved. Such mixed allocation results in non-sequential writes at the time of log transaction commit. The nodes of the global log root tree (fs_info->log_root_tree), also have the same mixed allocation problem. This patch serializes log transactions by waiting for a committing transaction when someone tries to start a new transaction, to avoid the mixed allocation problem. We must also wait for running log transactions from another subvolume, but there is no easy way to detect which subvolume root is running a log transaction. So, this patch forbids starting a new log transaction when other subvolumes already allocated the global log root tree. Signed-off-by: Naohiro Aota <naohiro.aota@xxxxxxx>
This restriction makes the tree log really, really seem not worth it for zoned. I'd rig up a fio test that does fsyncs into multiple subvolumes and tests this vs just committing the transaction. If committing the transaction is better, just skip the log altogether for zoned. Thanks,
Josef