From 45c26bc11b7b1ec6b6b4773fb9a40e0a655f7d33 Mon Sep 17 00:00:00 2001 From: Sebastien Buisson Date: Fri, 12 Jun 2020 10:52:28 +0000 Subject: [PATCH] LU-12275 sec: check if page is empty with ZERO_PAGE In osc_brw_fini_request(), page needs decryption only if it is not empty. To check this, use ZERO_PAGE macro available for all architectures, and compare with memcmp. It will likely be faster/more efficient than comparing the words by hand as may use optimized CPU instructions or ASM code. Signed-off-by: Sebastien Buisson Change-Id: I5e04b72790e8acbceb1989ba3659e170c0b11192 Reviewed-on: https://review.whamcloud.com/38918 Reviewed-by: Andreas Dilger Reviewed-by: James Simmons Tested-by: jenkins Reviewed-by: Mike Pershin Tested-by: Maloo Reviewed-by: Oleg Drokin --- lustre/osc/osc_request.c | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/lustre/osc/osc_request.c b/lustre/osc/osc_request.c index a9d95bc..e190f74 100644 --- a/lustre/osc/osc_request.c +++ b/lustre/osc/osc_request.c @@ -2056,16 +2056,11 @@ static int osc_brw_fini_request(struct ptlrpc_request *req, int rc) } for (idx = 0; idx < aa->aa_page_count; idx++) { struct brw_page *pg = aa->aa_ppga[idx]; - __u64 *p, *q; /* do not decrypt if page is all 0s */ - p = q = page_address(pg->pg); - while (p - q < PAGE_SIZE / sizeof(*p)) { - if (*p != 0) - break; - p++; - } - if (p - q == PAGE_SIZE / sizeof(*p)) { + if (memcmp(page_address(pg->pg), + page_address(ZERO_PAGE(0)), + PAGE_SIZE) == 0) { /* if page is empty forward info to upper layers * (ll_io_zero_page) by clearing PagePrivate2 */ -- 1.8.3.1