sheepdog: serialize requests to overwrapping area
commit6a55c82cece217ab99ed95a412fa7ddf5d5f257b
authorHitoshi Mitake <mitake.hitoshi@lab.ntt.co.jp>
Fri, 17 Jul 2015 16:44:24 +0000 (18 01:44 +0900)
committerJeff Cody <jcody@redhat.com>
Tue, 28 Jul 2015 04:16:57 +0000 (28 00:16 -0400)
tree8869b66bc648c170c22adb1323bb7fe31b7d5697
parentf8787f8723eaca1be99e3b1873e54de163fffa93
sheepdog: serialize requests to overwrapping area

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

This patch adds a new serialization mechanism for the problem. The
difference from the old one is:
1. serialize entire aiocb if their targetting areas overwrap
2. serialize all requests (read, write, and discard), not only creates

This patch also removes the old mechanism because the new one can be
an alternative.

Cc: Kevin Wolf <kwolf@redhat.com>
Cc: Stefan Hajnoczi <stefanha@redhat.com>
Cc: Teruaki Ishizaki <ishizaki.teruaki@lab.ntt.co.jp>
Cc: Vasiliy Tolstov <v.tolstov@selfip.ru>
Signed-off-by: Hitoshi Mitake <mitake.hitoshi@lab.ntt.co.jp>
Tested-by: Vasiliy Tolstov <v.tolstov@selfip.ru>
Signed-off-by: Jeff Cody <jcody@redhat.com>
block/sheepdog.c