From 4671dbd53fb1bcb4652e2b9e5cb27b17c399eea0 Mon Sep 17 00:00:00 2001 From: Daniel Verkamp Date: Tue, 22 Mar 2016 13:47:51 -0700 Subject: [PATCH] nvme: add compile-time assert for SGL alignment Per the NVMe spec, SGL segments must be Qword (8-byte) aligned. Add a static assert to make sure this is true for the sgl member of struct nvme_tracker (assuming the whole nvme_tracker is at least 8-byte aligned). Change-Id: I827aa40b56de648d83f524a4f1e79c3202b676be Signed-off-by: Daniel Verkamp --- lib/nvme/nvme_internal.h | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/nvme/nvme_internal.h b/lib/nvme/nvme_internal.h index 38768cf00..a49b190b1 100644 --- a/lib/nvme/nvme_internal.h +++ b/lib/nvme/nvme_internal.h @@ -264,6 +264,7 @@ struct nvme_tracker { * and so that there is no padding required to meet alignment requirements. */ SPDK_STATIC_ASSERT(sizeof(struct nvme_tracker) == 4096, "nvme_tracker is not 4K"); +SPDK_STATIC_ASSERT((offsetof(struct nvme_tracker, u.sgl) & 7) == 0, "SGL must be Qword aligned"); struct spdk_nvme_qpair {