From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B8C1A2AD2C for ; Sat, 18 Apr 2026 09:47:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776505679; cv=none; b=MJfe2JCfurG990UaEMGZxRv7s6WbA2s1G1wTOlgK2IHz7UfM0sO87WjjJaBEVKgrJjiLUfEVk1R42/jby/UR2kvL9pcUe8v3tyJTuzbWuui3Cj/AuuMrRci80SXXfqM/cA875zrdr5YYVEa12bReCCqcnjyRGN7256nGXAgEj6g= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776505679; c=relaxed/simple; bh=Gr2wCUkhBuFLYSduAVwfU0AMe/thEKZSc0aVIupHPmc=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=NrEfPQtfOAFJRLX7RafVHrFIpeGJA8NekyBNOm1jrDQR6c0fFepYKHHcQRY5p35JLk27zLjlw1OlfEg6s0r7ueVfecdM5Zsjl6k3m+zudQlY3eG2y6f0dyfQpX4j1M0jOgP66Bk7hjrEWxCDs0OEmZh07mKSVFCj1pK7pstp7R0= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=HTJ40XXE; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="HTJ40XXE" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 10795C19424; Sat, 18 Apr 2026 09:47:55 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1776505679; bh=Gr2wCUkhBuFLYSduAVwfU0AMe/thEKZSc0aVIupHPmc=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=HTJ40XXEKe5czTUJ5UtDf4bTMtPyY/J1YE+ahwZhRJtTCBRb0BNABxyM6FGdQl+UI D2mCcxobFSXRu4bxYzE9It28kzW3nU3GeAGuf0gTlKjiWoBBgp+Y4W32ll7a4GsN2C wMlPs7DccMPVIsk3aVuLZonUaPkSUCpIxj/Jtqyi4c+8TbT6euAnWp+tjDzvc2Zqo/ 7wR84fUlm+WIO2YgoKJ1huAAP/F+rp2caHIgDndF3zD+2CIr3tX/y1bcqgbniBlIgD aeYdSgUkrAd/34p7kcJc/cktOW089IeFygHURD5LIDovtkT9PWPOth3jKBNL0xMOgz NyheGZ7X2vt3Q== Date: Sat, 18 Apr 2026 10:47:53 +0100 From: Lorenzo Stoakes To: Breno Leitao Cc: Andrew Morton , David Hildenbrand , Zi Yan , Baolin Wang , "Liam R. Howlett" , Nico Pache , Ryan Roberts , Dev Jain , Barry Song , Lance Yang , linux-mm@kvack.org, linux-kernel@vger.kernel.org, kernel-team@meta.com Subject: Re: [PATCH v2 2/2] mm: huge_memory: refactor defrag_show() to use defrag_flags[] Message-ID: References: <20260408-thp_defrag-v2-0-bc544c1bde4e@debian.org> <20260408-thp_defrag-v2-2-bc544c1bde4e@debian.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20260408-thp_defrag-v2-2-bc544c1bde4e@debian.org> On Wed, Apr 08, 2026 at 08:47:01AM -0700, Breno Leitao wrote: > Replace the hardcoded if/else chain of test_bit() calls and string > literals in defrag_show() with a loop over defrag_flags[] and > defrag_mode_strings[] arrays introduced in the previous commit. > > This makes defrag_show() consistent with defrag_store() and eliminates > the duplicated mode name strings. > > Acked-by: David Hildenbrand (Arm) > Tested-by: Lance Yang > Reviewed-by: Lance Yang > Reviewed-by: Barry Song > Signed-off-by: Breno Leitao I almost made a comment, but then realised it was fine :P so LGTM and: Reviewed-by: Lorenzo Stoakes > --- > mm/huge_memory.c | 38 ++++++++++++++++++++++---------------- > 1 file changed, 22 insertions(+), 16 deletions(-) > > diff --git a/mm/huge_memory.c b/mm/huge_memory.c > index 76f2d32428c7f..6993c6d8709dc 100644 > --- a/mm/huge_memory.c > +++ b/mm/huge_memory.c > @@ -455,24 +455,30 @@ static const enum transparent_hugepage_flag defrag_flags[] = { > static ssize_t defrag_show(struct kobject *kobj, > struct kobj_attribute *attr, char *buf) > { > - const char *output; > + int active = DEFRAG_NEVER; > + int len = 0; > + int i; > > - if (test_bit(TRANSPARENT_HUGEPAGE_DEFRAG_DIRECT_FLAG, > - &transparent_hugepage_flags)) > - output = "[always] defer defer+madvise madvise never"; > - else if (test_bit(TRANSPARENT_HUGEPAGE_DEFRAG_KSWAPD_FLAG, > - &transparent_hugepage_flags)) > - output = "always [defer] defer+madvise madvise never"; > - else if (test_bit(TRANSPARENT_HUGEPAGE_DEFRAG_KSWAPD_OR_MADV_FLAG, > - &transparent_hugepage_flags)) > - output = "always defer [defer+madvise] madvise never"; > - else if (test_bit(TRANSPARENT_HUGEPAGE_DEFRAG_REQ_MADV_FLAG, > - &transparent_hugepage_flags)) > - output = "always defer defer+madvise [madvise] never"; > - else > - output = "always defer defer+madvise madvise [never]"; > + for (i = 0; i < ARRAY_SIZE(defrag_flags); i++) { > + if (test_bit(defrag_flags[i], &transparent_hugepage_flags)) { > + active = i; > + break; > + } > + } > > - return sysfs_emit(buf, "%s\n", output); > + for (i = 0; i < ARRAY_SIZE(defrag_mode_strings); i++) { > + if (i == active) > + len += sysfs_emit_at(buf, len, "[%s] ", > + defrag_mode_strings[i]); > + else > + len += sysfs_emit_at(buf, len, "%s ", I mean, we'll end up with a single trailing space, but I think we can probably... oh wait hang on... > + defrag_mode_strings[i]); > + } > + > + /* Replace trailing space with newline */ > + buf[len - 1] = '\n'; ...OK :) > + > + return len; > } > > static ssize_t defrag_store(struct kobject *kobj, > > -- > 2.52.0 > Cheers, Lorenzo