From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id ED852C369BA for ; Wed, 16 Apr 2025 16:08:26 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 026E86B00AC; Wed, 16 Apr 2025 12:08:25 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id F179A6B00B0; Wed, 16 Apr 2025 12:08:24 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id E075E6B00B1; Wed, 16 Apr 2025 12:08:24 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id BD9166B00AC for ; Wed, 16 Apr 2025 12:08:24 -0400 (EDT) Received: from smtpin27.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 037515BC1C for ; Wed, 16 Apr 2025 16:08:25 +0000 (UTC) X-FDA: 83340389412.27.869FBE5 Received: from mail-yw1-f225.google.com (mail-yw1-f225.google.com [209.85.128.225]) by imf30.hostedemail.com (Postfix) with ESMTP id 1A70380014 for ; Wed, 16 Apr 2025 16:08:23 +0000 (UTC) Authentication-Results: imf30.hostedemail.com; dkim=pass header.d=purestorage.com header.s=google2022 header.b=X2MVr0vs; dmarc=pass (policy=reject) header.from=purestorage.com; spf=pass (imf30.hostedemail.com: domain of csander@purestorage.com designates 209.85.128.225 as permitted sender) smtp.mailfrom=csander@purestorage.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1744819704; a=rsa-sha256; cv=none; b=5884jDdBppSxr2JGA9/Ae5Wf8p7L14RaW9Bg3XvosRzaEMa2d7O0011jf9Bt/0nWEjk2n+ qO4XjU8JD7hxdhlbC3EgbNYP2WTxcfRK32LMsLEZyBq1JjZcfst+XfE9nmBnsoEQE93Rwv 23EuFoHG5atgLf7twZwr/p2tNbQUTUA= ARC-Authentication-Results: i=1; imf30.hostedemail.com; dkim=pass header.d=purestorage.com header.s=google2022 header.b=X2MVr0vs; dmarc=pass (policy=reject) header.from=purestorage.com; spf=pass (imf30.hostedemail.com: domain of csander@purestorage.com designates 209.85.128.225 as permitted sender) smtp.mailfrom=csander@purestorage.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1744819704; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:references:dkim-signature; bh=7k4WygtbOq9V/TUXra9P9LV10YW1W6+zkPqQlC9hmIc=; b=q7rvHAerNFDcKUCmT9ru2kYbg4McuIHZGFLsUJBW8Pmcr5jYANLUWAnbzKrjm358UhiP89 bksJUWABnHAnlYiBXZmzVqjKW8j6ovouYFUQK2BppstivzdTIin+iNMl3s0uSszkPXJT5K clWtD7uW4g4T2qqnTtkcJUIwmn+bzTo= Received: by mail-yw1-f225.google.com with SMTP id 00721157ae682-6ef5ae6e7ddso3770977b3.2 for ; Wed, 16 Apr 2025 09:08:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=purestorage.com; s=google2022; t=1744819703; x=1745424503; darn=kvack.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=7k4WygtbOq9V/TUXra9P9LV10YW1W6+zkPqQlC9hmIc=; b=X2MVr0vsgTCWMb9pEi2RirVK+0Mbh11rOu7/Oymc4SxYxK8mMVPLYXV/EsIGaabyPJ WCo/Eoy1abC9+7mfXsNeNQyVbEZcDZRaN5t6wt8XQNx3ylrbuk6vrKrTZUN6SbCz8T18 H2x/byRL7wXWK1rug8RAjx3RinS5avfFF6jW80gb0OvTHXTdXXJB+BPqH5MiMdzi6ILP +DpU7dzLDP8vqrqn1H1TQSoOObO148a+LLlGyMSSi9B9xVuoH9GdhVE6O9UEs/8vR346 1Z2dzles+Cja+nny6dWYGNz0KtXOpkDJRlvQBF+5/qTE1j/2iHvu5VCByZMV+mzCMR6m 3kWg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744819703; x=1745424503; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=7k4WygtbOq9V/TUXra9P9LV10YW1W6+zkPqQlC9hmIc=; b=L/xSBEF6qpuahj2gEqpRGszXymYwOg+HplFApXPRPDxYnrsfPbRzmH//wHyuBFYRDN VkTiqONXn1tKDOJLR7OrwNxsMPDJVLF4pIUnAvO2M6HNKDgpo4JWK0HQrX7kxjFbJC1r e/CxBUG8kd8wishts1MQWq1VUzqFOKFQvBa76ZS41lCclYlpYnsjTLMqkvcQ+tpvfjVK USdpwBnwu7x8unMx1xnQUx3H2DZZdaha9i44q0o5wvNMp/UzKT0lgDzKp93tKT7JDJcI TK6ltRB0KwkZNkslWpRsGvD048SMevNl3fIXfibYzoP0Ul7O3aHGqWr+tjGdDHaT9r5C LjGw== X-Gm-Message-State: AOJu0Yy89brPAAW0U6W5D/0Q9UuKcnby1zjnvcv5GtyF4uNKcFIqbK1y 4Pe/05VV8k3LhXfitCozw3kzIYtDIMDsaDNoTaQUdp0f93wT70s/6ECOShi0vcx9SuFT1VJsz96 9IHKRXvFtVXsuuyI+idX7BZaYQfi2EHap+lojj5TQxx2glE0N2shCyGLAn6g88/5jvv/6KZtNT3 x2B1J6nddXxbzZ6yBtdGPGbMj4quo3IoBvYhDGLlH9fH+IL09jNswG6qY/C95pzZc87FzhE09ak hU= X-Gm-Gg: ASbGnct3Y9l7qHafGJ2HILdOh3QRwX3gmSP1pwyzXXQZqft+I2gWareT86+Sa1LsyKr ylIC0QRr3MqeLKOkO+xb9zPSIy2j/EO7S3xNPIiPJDhxY1FkmMDOnE9esV5cvzl67j6Hc8z/vk2 LiCDSb/uDlQp7I1mpH114bJ8pHG/rvceKltVygkgcEhuDfqqW1MtB3eyZHDrTLua7v1iAPhMoMG 53oODmMGrxNkEHvPMWTKsJPy6jVmokKil6FLcvrVgs559Y6UGx+GcjxIr2oKw3Kag/kdg0ayf26 F6fiyc2P/yPXVQTNbmq/SnbjnajyDTr7iEvoIRMHKA1i X-Google-Smtp-Source: AGHT+IHruA+h68cgYDaioq+gzj1KJHDh5bJmz+QV0BmrVPaqXLWxXSqCMRnBziGF+k21bIDTpr0Ffxe+9IHr X-Received: by 2002:a05:690c:399:b0:6f9:558d:538e with SMTP id 00721157ae682-706bb933e6bmr1448397b3.5.1744819702792; Wed, 16 Apr 2025 09:08:22 -0700 (PDT) Received: from c7-smtp-2023.dev.purestorage.com ([208.88.159.129]) by smtp-relay.gmail.com with ESMTPS id 00721157ae682-7053e174f86sm11698467b3.36.2025.04.16.09.08.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Apr 2025 09:08:22 -0700 (PDT) X-Relaying-Domain: purestorage.com Received: from dev-csander.dev.purestorage.com (unknown [IPv6:2620:125:9007:640:ffff::418a]) by c7-smtp-2023.dev.purestorage.com (Postfix) with ESMTP id E7038340237; Wed, 16 Apr 2025 10:08:21 -0600 (MDT) Received: by dev-csander.dev.purestorage.com (Postfix, from userid 1557716354) id DA7FDE4186F; Wed, 16 Apr 2025 10:08:21 -0600 (MDT) From: Caleb Sander Mateos To: Andrew Morton Cc: linux-mm@kvack.org, linux-block@vger.kernel.org, Caleb Sander Mateos , linux-kernel@vger.kernel.org Subject: [PATCH] scatterlist: inline sg_next() Date: Wed, 16 Apr 2025 10:06:13 -0600 Message-ID: <20250416160615.3571958-1-csander@purestorage.com> X-Mailer: git-send-email 2.45.2 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspam-User: X-Rspamd-Server: rspam02 X-Rspamd-Queue-Id: 1A70380014 X-Stat-Signature: fgp5fo3hzmwq18n6a1dkn7zzrknszuxh X-HE-Tag: 1744819703-793197 X-HE-Meta: U2FsdGVkX1/0S50sB4m6MCRHa4/jYQ6AQiEaIOLQQZJ/7F4G158klPniicpGeN47sVVIEM+iV/C5IKSs8GFEZRovMN0g9Pukydzh0+GE4+Bmvy1npjV9K5IdaiI3/ntwwBnymgC4TVR742+7U6Hv9fWjCHN2TtkMgSnWGaZHKBV7ho9nU76fh8/n2DQtOG6QdXNq/kfcVG0uQjJzfXzHR90XVLfRuRTw03SCT28QZewgLFFsiSyPsqBTo226tuJZQh4zh4hhc6eV34PzehHg3K66UaPN0QPvN3o5GWDlrLStjNvl2AU53mB2jMSnepxinxqRPzszoFKA2kZuwi/S4BCi4tlflDM5DW3OpzFQkHpQVK0r54oHqGRaZITTj1vy1VcosArEkqdtviThHxPDQZhz8g+IJ+IW9F3FWXk8ZwUypqRJXoJVzcxea7zfgN1sejjCUcpPKNA8hgzOl3plJ5DKI7o/EeMQrknLCam88+2nbIoU4AmH+8JmP43N66VzbzidgsUjIg03IcwvMH5Y+FYDA4RyKnZDeTk+G+F8B1OeHqWEtG03vr0fLbCxnEBGSINvY5PDbLSydlSScySrwK0o6rGLNkLGsRU+TOuslgyGp/HNEFXG6HQeEwCQXLLeakmXb4DdOBgqnrMWXa4lqoRn6T4mQVC9EN41rBbePRycbXYjf/RxBqZyOHgMCUVfSE5b25IvPTTKAxrLx/lJPw1xeAzkUutsuuRtnIB3tSl8m0pLBUFg0fhld2lR/IsRMXJvxy5CdqAiL+A4MboF1kMaNfhdi1Da8/sxCVLlHH9rUtdlWC1XVRyydH0MwyO/KqckAF1y1dhpt3ub9fcuqLLdEICitzujF6LHrGdEuuqCzw/vTOYpgucpUFlxza3WNhE0nEAyYI9ThgeercmR0RmyFv6YAbGWqa0I2axCup76vz7ZHUIk/O7oTSxjTWTsDv74RVBB3r66dgVODIv GElLxFOp hVU9wGnOV/ol372F3XkjHt+6SNouBrxqbYr2VOMqkDu8f8qsJRKKIJmVtcpH93Ukej4JraXKLiBiJXflcHRJim0qgq4kg7Sv6TShGeNPYQwJqZ3mGK8dglSEt3dh9tvagUkuFFJ6KWe4l+opWcVzJHJ+EaCynLDPe4uNMeu5EM4rDTbQf1ko5MF6RRPPuyE7ku3tuvkU0HnVsQaahR9czM7KeQf3eelUpl+O9OW4+SYNn2EoDNjpvECWRmFcwq/oJrvXYEdHv0hZfZKL6KBZU+7Er/AHAWREVTkHG67Gp56GGNeRQBjaSRE858fdTM1aoTXtPDFXvAaCcwfb8Khm0aouhvGhTbup0CzfInpNy/dmvHpLaFTzm70TMvDDhU1o9Kl4up3fUvy2yOPf3etL10/dymAocN2oFC1qWhNdbKuULJ6FCiEQLPu+nJj81/JYC3Jn+23q17e5Vfd8= X-Bogosity: Ham, tests=bogofilter, spamicity=0.119514, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: sg_next() is a short function called frequently in I/O paths. Define it in the header file so it can be inlined into its callers. Signed-off-by: Caleb Sander Mateos --- Is it a concern that this would break kernel modules built against old headers? If so, I could update the patch to continue compiling and exporting sg_next() in scatterlist.c. include/linux/scatterlist.h | 23 ++++++++++++++++++++++- lib/scatterlist.c | 23 ----------------------- 2 files changed, 22 insertions(+), 24 deletions(-) diff --git a/include/linux/scatterlist.h b/include/linux/scatterlist.h index 138e2f1bd08f..0cdbfc42f153 100644 --- a/include/linux/scatterlist.h +++ b/include/linux/scatterlist.h @@ -92,10 +92,32 @@ static inline bool sg_is_chain(struct scatterlist *sg) static inline bool sg_is_last(struct scatterlist *sg) { return __sg_flags(sg) & SG_END; } +/** + * sg_next - return the next scatterlist entry in a list + * @sg: The current sg entry + * + * Description: + * Usually the next entry will be @sg@ + 1, but if this sg element is part + * of a chained scatterlist, it could jump to the start of a new + * scatterlist array. + * + **/ +static inline struct scatterlist *sg_next(struct scatterlist *sg) +{ + if (sg_is_last(sg)) + return NULL; + + sg++; + if (unlikely(sg_is_chain(sg))) + sg = sg_chain_ptr(sg); + + return sg; +} + /** * sg_assign_page - Assign a given page to an SG entry * @sg: SG entry * @page: The page * @@ -416,11 +438,10 @@ static inline void sg_init_marker(struct scatterlist *sgl, sg_mark_end(&sgl[nents - 1]); } int sg_nents(struct scatterlist *sg); int sg_nents_for_len(struct scatterlist *sg, u64 len); -struct scatterlist *sg_next(struct scatterlist *); struct scatterlist *sg_last(struct scatterlist *s, unsigned int); void sg_init_table(struct scatterlist *, unsigned int); void sg_init_one(struct scatterlist *, const void *, unsigned int); int sg_split(struct scatterlist *in, const int in_mapped_nents, const off_t skip, const int nb_splits, diff --git a/lib/scatterlist.c b/lib/scatterlist.c index b58d5ef1a34b..7582dfab7fe3 100644 --- a/lib/scatterlist.c +++ b/lib/scatterlist.c @@ -11,33 +11,10 @@ #include #include #include #include -/** - * sg_next - return the next scatterlist entry in a list - * @sg: The current sg entry - * - * Description: - * Usually the next entry will be @sg@ + 1, but if this sg element is part - * of a chained scatterlist, it could jump to the start of a new - * scatterlist array. - * - **/ -struct scatterlist *sg_next(struct scatterlist *sg) -{ - if (sg_is_last(sg)) - return NULL; - - sg++; - if (unlikely(sg_is_chain(sg))) - sg = sg_chain_ptr(sg); - - return sg; -} -EXPORT_SYMBOL(sg_next); - /** * sg_nents - return total count of entries in scatterlist * @sg: The scatterlist * * Description: -- 2.45.2