Received: by 2002:a05:6a10:9848:0:0:0:0 with SMTP id x8csp1818626pxf; Sat, 3 Apr 2021 01:11:07 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzkulbZ5XMdA5na2LiYUPfq/7v3+yVdePMYakfH/Ae3lE8WFKBNWl/depBExiSRbcShEBjV X-Received: by 2002:a02:971a:: with SMTP id x26mr15761949jai.61.1617437467299; Sat, 03 Apr 2021 01:11:07 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1617437467; cv=none; d=google.com; s=arc-20160816; b=ydvSqJMhQ1fKRlPkOlRhqkYnnzWhUSAtNa1awfK9M5lnASVYr2EPG2Fj+u9rKuBjah qtl95JK/WWNuhau/iGeLbMloLoL2uWUcNyEzIEuUcOF75iBYxnpyjGs09nITkDJDUHFQ Ke1jBsvTtwjdymmlcwCgOCfwWqMxo3geNTeEQpjizeMUSMdouAbPRu+3ayYp2lhuqoAg YwtyoD7s6YmV5+blwU0f1GWnFkS22ZTD0iwh9w4f7KPmqJZapggeeEs9GdHrwPJ3Wtaj atV+4wmRA8SWqtNDyN9dkIPPECMUwIWO2SAwIWv8ErGAAyppKG+QjclVGUxsvqYD/EF1 v49Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-disposition:mime-version :references:message-id:subject:cc:to:from:date:dkim-signature; bh=EEUUyQWVj0Di8OA7DVfsbpbP7S1zPziCDvrYaaf9VcI=; b=BIuDSdn0+67L3VcXakIOcom/meBnEq2a6dhAuYtpiO2rmxlmEqRXH/i0zYc9SH1ulz zXKoe0YTk5KjR4S2uUUrtY4lLrxZ8ysnAlkPLA0DigIPx0Wbm79dV5n0zgqgAII7k6qm 0YVFzq3ESNKT7XukDKmpuW0gVaTXqty9EuzMvQSRqkcZ2MY3xGVH0t7tQz38FhkCGYZj F7D/LKPFPkAUEKikgdNIZHKW+r9CAjeddO6iMaaTtsJZsZmFBnxPhtHvoYjoBSi955i+ RG+v56vOv5qieA6WcGddaXIDRBwGh+77qZ5FJ5WRm41uyp2d1v3NP/09Hl7Um3ci4Qg0 Fk6A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=Wv4huS8M; 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=redhat.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id g6si9652807ild.141.2021.04.03.01.10.52; Sat, 03 Apr 2021 01:11:07 -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=@redhat.com header.s=mimecast20190719 header.b=Wv4huS8M; 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=redhat.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232194AbhDCIKi (ORCPT + 99 others); Sat, 3 Apr 2021 04:10:38 -0400 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:55381 "EHLO us-smtp-delivery-124.mimecast.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232157AbhDCIKi (ORCPT ); Sat, 3 Apr 2021 04:10:38 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1617437435; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=EEUUyQWVj0Di8OA7DVfsbpbP7S1zPziCDvrYaaf9VcI=; b=Wv4huS8MGqbMDWNbPlesRaVAUanKaWLAvf1Cyy789nCh4mnJ2L/oeYM5ZXgER3P3W/fBuB CAKSHixFCetTY7yA4Xmo/DOQy2xlVFM0dTBdU1hGJwI6KbnYYO0REhEtxlAZqCXmK9kf5y ZLeWtq7qdHlDDT7Bg4W8W3lDQP6CARw= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-593-X4rTPKBNPtqsjJhYawnRMQ-1; Sat, 03 Apr 2021 04:10:30 -0400 X-MC-Unique: X4rTPKBNPtqsjJhYawnRMQ-1 Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id F2B63180FCA7; Sat, 3 Apr 2021 08:10:28 +0000 (UTC) Received: from T590 (ovpn-12-28.pek2.redhat.com [10.72.12.28]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 306C35D9DC; Sat, 3 Apr 2021 08:10:21 +0000 (UTC) Date: Sat, 3 Apr 2021 16:10:16 +0800 From: Ming Lei To: Christoph Hellwig Cc: Jens Axboe , linux-block@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH 1/2] block: shutdown blktrace in case of fatal signal pending Message-ID: References: <20210323081440.81343-1-ming.lei@redhat.com> <20210323081440.81343-2-ming.lei@redhat.com> <20210330165330.GA13829@lst.de> <20210402172730.GA22923@lst.de> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20210402172730.GA22923@lst.de> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, Apr 02, 2021 at 07:27:30PM +0200, Christoph Hellwig wrote: > On Wed, Mar 31, 2021 at 08:16:50AM +0800, Ming Lei wrote: > > On Tue, Mar 30, 2021 at 06:53:30PM +0200, Christoph Hellwig wrote: > > > On Tue, Mar 23, 2021 at 04:14:39PM +0800, Ming Lei wrote: > > > > blktrace may allocate lots of memory, if the process is terminated > > > > by user or OOM, we need to provide one chance to remove the trace > > > > buffer, otherwise memory leak may be caused. > > > > > > > > Fix the issue by shutdown blktrace in case of task exiting in > > > > blkdev_close(). > > > > > > > > Signed-off-by: Ming Lei > > > > > > This just seems weird. blktrace has no relationship to open > > > block device instances. > > > > blktrace still needs to open one blkdev, then send its own ioctl > > commands to block layer. In case of OOM, the allocated memory in > > these ioctl commands won't be released. > > > > Or any other suggestion? > > Not much we can do there I think. If we want to autorelease memory > it needs to be an API that ties the memory allocation to an FD. We still may shutdown blktrace if current is the last opener, otherwise new blktrace can't be started and memory should be leaked forever, and what do you think of the revised version? From de33ec85ee1ce2865aa04f2639e480ea4db4eebf Mon Sep 17 00:00:00 2001 From: Ming Lei Date: Tue, 23 Mar 2021 10:32:23 +0800 Subject: [PATCH] block: shutdown blktrace in case of task exiting blktrace may allocate lots of memory, if the process is terminated by user or OOM, we need to provide one chance to remove the trace buffer, otherwise memory leak may be caused. Also new blktrace instance can't be started too. Fix the issue by shutdown blktrace in case of task exiting in blkdev_close() when it is the last opener. Signed-off-by: Ming Lei --- fs/block_dev.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/fs/block_dev.c b/fs/block_dev.c index 92ed7d5df677..8fa59cecce72 100644 --- a/fs/block_dev.c +++ b/fs/block_dev.c @@ -34,6 +34,7 @@ #include #include #include +#include #include "internal.h" struct bdev_inode { @@ -1646,6 +1647,11 @@ EXPORT_SYMBOL(blkdev_put); static int blkdev_close(struct inode * inode, struct file * filp) { struct block_device *bdev = I_BDEV(bdev_file_inode(filp)); + + /* shutdown blktrace in case of exiting which may be from OOM */ + if ((current->flags & PF_EXITING) && (bdev->bd_openers == 1)) + blk_trace_shutdown(bdev->bd_disk->queue); + blkdev_put(bdev, filp->f_mode); return 0; } -- 2.29.2 -- Ming