大きな SCSI 書き込みを生成するユーザー空間アプリケーションがあります (詳細は後述)。しかし、SCSI ターゲット (つまり、FC によって接続されたストレージ) に到達する SCSI コマンドを見ると、これらの書き込みが 512K のチャンクに分割されています。
アプリケーションは基本的に、デバイスに直接 1M サイズの直接書き込みを行います。
fd = open("/dev/sdab", ..|O_DIRECT);
write(fd, ..., 1024 * 1024);
このコードにより、それぞれ 512K の 2 つの SCSI WRITE が送信されます。
ただし、ブロック層なしで直接 SCSI コマンドを発行すると、書き込みは分割されません。コマンドラインから次のコマンドを発行します。
sg_dd bs=1M count=1 blk_sgio=1 if=/dev/urandom of=/dev/sdab oflag=direct
1M サイズの SCSI WRITE が 1 つ確認できます。
問題は、何が書き込みを分割しているのか、さらに重要なことに、それは構成可能かということです。Linux のブロック層は (SG_IO が通過しないため) 有罪のようであり、512K はあまりにも恣意的な数値であり、何らかの構成可能なパラメーターではないようです。