Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756836AbbDVC6b (ORCPT ); Tue, 21 Apr 2015 22:58:31 -0400 Received: from bedivere.hansenpartnership.com ([66.63.167.143]:41062 "EHLO bedivere.hansenpartnership.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752950AbbDVC63 (ORCPT ); Tue, 21 Apr 2015 22:58:29 -0400 Message-ID: <1429671506.18798.4.camel@HansenPartnership.com> Subject: Re: [PATCH 1/3] block: Return error in rescan_partitions if revalidating disk failed From: James Bottomley To: Fam Zheng Cc: linux-kernel@vger.kernel.org, Jens Axboe , linux-scsi@vger.kernel.org Date: Tue, 21 Apr 2015 19:58:26 -0700 In-Reply-To: <1427192175-23802-2-git-send-email-famz@redhat.com> References: <1427192175-23802-1-git-send-email-famz@redhat.com> <1427192175-23802-2-git-send-email-famz@redhat.com> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.12.11 Mime-Version: 1.0 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1629 Lines: 50 On Tue, 2015-03-24 at 18:16 +0800, Fam Zheng wrote: > If the disk can't read capacity, we should return an error. I'm not sure I buy this: you need to justify why. For instance removable media return an error in revalidate that causes the medium not present flag to be set ... do we really want to propagate the error in that case? > Signed-off-by: Fam Zheng > --- > block/partition-generic.c | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) > > diff --git a/block/partition-generic.c b/block/partition-generic.c > index 0d9e5f9..1e60d7d 100644 > --- a/block/partition-generic.c > +++ b/block/partition-generic.c > @@ -427,11 +427,11 @@ rescan: > return res; > > if (disk->fops->revalidate_disk) > - disk->fops->revalidate_disk(disk); > + res = disk->fops->revalidate_disk(disk); You're assuming here that a negative error code is being returned, but some (cciss) seem to be returning 1 on error. You'll need to assure us that you've checked all the consumers before making this change. James > check_disk_size_change(disk, bdev); > bdev->bd_invalidated = 0; > - if (!get_capacity(disk) || !(state = check_partition(disk, bdev))) > - return 0; > + if (res || !get_capacity(disk) || !(state = check_partition(disk, bdev))) > + return res; > if (IS_ERR(state)) { > /* > * I/O error reading the partition table. If any -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/