{"id":2234916,"url":"http://patchwork.ozlabs.org/api/1.2/patches/2234916/?format=json","web_url":"http://patchwork.ozlabs.org/project/linux-ext4/patch/20260508093428.5814-3-liubaolin12138@163.com/","project":{"id":8,"url":"http://patchwork.ozlabs.org/api/1.2/projects/8/?format=json","name":"Linux ext4 filesystem development","link_name":"linux-ext4","list_id":"linux-ext4.vger.kernel.org","list_email":"linux-ext4@vger.kernel.org","web_url":null,"scm_url":null,"webscm_url":null,"list_archive_url":"","list_archive_url_format":"","commit_url_format":""},"msgid":"<20260508093428.5814-3-liubaolin12138@163.com>","list_archive_url":null,"date":"2026-05-08T09:34:27","name":"[v4,v4,2/3] ext4: use atomic operations for s_mb_stats accesses","commit_ref":null,"pull_url":null,"state":"new","archived":false,"hash":"8eb9ddc7e9836d1d715d030df76adacd1a23c69b","submitter":{"id":89479,"url":"http://patchwork.ozlabs.org/api/1.2/people/89479/?format=json","name":"liubaolin","email":"liubaolin12138@163.com"},"delegate":null,"mbox":"http://patchwork.ozlabs.org/project/linux-ext4/patch/20260508093428.5814-3-liubaolin12138@163.com/mbox/","series":[{"id":503354,"url":"http://patchwork.ozlabs.org/api/1.2/series/503354/?format=json","web_url":"http://patchwork.ozlabs.org/project/linux-ext4/list/?series=503354","date":"2026-05-08T09:34:26","name":"ext4: improve mballoc statistics reporting and control","version":4,"mbox":"http://patchwork.ozlabs.org/series/503354/mbox/"}],"comments":"http://patchwork.ozlabs.org/api/patches/2234916/comments/","check":"pending","checks":"http://patchwork.ozlabs.org/api/patches/2234916/checks/","tags":{},"related":[],"headers":{"Return-Path":"\n <SRS0=M1t8=DF=vger.kernel.org=linux-ext4+bounces-16361-patchwork-incoming=ozlabs.org@ozlabs.org>","X-Original-To":["incoming@patchwork.ozlabs.org","linux-ext4@vger.kernel.org"],"Delivered-To":["patchwork-incoming@legolas.ozlabs.org","patchwork-incoming@ozlabs.org"],"Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (1024-bit key;\n unprotected) header.d=163.com header.i=@163.com header.a=rsa-sha256\n header.s=s110527 header.b=Ef0SfN4O;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=ozlabs.org\n (client-ip=2404:9400:2221:ea00::3; helo=mail.ozlabs.org;\n envelope-from=srs0=m1t8=df=vger.kernel.org=linux-ext4+bounces-16361-patchwork-incoming=ozlabs.org@ozlabs.org;\n receiver=patchwork.ozlabs.org)","gandalf.ozlabs.org;\n arc=pass smtp.remote-ip=\"2600:3c04:e001:36c::12fc:5321\"\n arc.chain=subspace.kernel.org","gandalf.ozlabs.org;\n dmarc=pass (p=none dis=none) header.from=163.com","gandalf.ozlabs.org;\n\tdkim=pass (1024-bit key;\n unprotected) header.d=163.com header.i=@163.com header.a=rsa-sha256\n header.s=s110527 header.b=Ef0SfN4O;\n\tdkim-atps=neutral","gandalf.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=2600:3c04:e001:36c::12fc:5321; helo=tor.lore.kernel.org;\n envelope-from=linux-ext4+bounces-16361-patchwork-incoming=ozlabs.org@vger.kernel.org;\n receiver=ozlabs.org)","smtp.subspace.kernel.org;\n\tdkim=pass (1024-bit key) header.d=163.com header.i=@163.com\n header.b=\"Ef0SfN4O\"","smtp.subspace.kernel.org;\n arc=none smtp.client-ip=220.197.31.4","smtp.subspace.kernel.org;\n dmarc=pass (p=none dis=none) header.from=163.com","smtp.subspace.kernel.org;\n spf=pass smtp.mailfrom=163.com"],"Received":["from mail.ozlabs.org (mail.ozlabs.org [IPv6:2404:9400:2221:ea00::3])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4gBkWs6w3Jz1yKd\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 08 May 2026 19:36:09 +1000 (AEST)","from mail.ozlabs.org (mail.ozlabs.org [IPv6:2404:9400:2221:ea00::3])\n\tby gandalf.ozlabs.org (Postfix) with ESMTP id 4gBkWs6Sc5z4wCG\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 08 May 2026 19:36:09 +1000 (AEST)","by gandalf.ozlabs.org (Postfix)\n\tid 4gBkWs6NN5z4wJS; Fri, 08 May 2026 19:36:09 +1000 (AEST)","from tor.lore.kernel.org (tor.lore.kernel.org\n [IPv6:2600:3c04:e001:36c::12fc:5321])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519)\n\t(No client certificate requested)\n\tby gandalf.ozlabs.org (Postfix) with ESMTPS id 4gBkWp2zPWz4wCG\n\tfor <patchwork-incoming@ozlabs.org>; Fri, 08 May 2026 19:36:06 +1000 (AEST)","from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby tor.lore.kernel.org (Postfix) with ESMTP id AE7A2306389A\n\tfor <patchwork-incoming@ozlabs.org>; Fri,  8 May 2026 09:35:37 +0000 (UTC)","from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id 13A8D39023B;\n\tFri,  8 May 2026 09:35:37 +0000 (UTC)","from m16.mail.163.com (m16.mail.163.com [220.197.31.4])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby smtp.subspace.kernel.org (Postfix) with ESMTPS id E8F753C0633;\n\tFri,  8 May 2026 09:35:30 +0000 (UTC)","from liubaolin-VMware-Virtual-Platform.localdomain (unknown [])\n\tby gzsmtp2 (Coremail) with SMTP id PSgvCgDXeCEprv1pUW9wDg--.60442S4;\n\tFri, 08 May 2026 17:34:56 +0800 (CST)"],"ARC-Seal":["i=2; a=rsa-sha256; d=ozlabs.org; s=201707; t=1778232969; cv=pass;\n\tb=NjT3XXsUX9DjU48ZY9SKoW835aFO/jmFFeve4boB0A+0s5Z2C5EON50BF61c+vfkzYWWwK2Q7jODaTN9wnbxNRZ+SvkI4Fqow4FiVJSgwCkDKVsnJpPMDME4BpBV7cXpqWGWk/huDMD9G4KZhntLEXJ43EFOpf44qIxzQmiyUML9hNw6XhxosNTLxY4gZz0u+RIYgSrRaUgeK1lVcsdHtM7le0u7qXPTue4Vx4suZfECKJVk7RGCUKtDDoaKdXdINsjsbzHO5ppJJq2FrpAaV27EMlIaRUQ+AKBdBXlGmlIvJn4UQhJz0oEKOYSVRJ424xfLrPlUJbJn+j2DRIf6dQ==","i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1778232936; cv=none;\n b=e+iGiekJ68Rd5hHSmeqkMd8RmbROiSbsyJ3ODQqhVHzciR186Odlh40DPfhM5jBO3yq/9o22iOO0H302zCkh/vcZ/wu4w9fxzt4Lk4wWOdLnmT8reK07uKJE25VS4cbClO/prejKMQIAhJiwrMO1xEmOT7SlvB5435zQDI4vwn8="],"ARC-Message-Signature":["i=2; a=rsa-sha256; d=ozlabs.org; s=201707;\n\tt=1778232969; c=relaxed/relaxed;\n\tbh=Hox6VtJtqn/K6Bdh5hfLYu35wGS6LKEAxmhmuB+uoe4=;\n\th=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:\n\t MIME-Version;\n b=G/8eqEbNwHWT6N0Ub8kBLljI07OaoSZEcwso3s8225q3IGccJ9z8hyONNNmqrBALnDjpOSdQrZAL2TP+gEImbphXNQzk1kGJl/FGdAy+QA1MjoxfRil4gg+GlL053aLksZCflysdr25ZOZwVElshSEX3LepsJ63WW1eCGCSiZcdeFvZR3UGIhR23pfz1Q2aVbsFvwsxzwPnu0RLRo8x0HxyPtE4a2bWVXoJkkH7ICbz7aR96uuMKDO580hXSEhpM5pIJnY8zBeZWgMlFtaPhiQqGBoB4OLx32Lgc4VBk9Zm///yA+WH7mKTIIUohH5n2hqTKmWLzvXHmvAG4b4EGfQ==","i=1; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1778232936; c=relaxed/simple;\n\tbh=iLEMVuIUAYNxQld7HNPZ4x6eyg9UYHHvPCzN+/WuXjo=;\n\th=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:\n\t MIME-Version;\n b=Gjbp7IwQ+ZERsr9SZqyBw9vA5RQAJigeiXTIAsIMsVHc2G5EJ2l956b7Wd/8XV8EI3rriyA42o0nrCq3e5gVNZvZI3inAZAnGE3lwWJ6JDvw8wsbbX0iWEogN/megIDCfBBZ0WYcbRMxODq0w5aYAw7Uv4x96VBAdiof30qSjss="],"ARC-Authentication-Results":["i=2; gandalf.ozlabs.org;\n dmarc=pass (p=none dis=none) header.from=163.com; dkim=pass (1024-bit key;\n unprotected) header.d=163.com header.i=@163.com header.a=rsa-sha256\n header.s=s110527 header.b=Ef0SfN4O; dkim-atps=neutral;\n spf=pass (client-ip=2600:3c04:e001:36c::12fc:5321; helo=tor.lore.kernel.org;\n envelope-from=linux-ext4+bounces-16361-patchwork-incoming=ozlabs.org@vger.kernel.org;\n receiver=ozlabs.org) smtp.mailfrom=vger.kernel.org","i=1; smtp.subspace.kernel.org;\n dmarc=pass (p=none dis=none) header.from=163.com;\n spf=pass smtp.mailfrom=163.com;\n dkim=pass (1024-bit key) header.d=163.com header.i=@163.com\n header.b=Ef0SfN4O; arc=none smtp.client-ip=220.197.31.4"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=163.com;\n\ts=s110527; h=From:To:Subject:Date:Message-ID:MIME-Version; bh=Ho\n\tx6VtJtqn/K6Bdh5hfLYu35wGS6LKEAxmhmuB+uoe4=; b=Ef0SfN4OpTU0tKeQ56\n\t8+1ipUPsd6CmNBgVdtL4bv5FZlljgs2yrJYDGk5OV0ImkZzk+BCxS2XUKZExjp1U\n\tgl0VcFR5tpWj1cYdoE5ZCXGFPr8va9Gqqig+0fSZ+SDZFWq1cry6Xdy8Z5CJ3X/0\n\tFlFizDrIpUc1YRDjXekWpuT8g=","From":"Baolin Liu <liubaolin12138@163.com>","To":"tytso@mit.edu,\n\tadilger.kernel@dilger.ca,\n\tlibaokun@linux.alibaba.com","Cc":"ojaswin@linux.ibm.com,\n\tritesh.list@gmail.com,\n\tyi.zhang@huawei.com,\n\tlinux-ext4@vger.kernel.org,\n\tlinux-kernel@vger.kernel.org,\n\twangguanyu@vivo.com,\n\tadilger@dilger.ca,\n\tliubaolin12138@163.com,\n\tBaolin Liu <liubaolin@kylinos.cn>","Subject":"[PATCH v4 v4 2/3] ext4: use atomic operations for s_mb_stats accesses","Date":"Fri,  8 May 2026 17:34:27 +0800","Message-ID":"<20260508093428.5814-3-liubaolin12138@163.com>","X-Mailer":"git-send-email 2.51.0","In-Reply-To":"<20260508093428.5814-1-liubaolin12138@163.com>","References":"<20260508093428.5814-1-liubaolin12138@163.com>","Precedence":"bulk","X-Mailing-List":"linux-ext4@vger.kernel.org","List-Id":"<linux-ext4.vger.kernel.org>","List-Subscribe":"<mailto:linux-ext4+subscribe@vger.kernel.org>","List-Unsubscribe":"<mailto:linux-ext4+unsubscribe@vger.kernel.org>","MIME-Version":"1.0","Content-Transfer-Encoding":"8bit","X-CM-TRANSID":"PSgvCgDXeCEprv1pUW9wDg--.60442S4","X-Coremail-Antispam":"1Uf129KBjvJXoW3ArWkAw4rtry5Ww48tr4UCFg_yoWxAFWxpr\n\tsrZFyUAr48Zw18uF4DWa98W3Z5K3y0k347Jr4S934fuFyavFyFyasaqFyUAFyDArWDAFn5\n\tZ3yqyrWDGrWIka7anT9S1TB71UUUUU7qnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2\n\t9KBjDUYxBIdaVFxhVjvjDU0xZFpf9x0zNiifUUUUUU=","X-CM-SenderInfo":"xolxutxrol0iasrtmqqrwthudrp/xtbC6QCVYGn9rkB+7gAA32","X-Spam-Status":"No, score=-1.2 required=5.0 tests=ARC_SIGNED,ARC_VALID,\n\tDKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DMARC_PASS,\n\tFREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,HEADER_FROM_DIFFERENT_DOMAINS,\n\tMAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,UNPARSEABLE_RELAY\n\tautolearn=disabled version=4.0.1","X-Spam-Checker-Version":"SpamAssassin 4.0.1 (2024-03-25) on gandalf.ozlabs.org"},"content":"From: Baolin Liu <liubaolin@kylinos.cn>\n\ns_mb_stats can be read from mballoc paths while being updated\nthrough sysfs, which can race.\nConvert it to atomic_t and use atomic_read()/atomic_set()\nfor all accesses.\n\nSigned-off-by: Baolin Liu <liubaolin@kylinos.cn>\n---\n fs/ext4/ext4.h    |  2 +-\n fs/ext4/mballoc.c | 24 ++++++++++++------------\n fs/ext4/sysfs.c   |  9 ++++++++-\n 3 files changed, 21 insertions(+), 14 deletions(-)","diff":"diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h\nindex 293f698b7042..04bccfcb018e 100644\n--- a/fs/ext4/ext4.h\n+++ b/fs/ext4/ext4.h\n@@ -1624,7 +1624,7 @@ struct ext4_sb_info {\n \tunsigned int s_mb_stream_request;\n \tunsigned int s_mb_max_to_scan;\n \tunsigned int s_mb_min_to_scan;\n-\tunsigned int s_mb_stats;\n+\tatomic_t s_mb_stats;\n \tunsigned int s_mb_order2_reqs;\n \tunsigned int s_mb_group_prealloc;\n \tunsigned int s_max_dir_size_kb;\ndiff --git a/fs/ext4/mballoc.c b/fs/ext4/mballoc.c\nindex 1e13ef62cb9d..95103fbc1583 100644\n--- a/fs/ext4/mballoc.c\n+++ b/fs/ext4/mballoc.c\n@@ -924,7 +924,7 @@ static int ext4_mb_scan_groups_xa_range(struct ext4_allocation_context *ac,\n \txa_for_each_range(xa, group, grp, start, end - 1) {\n \t\tint err;\n \n-\t\tif (sbi->s_mb_stats)\n+\t\tif (atomic_read(&sbi->s_mb_stats))\n \t\t\tatomic64_inc(&sbi->s_bal_cX_groups_considered[cr]);\n \n \t\terr = ext4_mb_scan_group(ac, grp->bb_group);\n@@ -980,7 +980,7 @@ static int ext4_mb_scan_groups_p2_aligned(struct ext4_allocation_context *ac,\n \t\tgoto wrap_around;\n \t}\n \n-\tif (sbi->s_mb_stats)\n+\tif (atomic_read(&sbi->s_mb_stats))\n \t\tatomic64_inc(&sbi->s_bal_cX_failed[ac->ac_criteria]);\n \n \t/* Increment cr and search again if no group is found */\n@@ -1031,7 +1031,7 @@ static int ext4_mb_scan_groups_goal_fast(struct ext4_allocation_context *ac,\n \t\tgoto wrap_around;\n \t}\n \n-\tif (sbi->s_mb_stats)\n+\tif (atomic_read(&sbi->s_mb_stats))\n \t\tatomic64_inc(&sbi->s_bal_cX_failed[ac->ac_criteria]);\n \t/*\n \t * CR_BEST_AVAIL_LEN works based on the concept that we have\n@@ -1135,7 +1135,7 @@ static int ext4_mb_scan_groups_best_avail(struct ext4_allocation_context *ac,\n \n \t/* Reset goal length to original goal length before falling into CR_GOAL_LEN_SLOW */\n \tac->ac_g_ex.fe_len = ac->ac_orig_goal_len;\n-\tif (sbi->s_mb_stats)\n+\tif (atomic_read(&sbi->s_mb_stats))\n \t\tatomic64_inc(&sbi->s_bal_cX_failed[ac->ac_criteria]);\n \tac->ac_criteria = CR_GOAL_LEN_SLOW;\n \n@@ -1184,7 +1184,7 @@ static int ext4_mb_scan_groups_linear(struct ext4_allocation_context *ac,\n \t\tac->ac_criteria++;\n \n \t/* Processed all groups and haven't found blocks */\n-\tif (sbi->s_mb_stats && i == ngroups)\n+\tif (atomic_read(&sbi->s_mb_stats) && i == ngroups)\n \t\tatomic64_inc(&sbi->s_bal_cX_failed[cr]);\n \n \treturn 0;\n@@ -2535,7 +2535,7 @@ void ext4_mb_simple_scan_group(struct ext4_allocation_context *ac,\n \n \t\tBUG_ON(ac->ac_f_ex.fe_len != ac->ac_g_ex.fe_len);\n \n-\t\tif (EXT4_SB(sb)->s_mb_stats)\n+\t\tif (atomic_read(&EXT4_SB(sb)->s_mb_stats))\n \t\t\tatomic_inc(&EXT4_SB(sb)->s_bal_2orders);\n \n \t\tbreak;\n@@ -2780,7 +2780,7 @@ static int ext4_mb_good_group_nolock(struct ext4_allocation_context *ac,\n \n \tif (!grp)\n \t\treturn -EFSCORRUPTED;\n-\tif (sbi->s_mb_stats)\n+\tif (atomic_read(&sbi->s_mb_stats))\n \t\tatomic64_inc(&sbi->s_bal_cX_groups_considered[ac->ac_criteria]);\n \tif (should_lock) {\n \t\text4_lock_group(sb, group);\n@@ -3091,7 +3091,7 @@ ext4_mb_regular_allocator(struct ext4_allocation_context *ac)\n \t\t}\n \t}\n \n-\tif (sbi->s_mb_stats && ac->ac_status == AC_STATUS_FOUND) {\n+\tif (atomic_read(&sbi->s_mb_stats) && ac->ac_status == AC_STATUS_FOUND) {\n \t\tatomic64_inc(&sbi->s_bal_cX_hits[ac->ac_criteria]);\n \t\tif (ac->ac_flags & EXT4_MB_STREAM_ALLOC &&\n \t\t    ac->ac_b_ex.fe_group == ac->ac_g_ex.fe_group)\n@@ -3204,7 +3204,7 @@ int ext4_seq_mb_stats_show(struct seq_file *seq, void *offset)\n \tstruct ext4_sb_info *sbi = EXT4_SB(sb);\n \n \tseq_puts(seq, \"mballoc:\\n\");\n-\tif (!sbi->s_mb_stats) {\n+\tif (!atomic_read(&sbi->s_mb_stats)) {\n \t\tseq_puts(seq, \"\\tmb stats collection turned off.\\n\");\n \t\tseq_puts(\n \t\t\tseq,\n@@ -3783,7 +3783,7 @@ int ext4_mb_init(struct super_block *sb)\n \n \tsbi->s_mb_max_to_scan = MB_DEFAULT_MAX_TO_SCAN;\n \tsbi->s_mb_min_to_scan = MB_DEFAULT_MIN_TO_SCAN;\n-\tsbi->s_mb_stats = MB_DEFAULT_STATS;\n+\tatomic_set(&sbi->s_mb_stats, MB_DEFAULT_STATS);\n \tsbi->s_mb_stream_request = MB_DEFAULT_STREAM_THRESHOLD;\n \tsbi->s_mb_order2_reqs = MB_DEFAULT_ORDER2_REQS;\n \tsbi->s_mb_best_avail_max_trim_order = MB_DEFAULT_BEST_AVAIL_TRIM_ORDER;\n@@ -3929,7 +3929,7 @@ void ext4_mb_release(struct super_block *sb)\n \tkfree(sbi->s_mb_offsets);\n \tkfree(sbi->s_mb_maxs);\n \tiput(sbi->s_buddy_cache);\n-\tif (sbi->s_mb_stats) {\n+\tif (atomic_read(&sbi->s_mb_stats)) {\n \t\text4_msg(sb, KERN_INFO,\n \t\t       \"mballoc: %u blocks %u reqs (%u success)\",\n \t\t\t\tatomic_read(&sbi->s_bal_allocated),\n@@ -4694,7 +4694,7 @@ static void ext4_mb_collect_stats(struct ext4_allocation_context *ac)\n {\n \tstruct ext4_sb_info *sbi = EXT4_SB(ac->ac_sb);\n \n-\tif (sbi->s_mb_stats && ac->ac_g_ex.fe_len >= 1) {\n+\tif (atomic_read(&sbi->s_mb_stats) && ac->ac_g_ex.fe_len >= 1) {\n \t\tatomic_inc(&sbi->s_bal_reqs);\n \t\tatomic_add(ac->ac_b_ex.fe_len, &sbi->s_bal_allocated);\n \t\tif (ac->ac_b_ex.fe_len >= ac->ac_o_ex.fe_len)\ndiff --git a/fs/ext4/sysfs.c b/fs/ext4/sysfs.c\nindex b87d7bdab06a..0f65ab372dee 100644\n--- a/fs/ext4/sysfs.c\n+++ b/fs/ext4/sysfs.c\n@@ -250,7 +250,7 @@ EXT4_ATTR_OFFSET(mb_best_avail_max_trim_order, 0644, mb_order,\n \t\t ext4_sb_info, s_mb_best_avail_max_trim_order);\n EXT4_ATTR_OFFSET(err_report_sec, 0644, err_report_sec, ext4_sb_info, s_err_report_sec);\n EXT4_RW_ATTR_SBI_UI(inode_goal, s_inode_goal);\n-EXT4_RW_ATTR_SBI_UI(mb_stats, s_mb_stats);\n+EXT4_ATTR_OFFSET(mb_stats, 0644, pointer_atomic, ext4_sb_info, s_mb_stats);\n EXT4_RW_ATTR_SBI_UI(mb_max_to_scan, s_mb_max_to_scan);\n EXT4_RW_ATTR_SBI_UI(mb_min_to_scan, s_mb_min_to_scan);\n EXT4_RW_ATTR_SBI_UI(mb_order2_req, s_mb_order2_reqs);\n@@ -493,6 +493,7 @@ static ssize_t ext4_generic_attr_store(struct ext4_attr *a,\n \t\t\t\t       const char *buf, size_t len)\n {\n \tint ret;\n+\tint i;\n \tunsigned int t;\n \tunsigned long lt;\n \tvoid *ptr = calc_ptr(a, sbi);\n@@ -540,6 +541,12 @@ static ssize_t ext4_generic_attr_store(struct ext4_attr *a,\n \t\t\treturn ret;\n \t\t*((unsigned long *) ptr) = lt;\n \t\treturn len;\n+\tcase attr_pointer_atomic:\n+\t\tret = kstrtoint(skip_spaces(buf), 0, &i);\n+\t\tif (ret)\n+\t\t\treturn ret;\n+\t\tatomic_set((atomic_t *)ptr, i);\n+\t\treturn len;\n \t}\n \treturn 0;\n }\n","prefixes":["v4","v4","2/3"]}