Received: by 2002:a05:6a10:1287:0:0:0:0 with SMTP id d7csp4154289pxv; Mon, 19 Jul 2021 18:39:35 -0700 (PDT) X-Google-Smtp-Source: ABdhPJw/QD4G7agb9TgvhhGLoTdmBgIunzuuXdHAGa4RYLx3XH58+GloCgdDus0a2bkulNhTgA6B X-Received: by 2002:a6b:b287:: with SMTP id b129mr20744408iof.209.1626745175201; Mon, 19 Jul 2021 18:39:35 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1626745175; cv=none; d=google.com; s=arc-20160816; b=a7NCl5hd1iFAKwby61M2aMf3pDd3lEKRM30RRkXWTBcAfG9BXEA4R44mg9vaNcIeMz yeAForDDbh0pkPxxkVOj2k+8CO4dZXVKrR/szb92Cy6q+2lElpGEvPHt2a2wliBE+Rxc rbnJyH9e+MSr2kXbnBzNOWuk6Z6UTwpal52G7nnz6GtdDlggFdK1qKjPKjgRj3q0BhbF RpXYRxJ62M6BItWQ7K6Z0qr5QJzc3KzARoEu5AgfJJJe6hUdWZ2rux+IWL+cpG9mqwRI BG2gD3SbtsOillxr2V8bNdshs1Ga6HPCf+qCS7uezRDk0HAWq9puY51G3vpK3U1O1KS1 0mMQ== 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=y52/T1R4u4nxilameqB/7qSSdTkPgsmVCm5E/I3QjX4=; b=g0+XJAdXs9qdAqcCoXl+Ysqpzk6tmWXRu2qv2IXfbQkcSvC1Zpz1KasUxEgt7i3gcE EFrFBoaaw91s2ojBB4suXzRm3sY7YCvqrPne88nXuXgw2Mf/d/HV3rzhFOwKyHi6Xe5r Dw1iT3yzPe3EKhPlchssiYzn/Q4NBMIDl5//RBW6hSZHlPVmo+34XOcPSldpHcwp9ZdU nl9a41cRsbbyogNIRV0nq3yYUWF85giAr1zGddeldO6+K/QnJ6Is7V/Y0r/0J0fAxqR6 y+WDr+a2uo0VBHoUOds7Astr5pNq57HYpuTBmkdhc0qapMWOu0t4Fg2FNrBsM5WFFy3g QAqw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=pvy98Gd2; 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 j1si4606007ile.62.2021.07.19.18.39.23; Mon, 19 Jul 2021 18:39:35 -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=pvy98Gd2; 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 S238788AbhGSO4y (ORCPT + 99 others); Mon, 19 Jul 2021 10:56:54 -0400 Received: from mail.kernel.org ([198.145.29.99]:55008 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S242666AbhGSOgN (ORCPT ); Mon, 19 Jul 2021 10:36:13 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id C6A13611C1; Mon, 19 Jul 2021 15:16:52 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1626707813; bh=mEt/CKr082JuL/YV4OSxTy+vciyNtcWZ+ZTy9AnhFJg=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=pvy98Gd2+TxsXvC9+Yi+wcppLwjgxaquAN5FJo/a83gg2lw+iqCZcVDwMeqJDkXWh uK63isGMvUTYoN31zh5iznKEepimVAGyg/CvJYFB/6fIULJanMo3bKcK3JxFptvquF gKnkRoG2TieHb2gQ5L4/K6bJG2ByQYLVVlbnDLGc= 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 4.14 065/315] block_dump: remove block_dump feature in mark_inode_dirty() Date: Mon, 19 Jul 2021 16:49:14 +0200 Message-Id: <20210719144944.993812111@linuxfoundation.org> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20210719144942.861561397@linuxfoundation.org> References: <20210719144942.861561397@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 fde277be2642..08fef9c2296b 100644 --- a/fs/fs-writeback.c +++ b/fs/fs-writeback.c @@ -2082,28 +2082,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 * @@ -2163,9 +2141,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