The bytes_written_slow performance counter was incorrectly reporting
0 when using async I/O.
When aio_write() is called with a bufferlist, it uses claim_append()
to transfer ownership of the buffer to the aio structure, leaving the
source bufferlist empty. Using t.length() after aio_write() returns 0
instead of the actual bytes written.
Fix by using the pre-calculated x_len value which contains the actual
write size and is not affected by the buffer ownership transfer.
Fixes: https://tracker.ceph.com/issues/73735
Signed-off-by: chungfengz <chungfengz@synology.com>
}
h->dirty_devs[p->bdev] = true;
if (p->bdev == BDEV_SLOW) {
- bytes_written_slow += t.length();
+ bytes_written_slow += x_len;
}
bloff += x_len;