From patchwork Tue Jan 4 12:20:06 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Palethorpe X-Patchwork-Id: 1575219 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=suse.com header.i=@suse.com header.a=rsa-sha256 header.s=susede1 header.b=A7vB7u3m; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.linux.it (client-ip=213.254.12.146; helo=picard.linux.it; envelope-from=ltp-bounces+incoming=patchwork.ozlabs.org@lists.linux.it; receiver=) Received: from picard.linux.it (picard.linux.it [213.254.12.146]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4JSsCG4XMjz9t0k for ; Tue, 4 Jan 2022 23:20:42 +1100 (AEDT) Received: from picard.linux.it (localhost [IPv6:::1]) by picard.linux.it (Postfix) with ESMTP id 634333C9087 for ; Tue, 4 Jan 2022 13:20:38 +0100 (CET) X-Original-To: ltp@lists.linux.it Delivered-To: ltp@picard.linux.it Received: from in-5.smtp.seeweb.it (in-5.smtp.seeweb.it [IPv6:2001:4b78:1:20::5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by picard.linux.it (Postfix) with ESMTPS id ABB283C1D3C for ; Tue, 4 Jan 2022 13:20:36 +0100 (CET) Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.220.28]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by in-5.smtp.seeweb.it (Postfix) with ESMTPS id 2E578600707 for ; Tue, 4 Jan 2022 13:20:35 +0100 (CET) Received: from relay2.suse.de (relay2.suse.de [149.44.160.134]) by smtp-out1.suse.de (Postfix) with ESMTP id 4C0BB212B8; Tue, 4 Jan 2022 12:20:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1; t=1641298835; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding; bh=4LpgTHU3XZIwc2rcKnnMh+CF8Za2avP/w/VJp/ub280=; b=A7vB7u3mZrI6NfsQRWBZeRbmTWLh4kjtZAblhh/hcmwAIeI9m8Kul/rchkz7+yCeF7QzSU 7g1VYIjVcKhLbU3eyk736Sndaw84LmmHpnONl/0m7hBSCno7i4y/SMK/5YF+uqhJj34EUE B1967AqDIwwHgYNrVtgHpYuHoJf5GA8= Received: from g78.suse.de (unknown [10.163.24.42]) by relay2.suse.de (Postfix) with ESMTP id 03665A3B81; Tue, 4 Jan 2022 12:20:34 +0000 (UTC) To: ltp@lists.linux.it Date: Tue, 4 Jan 2022 12:20:06 +0000 Message-Id: <20220104122010.23069-1-rpalethorpe@suse.com> X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 X-Virus-Scanned: clamav-milter 0.102.4 at in-5.smtp.seeweb.it X-Virus-Status: Clean X-Spam-Status: No, score=0.1 required=7.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_NONE,SPF_PASS autolearn=disabled version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on in-5.smtp.seeweb.it Subject: [LTP] [PATCH v3 1/5] API/cgroup: Add safe_cgroup_lines_scanf X-BeenThere: ltp@lists.linux.it X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux Test Project List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Richard Palethorpe via ltp From: Richard Palethorpe Reply-To: Richard Palethorpe Cc: Richard Palethorpe Errors-To: ltp-bounces+incoming=patchwork.ozlabs.org@lists.linux.it Sender: "ltp" Similar to file_lines_scanf. Allows us to read a particular key-value pair from a controller file. Can replace kselftest's cg_read_key_* when converting tests. Signed-off-by: Richard Palethorpe Reviewed-by: Cyril Hrubis Reviewed-by: Petr Vorel --- V3: * Add permissions to open * Add needs_root to avoid TBROK when creating the FSs V2: * Use all filesystems * Add new EXP macro * Switch to strtok_r * Increase the margin of error for exfat and ext234 * Write to the file instead of reading to populate the page cache (allows it to work on tmpfs) include/tst_cgroup.h | 12 +++++++++++- lib/tst_cgroup.c | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 44 insertions(+), 1 deletion(-) diff --git a/include/tst_cgroup.h b/include/tst_cgroup.h index 632050e86..561216296 100644 --- a/include/tst_cgroup.h +++ b/include/tst_cgroup.h @@ -188,9 +188,19 @@ void safe_cgroup_printf(const char *const file, const int lineno, void safe_cgroup_scanf(const char *file, const int lineno, const struct tst_cgroup_group *const cg, const char *const file_name, - const char *fmt, ...) + const char *const fmt, ...) __attribute__ ((format (scanf, 5, 6), nonnull)); +#define SAFE_CGROUP_LINES_SCANF(cg, file_name, fmt, ...) \ + safe_cgroup_lines_scanf(__FILE__, __LINE__, \ + (cg), (file_name), (fmt), __VA_ARGS__) + +void safe_cgroup_lines_scanf(const char *const file, const int lineno, + const struct tst_cgroup_group *const cg, + const char *const file_name, + const char *const fmt, ...) + __attribute__ ((format (scanf, 5, 6), nonnull)); + #define SAFE_CGROUP_OCCURSIN(cg, file_name, needle) \ safe_cgroup_occursin(__FILE__, __LINE__, \ (cg), (file_name), (needle)) diff --git a/lib/tst_cgroup.c b/lib/tst_cgroup.c index c08ff2f20..c78f28112 100644 --- a/lib/tst_cgroup.c +++ b/lib/tst_cgroup.c @@ -1161,6 +1161,39 @@ void safe_cgroup_scanf(const char *const file, const int lineno, file_name, buf, fmt, ret, conv_cnt); } +void safe_cgroup_lines_scanf(const char *const file, const int lineno, + const struct tst_cgroup_group *const cg, + const char *const file_name, + const char *const fmt, ...) +{ + va_list va; + char buf[BUFSIZ]; + ssize_t len = safe_cgroup_read(file, lineno, + cg, file_name, buf, sizeof(buf)); + const int conv_cnt = tst_count_scanf_conversions(fmt); + int ret = 0; + char *line, *buf_ptr; + + if (len < 1) + return; + + line = strtok_r(buf, "\n", &buf_ptr); + while (line && ret != conv_cnt) { + va_start(va, fmt); + ret = vsscanf(line, fmt, va); + va_end(va); + + line = strtok_r(NULL, "\n", &buf_ptr); + } + + if (conv_cnt == ret) + return; + + tst_brk_(file, lineno, TBROK, + "'%s': vsscanf('%s', '%s', ..): Less conversions than expected: %d != %d", + file_name, buf, fmt, ret, conv_cnt); +} + int safe_cgroup_occursin(const char *const file, const int lineno, const struct tst_cgroup_group *const cg, const char *const file_name, From patchwork Tue Jan 4 12:20:07 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Palethorpe X-Patchwork-Id: 1575220 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=suse.com header.i=@suse.com header.a=rsa-sha256 header.s=susede1 header.b=Saedmxb7; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.linux.it (client-ip=2001:1418:10:5::2; helo=picard.linux.it; envelope-from=ltp-bounces+incoming=patchwork.ozlabs.org@lists.linux.it; receiver=) Received: from picard.linux.it (picard.linux.it [IPv6:2001:1418:10:5::2]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4JSsCR4K1Cz9t0k for ; Tue, 4 Jan 2022 23:20:51 +1100 (AEDT) Received: from picard.linux.it (localhost [IPv6:::1]) by picard.linux.it (Postfix) with ESMTP id 461BE3C91A3 for ; Tue, 4 Jan 2022 13:20:48 +0100 (CET) X-Original-To: ltp@lists.linux.it Delivered-To: ltp@picard.linux.it Received: from in-5.smtp.seeweb.it (in-5.smtp.seeweb.it [217.194.8.5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by picard.linux.it (Postfix) with ESMTPS id C3A1D3C2A4D for ; Tue, 4 Jan 2022 13:20:36 +0100 (CET) Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.220.29]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by in-5.smtp.seeweb.it (Postfix) with ESMTPS id 3FBDA600719 for ; Tue, 4 Jan 2022 13:20:36 +0100 (CET) Received: from relay2.suse.de (relay2.suse.de [149.44.160.134]) by smtp-out2.suse.de (Postfix) with ESMTP id A0B0B1F386; Tue, 4 Jan 2022 12:20:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1; t=1641298835; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=5S1FgmQ9mneDCVT/iDxC0ZjS8ZTHl7NT9l6Eadyonlg=; b=Saedmxb7hENQJ5QHKjmhDD7l7n2oL7MmyURH/dG7+P/o0NTpwftBIyLLNHuraoGqoHfftu qwFwGoaHlPS/0hEp9W2k7FAkWfugO29D7fdHlzgKEkWjQBf0qOi6PXkwqAi+X7TgXraNth cRxDpc1VEXLMHPiKpfQX6o1fJ+jyQBc= Received: from g78.suse.de (unknown [10.163.24.42]) by relay2.suse.de (Postfix) with ESMTP id 5AE4EA3B83; Tue, 4 Jan 2022 12:20:35 +0000 (UTC) To: ltp@lists.linux.it Date: Tue, 4 Jan 2022 12:20:07 +0000 Message-Id: <20220104122010.23069-2-rpalethorpe@suse.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220104122010.23069-1-rpalethorpe@suse.com> References: <20220104122010.23069-1-rpalethorpe@suse.com> MIME-Version: 1.0 X-Virus-Scanned: clamav-milter 0.102.4 at in-5.smtp.seeweb.it X-Virus-Status: Clean X-Spam-Status: No, score=0.1 required=7.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_NONE,SPF_PASS autolearn=disabled version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on in-5.smtp.seeweb.it Subject: [LTP] [PATCH v3 2/5] API/cgroup: Add memory.stat X-BeenThere: ltp@lists.linux.it X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux Test Project List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Richard Palethorpe via ltp From: Richard Palethorpe Reply-To: Richard Palethorpe Cc: Richard Palethorpe Errors-To: ltp-bounces+incoming=patchwork.ozlabs.org@lists.linux.it Sender: "ltp" Signed-off-by: Richard Palethorpe Reviewed-by: Cyril Hrubis --- lib/tst_cgroup.c | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/tst_cgroup.c b/lib/tst_cgroup.c index c78f28112..2ef599d9e 100644 --- a/lib/tst_cgroup.c +++ b/lib/tst_cgroup.c @@ -153,6 +153,7 @@ static const struct cgroup_file cgroup_ctrl_files[] = { static const struct cgroup_file memory_ctrl_files[] = { { "memory.current", "memory.usage_in_bytes", CTRL_MEMORY }, { "memory.max", "memory.limit_in_bytes", CTRL_MEMORY }, + { "memory.stat", "memory.stat", CTRL_MEMORY }, { "memory.swappiness", "memory.swappiness", CTRL_MEMORY }, { "memory.swap.current", "memory.memsw.usage_in_bytes", CTRL_MEMORY }, { "memory.swap.max", "memory.memsw.limit_in_bytes", CTRL_MEMORY }, From patchwork Tue Jan 4 12:20:08 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Palethorpe X-Patchwork-Id: 1575222 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=suse.com header.i=@suse.com header.a=rsa-sha256 header.s=susede1 header.b=IH1CP3z5; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.linux.it (client-ip=2001:1418:10:5::2; helo=picard.linux.it; envelope-from=ltp-bounces+incoming=patchwork.ozlabs.org@lists.linux.it; receiver=) Received: from picard.linux.it (picard.linux.it [IPv6:2001:1418:10:5::2]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4JSsCp2spkz9t0k for ; Tue, 4 Jan 2022 23:21:10 +1100 (AEDT) Received: from picard.linux.it (localhost [IPv6:::1]) by picard.linux.it (Postfix) with ESMTP id D6AFC3C9073 for ; Tue, 4 Jan 2022 13:21:07 +0100 (CET) X-Original-To: ltp@lists.linux.it Delivered-To: ltp@picard.linux.it Received: from in-5.smtp.seeweb.it (in-5.smtp.seeweb.it [IPv6:2001:4b78:1:20::5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by picard.linux.it (Postfix) with ESMTPS id 02FA93C1D3C for ; Tue, 4 Jan 2022 13:20:37 +0100 (CET) Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.220.28]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by in-5.smtp.seeweb.it (Postfix) with ESMTPS id 3F4BA60070B for ; Tue, 4 Jan 2022 13:20:36 +0100 (CET) Received: from relay2.suse.de (relay2.suse.de [149.44.160.134]) by smtp-out1.suse.de (Postfix) with ESMTP id E8258212BC; Tue, 4 Jan 2022 12:20:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1; t=1641298835; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=5sYeoKKpnhi4mpeY1vDQ6zf1kRJKCdBDOUnRXgbLAOU=; b=IH1CP3z5yM/zek0Y4mdOutY4HWYEY4696cMTRsJWrp7ugSiqvaeonWl6CjHuzYVnIr0iUC 2tX/fsvO1YlCRWPGDtMwCv1RX4DZTCius5rZPexHiI038GOzhLjrxQF7LVsrAk8rOjS4tl Eo1TKrL/MvnOVjbBTddVTsAPxQ8HgZw= Received: from g78.suse.de (unknown [10.163.24.42]) by relay2.suse.de (Postfix) with ESMTP id AFB49A3B84; Tue, 4 Jan 2022 12:20:35 +0000 (UTC) To: ltp@lists.linux.it Date: Tue, 4 Jan 2022 12:20:08 +0000 Message-Id: <20220104122010.23069-3-rpalethorpe@suse.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220104122010.23069-1-rpalethorpe@suse.com> References: <20220104122010.23069-1-rpalethorpe@suse.com> MIME-Version: 1.0 X-Virus-Scanned: clamav-milter 0.102.4 at in-5.smtp.seeweb.it X-Virus-Status: Clean X-Spam-Status: No, score=0.1 required=7.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_NONE,SPF_PASS autolearn=disabled version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on in-5.smtp.seeweb.it Subject: [LTP] [PATCH v3 3/5] API/fs: Add exfat magic X-BeenThere: ltp@lists.linux.it X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux Test Project List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Richard Palethorpe via ltp From: Richard Palethorpe Reply-To: Richard Palethorpe Cc: Richard Palethorpe Errors-To: ltp-bounces+incoming=patchwork.ozlabs.org@lists.linux.it Sender: "ltp" Signed-off-by: Richard Palethorpe Reviewed-by: Cyril Hrubis --- include/tst_fs.h | 1 + lib/tst_fs_type.c | 2 ++ 2 files changed, 3 insertions(+) diff --git a/include/tst_fs.h b/include/tst_fs.h index 36d4b46f0..efcdff608 100644 --- a/include/tst_fs.h +++ b/include/tst_fs.h @@ -30,6 +30,7 @@ #define TST_EXOFS_MAGIC 0x5DF5 #define TST_OVERLAYFS_MAGIC 0x794c7630 #define TST_FUSE_MAGIC 0x65735546 +#define TST_EXFAT_MAGIC 0x2011BAB0UL enum { TST_BYTES = 1, diff --git a/lib/tst_fs_type.c b/lib/tst_fs_type.c index 8475f4c78..9de80224b 100644 --- a/lib/tst_fs_type.c +++ b/lib/tst_fs_type.c @@ -86,6 +86,8 @@ const char *tst_fs_type_name(long f_type) return "overlayfs"; case TST_FUSE_MAGIC: return "fuse"; + case TST_EXFAT_MAGIC: + return "exfat"; default: return "unknown"; } From patchwork Tue Jan 4 12:20:09 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Palethorpe X-Patchwork-Id: 1575221 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=suse.com header.i=@suse.com header.a=rsa-sha256 header.s=susede1 header.b=EQek/TUt; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.linux.it (client-ip=2001:1418:10:5::2; helo=picard.linux.it; envelope-from=ltp-bounces+incoming=patchwork.ozlabs.org@lists.linux.it; receiver=) Received: from picard.linux.it (picard.linux.it [IPv6:2001:1418:10:5::2]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4JSsCc6Sy9z9t0k for ; Tue, 4 Jan 2022 23:21:00 +1100 (AEDT) Received: from picard.linux.it (localhost [IPv6:::1]) by picard.linux.it (Postfix) with ESMTP id C2EEF3C9029 for ; Tue, 4 Jan 2022 13:20:57 +0100 (CET) X-Original-To: ltp@lists.linux.it Delivered-To: ltp@picard.linux.it Received: from in-7.smtp.seeweb.it (in-7.smtp.seeweb.it [IPv6:2001:4b78:1:20::7]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by picard.linux.it (Postfix) with ESMTPS id 07F863C2A4D for ; Tue, 4 Jan 2022 13:20:37 +0100 (CET) Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.220.28]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by in-7.smtp.seeweb.it (Postfix) with ESMTPS id 9C78C200224 for ; Tue, 4 Jan 2022 13:20:36 +0100 (CET) Received: from relay2.suse.de (relay2.suse.de [149.44.160.134]) by smtp-out1.suse.de (Postfix) with ESMTP id 3BACB212BD; Tue, 4 Jan 2022 12:20:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1; t=1641298836; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=urqIU9LZWt+RSQOk+rkNVQ7hWLKQKIPOFHYmB/NqHCk=; b=EQek/TUtVAxZjNdKmJJ+tSR39J3SDQd1s7sV0BirJmeGaJWn4e/YWhv+lynZZsjSPke5f6 2HYKnvS1Rlyf9cFzsXlnpRL70caxkoPB8kNV06W1O1R46lm0KYC99jVpZFrWs+DXC6opmJ P2PRyybVe4H/WK71X6Fyn/McZe+4EK4= Received: from g78.suse.de (unknown [10.163.24.42]) by relay2.suse.de (Postfix) with ESMTP id 037B0A3B84; Tue, 4 Jan 2022 12:20:35 +0000 (UTC) To: ltp@lists.linux.it Date: Tue, 4 Jan 2022 12:20:09 +0000 Message-Id: <20220104122010.23069-4-rpalethorpe@suse.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220104122010.23069-1-rpalethorpe@suse.com> References: <20220104122010.23069-1-rpalethorpe@suse.com> MIME-Version: 1.0 X-Virus-Scanned: clamav-milter 0.102.4 at in-7.smtp.seeweb.it X-Virus-Status: Clean X-Spam-Status: No, score=0.1 required=7.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_NONE,SPF_PASS autolearn=disabled version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on in-7.smtp.seeweb.it Subject: [LTP] [PATCH v3 4/5] API: Add TST_EXP_EXPR macro X-BeenThere: ltp@lists.linux.it X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux Test Project List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Richard Palethorpe via ltp From: Richard Palethorpe Reply-To: Richard Palethorpe Cc: Richard Palethorpe Errors-To: ltp-bounces+incoming=patchwork.ozlabs.org@lists.linux.it Sender: "ltp" Simplifies evaluating an arbitrary expression or statement which is not a syscall. Signed-off-by: Richard Palethorpe Reviewed-by: Cyril Hrubis --- include/tst_test_macros.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/include/tst_test_macros.h b/include/tst_test_macros.h index 5dea1aabd..ec8c38523 100644 --- a/include/tst_test_macros.h +++ b/include/tst_test_macros.h @@ -195,4 +195,7 @@ extern void *TST_RET_PTR; #define TST_EXP_FAIL2(SCALL, ERRNO, ...) TST_EXP_FAIL_(TST_RET >= 0, SCALL, #SCALL, ERRNO, ##__VA_ARGS__) +#define TST_EXP_EXPR(EXPR, FMT, ...) \ + tst_res_(__FILE__, __LINE__, (EXPR) ? TPASS : TFAIL, "Expect: " FMT, ##__VA_ARGS__); + #endif /* TST_TEST_MACROS_H__ */ From patchwork Tue Jan 4 12:20:10 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Palethorpe X-Patchwork-Id: 1575223 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=suse.com header.i=@suse.com header.a=rsa-sha256 header.s=susede1 header.b=McnBmCei; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.linux.it (client-ip=2001:1418:10:5::2; helo=picard.linux.it; envelope-from=ltp-bounces+incoming=patchwork.ozlabs.org@lists.linux.it; receiver=) Received: from picard.linux.it (picard.linux.it [IPv6:2001:1418:10:5::2]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4JSsD01Zdmz9t0k for ; Tue, 4 Jan 2022 23:21:20 +1100 (AEDT) Received: from picard.linux.it (localhost [IPv6:::1]) by picard.linux.it (Postfix) with ESMTP id 7757E3C9087 for ; Tue, 4 Jan 2022 13:21:17 +0100 (CET) X-Original-To: ltp@lists.linux.it Delivered-To: ltp@picard.linux.it Received: from in-5.smtp.seeweb.it (in-5.smtp.seeweb.it [IPv6:2001:4b78:1:20::5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by picard.linux.it (Postfix) with ESMTPS id 737E73C1D3C for ; Tue, 4 Jan 2022 13:20:37 +0100 (CET) Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.220.29]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by in-5.smtp.seeweb.it (Postfix) with ESMTPS id D9D15600707 for ; Tue, 4 Jan 2022 13:20:36 +0100 (CET) Received: from relay2.suse.de (relay2.suse.de [149.44.160.134]) by smtp-out2.suse.de (Postfix) with ESMTP id 813F01F397; Tue, 4 Jan 2022 12:20:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1; t=1641298836; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=NvdSIaE8X7wE/JC8kb8vh4vnI8ng3EatA3kMnWqXymU=; b=McnBmCeiyKYVo56uD35tFU560xiY65pU9/AMqtH6xueNUFN3SrUghWKIyUNN+VQc+0oMMe Fp3rozdedFWEPK5Kw2skW1rQgP8xm6UgIRoHA6RSm+LO1PCQkDTcbUF1LhIXGa7Hboh95C RerYKo7tUu3Va5itTrUdjfOjKJPcD+Y= Received: from g78.suse.de (unknown [10.163.24.42]) by relay2.suse.de (Postfix) with ESMTP id 4BD1AA3B83; Tue, 4 Jan 2022 12:20:36 +0000 (UTC) To: ltp@lists.linux.it Date: Tue, 4 Jan 2022 12:20:10 +0000 Message-Id: <20220104122010.23069-5-rpalethorpe@suse.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220104122010.23069-1-rpalethorpe@suse.com> References: <20220104122010.23069-1-rpalethorpe@suse.com> MIME-Version: 1.0 X-Virus-Scanned: clamav-milter 0.102.4 at in-5.smtp.seeweb.it X-Virus-Status: Clean X-Spam-Status: No, score=0.1 required=7.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_NONE,SPF_PASS autolearn=disabled version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on in-5.smtp.seeweb.it Subject: [LTP] [PATCH v3 5/5] cgroup: Add memcontrol02 X-BeenThere: ltp@lists.linux.it X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux Test Project List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Richard Palethorpe via ltp From: Richard Palethorpe Reply-To: Richard Palethorpe Cc: Richard Palethorpe Errors-To: ltp-bounces+incoming=patchwork.ozlabs.org@lists.linux.it Sender: "ltp" This test appears to compare the overall "current" counter with anon and file (page cache) memory counters. The file test assumes much more memory will be consumed by the page cache. This is certainly true on XFS and BTRFS where little or no memory outside the page cache is used. However on ext4, ntfs and especially exfat, we can see more memory being used. This seems to be related to fs/buffer.c and buffer_head usage. exfat in particular allocates a lot of memory. This is possibly due to the buffer_head being allocated in cont_write_begin: Children Self Samples bytes_alloc Parent symbol ........ ........ ............ .................. ................. 97.66% 97.66% 102401 168 exfat_write_begin | ---0xf7eec549 entry_SYSENTER_compat_after_hwframe do_fast_syscall_32 __noinstr_text_start ksys_write vfs_write new_sync_write generic_file_write_iter __generic_file_write_iter generic_perform_write exfat_write_begin cont_write_begin __block_write_begin_int create_page_buffers create_empty_buffers alloc_page_buffers alloc_buffer_head kmem_cache_alloc kmem_cache_alloc 0.20% 0.20% 205 584 exfat_write_begin 0.06% 0.06% 64 168 exfat_fill_super 0.05% 0.05% 49 256 exfat_fill_super 0.00% 0.00% 4 584 exfat_fill_super 0.00% 0.00% 1 256 exfat_create 0.00% 0.00% 1 1528 exfat_create 0.00% 0.00% 1 1528 exfat_fill_super 0.00% 0.00% 1 312 exfat_fill_super We can see (using slub_debug=U,buffer_head) that these buffer_head objects are not freed until the file is unlinked: Outputting '/sys/kernel/debug/slab/buffer_head/alloc_traces' ... 102480 alloc_buffer_head+0x1b/0x90 age=0/268/2629529 pid=248-430 cpus=0,2 Outputting '/sys/kernel/debug/slab/buffer_head/free_traces' ... 102400 age=4297543659 pid=0 cpus=0 80 free_buffer_head+0x21/0x60 age=147/266217/2629538 pid=337-427 cpus=1-2 ext4 and ntfs also use some of the "buffer" code, but don't seem to allocate quite as much. Although ext4 begins to fail when slub debug is enabled due to the extra memory debugging uses. In any case, it appears that the CGroup code is correct, so I have increased the error margin when exfat or ext234 is detected. Signed-off-by: Richard Palethorpe Reviewed-by: Cyril Hrubis --- runtest/controllers | 1 + testcases/kernel/controllers/memcg/.gitignore | 1 + .../kernel/controllers/memcg/memcontrol02.c | 183 ++++++++++++++++++ 3 files changed, 185 insertions(+) create mode 100644 testcases/kernel/controllers/memcg/memcontrol02.c diff --git a/runtest/controllers b/runtest/controllers index 2b41a94d3..09e0107e4 100644 --- a/runtest/controllers +++ b/runtest/controllers @@ -18,6 +18,7 @@ memcg_control memcg_control_test.sh # kselftest ports memcontrol01 memcontrol01 +memcontrol02 memcontrol02 cgroup_fj_function_debug cgroup_fj_function.sh debug cgroup_fj_function_cpuset cgroup_fj_function.sh cpuset diff --git a/testcases/kernel/controllers/memcg/.gitignore b/testcases/kernel/controllers/memcg/.gitignore index c3565f85c..f7de40d53 100644 --- a/testcases/kernel/controllers/memcg/.gitignore +++ b/testcases/kernel/controllers/memcg/.gitignore @@ -6,3 +6,4 @@ /regression/memcg_test_4 /stress/memcg_process_stress memcontrol01 +memcontrol02 diff --git a/testcases/kernel/controllers/memcg/memcontrol02.c b/testcases/kernel/controllers/memcg/memcontrol02.c new file mode 100644 index 000000000..f236e6cdc --- /dev/null +++ b/testcases/kernel/controllers/memcg/memcontrol02.c @@ -0,0 +1,183 @@ +// SPDX-License-Identifier: GPL-2.0 +/*\ + * + * [Description] + * + * Conversion of second kself test in cgroup/test_memcontrol.c. + * + * Original description: + * "This test creates a memory cgroup, allocates some anonymous memory + * and some pagecache and check memory.current and some memory.stat + * values." + * + * Note that the V1 rss and cache counters were renamed to anon and + * file in V2. Besides error reporting, this test differs from the + * kselftest in the following ways: + * + * . It supports V1. + * . It writes instead of reads to fill the page cache. Because no + * pages were allocated on tmpfs. + * . It runs on most filesystems available + * . On EXFAT and extN we change the margine of error between all and file + * memory to 50%. Because these allocate non-page-cache memory during writes. + */ +#define _GNU_SOURCE + +#include +#include + +#include "tst_test.h" +#include "tst_cgroup.h" + +#define TMPDIR "mntdir" +#define MB(x) (x << 20) + +static size_t page_size; +static const struct tst_cgroup_group *cg_test; +static int is_v1_memcg; +static struct tst_cgroup_group *cg_child; +static int fd; +static int file_to_all_error = 10; + +/* + * Checks if two given values differ by less than err% of their sum. + */ +static inline int values_close(const ssize_t a, + const ssize_t b, + const ssize_t err) +{ + return labs(a - b) <= (a + b) / 100 * err; +} + +static void alloc_anon_50M_check(void) +{ + const ssize_t size = MB(50); + char *buf, *ptr; + ssize_t anon, current; + const char *const anon_key_fmt = is_v1_memcg ? "rss %zd" : "anon %zd"; + + buf = SAFE_MALLOC(size); + for (ptr = buf; ptr < buf + size; ptr += page_size) + *ptr = 0; + + SAFE_CGROUP_SCANF(cg_child, "memory.current", "%zd", ¤t); + TST_EXP_EXPR(current >= size, + "(memory.current=%zd) >= (size=%zd)", current, size); + + SAFE_CGROUP_LINES_SCANF(cg_child, "memory.stat", anon_key_fmt, &anon); + + TST_EXP_EXPR(anon > 0, "(memory.stat.anon=%zd) > 0", anon); + TST_EXP_EXPR(values_close(size, current, 3), + "(size=%zd) ~= (memory.stat.anon=%zd)", size, current); + TST_EXP_EXPR(values_close(anon, current, 3), + "(memory.current=%zd) ~= (memory.stat.anon=%zd)", + current, anon); +} + +static void alloc_pagecache(const int fd, size_t size) +{ + char buf[BUFSIZ]; + size_t i; + + for (i = 0; i < size; i += sizeof(buf)) + SAFE_WRITE(1, fd, buf, sizeof(buf)); +} + +static void alloc_pagecache_50M_check(void) +{ + const size_t size = MB(50); + size_t current, file; + const char *const file_key_fmt = is_v1_memcg ? "cache %zd" : "file %zd"; + + TEST(open(TMPDIR"/tmpfile", O_RDWR | O_CREAT, 0600)); + + if (TST_RET < 0) { + if (TST_ERR == EOPNOTSUPP) + tst_brk(TCONF, "O_TMPFILE not supported by FS"); + + tst_brk(TBROK | TTERRNO, + "open(%s, O_TMPFILE | O_RDWR | O_EXCL", TMPDIR"/."); + } + fd = TST_RET; + + SAFE_CGROUP_SCANF(cg_child, "memory.current", "%zu", ¤t); + tst_res(TINFO, "Created temp file: memory.current=%zu", current); + + alloc_pagecache(fd, size); + + SAFE_CGROUP_SCANF(cg_child, "memory.current", "%zu", ¤t); + TST_EXP_EXPR(current >= size, + "(memory.current=%zu) >= (size=%zu)", current, size); + + SAFE_CGROUP_LINES_SCANF(cg_child, "memory.stat", file_key_fmt, &file); + TST_EXP_EXPR(file > 0, "(memory.stat.file=%zd) > 0", file); + + TST_EXP_EXPR(values_close(file, current, file_to_all_error), + "(memory.current=%zd) ~= (memory.stat.file=%zd)", + current, file); + + SAFE_CLOSE(fd); +} + +static void test_memcg_current(unsigned int n) +{ + size_t current; + + cg_child = tst_cgroup_group_mk(cg_test, "child"); + SAFE_CGROUP_SCANF(cg_child, "memory.current", "%zu", ¤t); + TST_EXP_EXPR(current == 0, "(current=%zu) == 0", current); + + if (!SAFE_FORK()) { + SAFE_CGROUP_PRINTF(cg_child, "cgroup.procs", "%d", getpid()); + + SAFE_CGROUP_SCANF(cg_child, "memory.current", "%zu", ¤t); + tst_res(TINFO, "Added proc to memcg: memory.current=%zu", + current); + + if (!n) + alloc_anon_50M_check(); + else + alloc_pagecache_50M_check(); + } else { + tst_reap_children(); + cg_child = tst_cgroup_group_rm(cg_child); + } +} + +static void setup(void) +{ + page_size = SAFE_SYSCONF(_SC_PAGESIZE); + + tst_cgroup_require("memory", NULL); + cg_test = tst_cgroup_get_test_group(); + + is_v1_memcg = TST_CGROUP_VER(cg_test, "memory") == TST_CGROUP_V1; + + switch (tst_fs_type(TMPDIR)) { + case TST_EXFAT_MAGIC: + case TST_EXT234_MAGIC: + file_to_all_error = 50; + break; + } +} + +static void cleanup(void) +{ + if (cg_child) + cg_child = tst_cgroup_group_rm(cg_child); + + tst_cgroup_cleanup(); +} + +static struct tst_test test = { + .setup = setup, + .cleanup = cleanup, + .tcnt = 2, + .test = test_memcg_current, + .mount_device = 1, + .dev_min_size = 256, + .mntpoint = TMPDIR, + .all_filesystems = 1, + .forks_child = 1, + .needs_root = 1, +};