Received: by 2002:a05:6a10:f3d0:0:0:0:0 with SMTP id a16csp2724213pxv; Sun, 11 Jul 2021 23:55:30 -0700 (PDT) X-Google-Smtp-Source: ABdhPJx1sCnn4SckQgRI+zZY2dykdLpLvURQEE02MWS5QGfhx0/85zaxs1EkRhbltls4b1f1mA5D X-Received: by 2002:a05:6402:10cc:: with SMTP id p12mr64294614edu.328.1626072930484; Sun, 11 Jul 2021 23:55:30 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1626072930; cv=none; d=google.com; s=arc-20160816; b=lfkBdKwFKWSDnS883JRCAGTWB2dZgWtT7P8kpJ9882nSEvcj7Vj96zG1hMBkD2oL+U 5nyyTFZT19zzovl8vMId1i3XSSbLf6rweO08Ageunm+EOJLvPQn8A9vBPEBpmDd5Km/B iByqc+6OBr4zD1Z6VaKXFydBbDm368zhcH1VMqwcXxSORA6DdYtqpmclinXVVtQPPAkr OB5i5yrQW2N88O6G7ZRLM7/HZC8VdkiLSnrDx1LJyN+s3UPvcHv3iuPubnyqTo6YNBWX yJGV3NYkSHKULc5wDNq2IBptFyNhBgbniBQVqzWDlnLU0zyvSvcDaq2xH+hB+UYnK7d9 gdJA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=YgfiRCryiFxyBOsv5GPM23WGU+TGt0M+u9mIyQw0o/M=; b=Vg2w+YzawvzJdywlfLy7iARcwNWx9XNJ4W10KLfYNVt+KfUJ43vkZQeFfrdg1r+7LQ OrIkpYVZo61zggPrTbsNckEAPlt2APl9ra1Gaxu5ZsXqQHbTj0v8Mzvauvk2qcISsa04 goZBrCcpHbchgMv0u7lPW3Xfsyv5QQn5ZHTnj7cBEph4WHB/+YNutvyT8TwLp3cjw9Ko xoMt1zN9yWONZyxODaWuUqB5Q5A9CFMZ2MZQY1N/vbF+E/lxekk3RD3C+KlM1Vb8EHMG 8UfW5WUyTpeWdxnLS0VD816m23eK1U//XFQPUPe2SYbYlzlw9iGMA8z2Bld/DAJnjJto WFqA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=QGyejU6O; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id lt3si1689925ejb.169.2021.07.11.23.55.07; Sun, 11 Jul 2021 23:55:30 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=QGyejU6O; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S240101AbhGLGxW (ORCPT + 99 others); Mon, 12 Jul 2021 02:53:22 -0400 Received: from mail.kernel.org ([198.145.29.99]:34398 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236674AbhGLGjR (ORCPT ); Mon, 12 Jul 2021 02:39:17 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id DC53161182; Mon, 12 Jul 2021 06:34:48 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1626071689; bh=Dm5FERpTokaavMtGbevl3le87m0VgQenSY4KRvvRPYU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=QGyejU6Oboqmn21chKyBK/kUoFhrsY+KfkxaTMqWUgF0rlI1HzDJtGmURm9E44ShA HjCYjpdbewk978nRly63xG2Um18OnP///vCfKjwvzIu6IziFXbOTSuQWQaqxOrDiYE wZN9lXvQW6hUI4KRY8Cjv2HKnyGJvZNKvZtBJAXk= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, "zhangyi (F)" , Jan Kara , Christoph Hellwig , Jens Axboe , Sasha Levin Subject: [PATCH 5.10 177/593] block_dump: remove block_dump feature in mark_inode_dirty() Date: Mon, 12 Jul 2021 08:05:37 +0200 Message-Id: <20210712060902.484863512@linuxfoundation.org> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20210712060843.180606720@linuxfoundation.org> References: <20210712060843.180606720@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: zhangyi (F) [ Upstream commit 12e0613715e1cf305fffafaf0e89d810d9a85cc0 ] block_dump is an old debugging interface, one of it's functions is used to print the information about who write which file on disk. If we enable block_dump through /proc/sys/vm/block_dump and turn on debug log level, we can gather information about write process name, target file name and disk from kernel message. This feature is realized in block_dump___mark_inode_dirty(), it print above information into kernel message directly when marking inode dirty, so it is noisy and can easily trigger log storm. At the same time, get the dentry refcount is also not safe, we found it will lead to deadlock on ext4 file system with data=journal mode. After tracepoints has been introduced into the kernel, we got a tracepoint in __mark_inode_dirty(), which is a better replacement of block_dump___mark_inode_dirty(). The only downside is that it only trace the inode number and not a file name, but it probably doesn't matter because the original printed file name in block_dump is not accurate in some cases, and we can still find it through the inode number and device id. So this patch delete the dirting inode part of block_dump feature. Signed-off-by: zhangyi (F) Reviewed-by: Jan Kara Reviewed-by: Christoph Hellwig Link: https://lore.kernel.org/r/20210313030146.2882027-2-yi.zhang@huawei.com Signed-off-by: Jens Axboe Signed-off-by: Sasha Levin --- fs/fs-writeback.c | 25 ------------------------- 1 file changed, 25 deletions(-) diff --git a/fs/fs-writeback.c b/fs/fs-writeback.c index 90dddb507e4a..0d0f014b09ec 100644 --- a/fs/fs-writeback.c +++ b/fs/fs-writeback.c @@ -2196,28 +2196,6 @@ int dirtytime_interval_handler(struct ctl_table *table, int write, return ret; } -static noinline void block_dump___mark_inode_dirty(struct inode *inode) -{ - if (inode->i_ino || strcmp(inode->i_sb->s_id, "bdev")) { - struct dentry *dentry; - const char *name = "?"; - - dentry = d_find_alias(inode); - if (dentry) { - spin_lock(&dentry->d_lock); - name = (const char *) dentry->d_name.name; - } - printk(KERN_DEBUG - "%s(%d): dirtied inode %lu (%s) on %s\n", - current->comm, task_pid_nr(current), inode->i_ino, - name, inode->i_sb->s_id); - if (dentry) { - spin_unlock(&dentry->d_lock); - dput(dentry); - } - } -} - /** * __mark_inode_dirty - internal function * @@ -2277,9 +2255,6 @@ void __mark_inode_dirty(struct inode *inode, int flags) (dirtytime && (inode->i_state & I_DIRTY_INODE))) return; - if (unlikely(block_dump)) - block_dump___mark_inode_dirty(inode); - spin_lock(&inode->i_lock); if (dirtytime && (inode->i_state & I_DIRTY_INODE)) goto out_unlock_inode; -- 2.30.2