[sheepdog] [PATCH v1 4/4] sheep: go to panic if using unaligned memory in direct-io mode

Robin Dong robin.k.dong at gmail.com
Wed Jan 29 10:15:07 CET 2014


When startup sheep with option "-D", the plain_store will check alignment of
read/write buffer, but if the buffer is not aligned, it will do nothing if
it dose not choose "--enable-debug" for configuration. Then sheep will open
file with "O_DIRECT" and call pread() with unaligned buffer, it will cause
error io and remove the disk from md which is totally wrong behavior.
So, we should make the check strong enough: sheep will panic directlly if
finding unaligned buffer.

Signed-off-by: Robin Dong <sanbai at taobao.com>
---
 sheep/plain_store.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/sheep/plain_store.c b/sheep/plain_store.c
index fa6c01b..9a4871c 100644
--- a/sheep/plain_store.c
+++ b/sheep/plain_store.c
@@ -48,7 +48,8 @@ static int prepare_iocb(uint64_t oid, const struct siocb *iocb, bool create)
 		flags &= ~O_DSYNC;
 
 	if (sys->backend_dio && iocb_is_aligned(iocb)) {
-		assert(is_aligned_to_pagesize(iocb->buf));
+		if (!is_aligned_to_pagesize(iocb->buf))
+			panic("Memory isn't aligned to pagesize %p", iocb->buf);
 		flags |= O_DIRECT;
 	}
 
-- 
1.7.12.4




More information about the sheepdog mailing list