On Sat, Jul 18, 2015 at 01:44:24AM +0900, Hitoshi Mitake wrote: > Current sheepdog driver only serializes create requests in oid > unit. This mechanism isn't enough for handling requests to > overwrapping area spanning multiple oids, so it can result bugs like > below: > https://bugs.launchpad.net/sheepdog-project/+bug/1456421
I'm a bit late to review the patch since I'm not on the cc list, but I'd like to get the idea how the mentioned bug relates to the serialization of requests? The mentioned bug looks to me more a bug of sheepdog because the create and write request will only unref a single oid. The bug report is unclear about why the object idx in inode becomes zero, at least not pointing that it relates to QEMU. But this patch assume QEMU send the requests the wrong way and just vaguely says it is just wrong without reason. What is overrapping requests? As far as I understand, the request that stride over two objects will be split into two, to make sure all the requests fit the sheepdog object size. Allow requests run concurrently on different SD objects is way achieving high performance. This patch mutes this feature, to me, without a decent reason. Probably I miss something hidden, but I'd like someone enlighten me about it because this patch might slow down QEMU VM over sheepdog. Thanks, Yuan