Received: by 2002:a05:6a10:f347:0:0:0:0 with SMTP id d7csp62384pxu; Tue, 15 Dec 2020 16:10:57 -0800 (PST) X-Google-Smtp-Source: ABdhPJzictS7ohXJjOjXHAIKcLZ5ArwwasoLWJtgJhJuYIC/Wc9Cb9n7WKETaZb+G4XZ+RY5aVNr X-Received: by 2002:a17:906:9452:: with SMTP id z18mr20074051ejx.389.1608077457502; Tue, 15 Dec 2020 16:10:57 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1608077457; cv=none; d=google.com; s=arc-20160816; b=vrjIsIdxZ7AH0PDK82HyXuVKScNTL3KGqgcZm+Kh4YwDEQ8FWf4z08DTnfz/w2tO43 TZmQ8yX35skDnHdgf10s8pYsBUvEs8vouqAuB3+1PCiSjKYYEA+mydpMtrogCQcssUqW 3xgCOWHNqaRqEuXbqVNRZc79zOQHTYOLF8ic0oqWskW+EIhpGxjZn5R9jB5yGzEkAICR Lxryp8fKExWymVHiQyDGzMtEqJ64gimNK83vck48Rbg2v5BEQp2GnHoFbqEXlED/JEbo s4cV4z1Gecz2quqTsf2nQcEbCZY2XeToyPS9Q1It36A3TpZkD/IaDz9CUxRjYnABwEKA 1WHA== 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; bh=De7OWb07Hc2tUSamHzdOpuKuibgwX90Qu0jYkA7hUI4=; b=F97+C4pS+L+qmpsxyyfCc2M2txGaxVFxi/eOXAogUTIvF9NhnuygjKIHScQP1biU9T eiTre543Q4mF8Jdhgek4h/v7XYDyb2Oy9dZLyOD9u4wVY5KvLP9HoUPMwqXPVLJx+B3e Hb0W8Yuis1kYJd6kRSVMjrADgauhlVQgMruHtwztn8Cs4Wqy6THOp40ODieebeUXf4kD GAN11EMm/8yAN12a28G4bCjvzlem7bjh7bcGooOP0mDXYICO42MDRfRaIJ7eyIeq7H7R Ct8FvPb8mF3RKuZDTGRbDQ5NmO8spWZhVJ7DY3JRUvl9cXTeCr24lcQ3LaU5TUDqK6GE q0hA== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id g7si49528ejh.224.2020.12.15.16.10.33; Tue, 15 Dec 2020 16:10:57 -0800 (PST) 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; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727348AbgLPAAk (ORCPT + 99 others); Tue, 15 Dec 2020 19:00:40 -0500 Received: from mail110.syd.optusnet.com.au ([211.29.132.97]:42299 "EHLO mail110.syd.optusnet.com.au" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725769AbgLOX3W (ORCPT ); Tue, 15 Dec 2020 18:29:22 -0500 Received: from dread.disaster.area (pa49-179-6-140.pa.nsw.optusnet.com.au [49.179.6.140]) by mail110.syd.optusnet.com.au (Postfix) with ESMTPS id 2618411A239; Wed, 16 Dec 2020 10:28:37 +1100 (AEDT) Received: from dave by dread.disaster.area with local (Exim 4.92.3) (envelope-from ) id 1kpJk9-004NPu-GG; Wed, 16 Dec 2020 10:28:33 +1100 Date: Wed, 16 Dec 2020 10:28:33 +1100 From: Dave Chinner To: "Darrick J. Wong" Cc: Shiyang Ruan , linux-kernel@vger.kernel.org, linux-xfs@vger.kernel.org, linux-nvdimm@lists.01.org, linux-mm@kvack.org, linux-fsdevel@vger.kernel.org, linux-raid@vger.kernel.org, dan.j.williams@intel.com, hch@lst.de, song@kernel.org, rgoldwyn@suse.de, qi.fuli@fujitsu.com, y-goto@fujitsu.com, Theodore Ts'o Subject: Re: [RFC PATCH v3 8/9] md: Implement ->corrupted_range() Message-ID: <20201215232833.GM632069@dread.disaster.area> References: <20201215121414.253660-1-ruansy.fnst@cn.fujitsu.com> <20201215121414.253660-9-ruansy.fnst@cn.fujitsu.com> <20201215205102.GB6918@magnolia> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20201215205102.GB6918@magnolia> X-Optus-CM-Score: 0 X-Optus-CM-Analysis: v=2.3 cv=F8MpiZpN c=1 sm=1 tr=0 cx=a_idp_d a=uDU3YIYVKEaHT0eX+MXYOQ==:117 a=uDU3YIYVKEaHT0eX+MXYOQ==:17 a=kj9zAlcOel0A:10 a=zTNgK-yGK50A:10 a=7-415B0cAAAA:8 a=c9VSvi9VynfUMAegli0A:9 a=CjuIK1q_8ugA:10 a=biEYGPWJfzWAr4FL6Ov7:22 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Dec 15, 2020 at 12:51:02PM -0800, Darrick J. Wong wrote: > On Tue, Dec 15, 2020 at 08:14:13PM +0800, Shiyang Ruan wrote: > > diff --git a/drivers/nvdimm/pmem.c b/drivers/nvdimm/pmem.c > > index 4688bff19c20..e8cfaf860149 100644 > > --- a/drivers/nvdimm/pmem.c > > +++ b/drivers/nvdimm/pmem.c > > @@ -267,11 +267,14 @@ static int pmem_corrupted_range(struct gendisk *disk, struct block_device *bdev, > > > > bdev_offset = (disk_sector - get_start_sect(bdev)) << SECTOR_SHIFT; > > sb = get_super(bdev); > > - if (sb && sb->s_op->corrupted_range) { > > + if (!sb) { > > + rc = bd_disk_holder_corrupted_range(bdev, bdev_offset, len, data); > > + goto out; > > + } else if (sb->s_op->corrupted_range) > > rc = sb->s_op->corrupted_range(sb, bdev, bdev_offset, len, data); > > - drop_super(sb); > > This is out of scope for this patch(set) but do you think that the scsi > disk driver should intercept media errors from sense data and call > ->corrupted_range too? ISTR Ted muttering that one of his employers had > a patchset to do more with sense data than the upstream kernel currently > does... Most definitely! That's the whole point of layering corrupt range reporting through the device layers like this - the corrupted range reporting is not limited specifically to pmem devices and so generic storage failures (e.g. RAID failures, hardware media failures, etc) can be reported back up to the filesystem and we can take immediate, appropriate action, including reporting to userspace that they just lost data in file X at offset Y... Combine that with the proposed "watch_sb()" syscall for reporting such errors in a generic manner to interested listeners, and we've got a fairly solid generic path for reporting data loss events to userspace for an appropriate user-defined action to be taken... Cheers, Dave. -- Dave Chinner david@fromorbit.com