All of lore.kernel.org
 help / color / mirror / Atom feed
From: Michael Schmitz <schmitzmic@gmail.com>
To: Tetsuo Handa <penguin-kernel@i-love.sakura.ne.jp>,
	Luis Chamberlain <mcgrof@kernel.org>
Cc: linux-raid@vger.kernel.org, linux-scsi@vger.kernel.org,
	linux-fsdevel@vger.kernel.org, linux-block@vger.kernel.org,
	linux-kernel@vger.kernel.org, axboe@kernel.dk, hch@lst.de,
	efremov@linux.com, song@kernel.org, jejb@linux.ibm.com,
	martin.petersen@oracle.com, viro@zeniv.linux.org.uk,
	hare@suse.de, jack@suse.cz, ming.lei@redhat.com, tj@kernel.org
Subject: Re: [PATCH v3 0/3] last batch of add_disk() error handling conversions
Date: Fri, 22 Oct 2021 15:33:58 +1300	[thread overview]
Message-ID: <83138a06-11cd-d0eb-7f15-9b01fe47de26@gmail.com> (raw)
In-Reply-To: <66655777-6f9b-adbc-03ff-125aecd3f509@i-love.sakura.ne.jp>

Luis, Tetsuo,

I'll try to test this - still running 5.13 (need the old IDE driver for 
now), so not sure this will all apply cleanly.

Cheers,

	Michael


On 22/10/21 14:06, Tetsuo Handa wrote:
> On 2021/10/22 1:38, Luis Chamberlain wrote:
>> I rebased Tetsuo Handa's patch onto the latest linux-next as this
>> series depends on it, and so I am sending it part of this series as
>> without it, this won't apply. Tetsuo, does the rebase of your patch
>> look OK?
>
> OK, though I wanted my fix to be sent to upstream and stable before this series.
>
>>
>> If it is not too much trouble, I'd like to ask for testing for the
>> ataflop changes from Michael Schmitz, if possible, that is he'd just
>> have to merge Tetsuo's rebased patch and the 2nd patch in this series.
>> This is all rebased on linux-next tag 20211020.
>
> Yes, please.
>
> After this series, I guess we can remove "bool registered[NUM_DISK_MINORS];" like below
> due to (unit[drive].disk[type] != NULL) == (unit[drive].registered[type] == true).
> Regarding this series, setting unit[drive].registered[type] = true in ataflop_probe() is
> pointless because atari_floppy_cleanup() checks unit[i].disk[type] != NULL for calling
> del_gendisk(). And we need to fix __register_blkdev() in driver/block/floppy.c because
> floppy_probe_lock is pointless.
>
>  drivers/block/ataflop.c | 75 +++++++++++++++--------------------------
>  1 file changed, 28 insertions(+), 47 deletions(-)
>
> diff --git a/drivers/block/ataflop.c b/drivers/block/ataflop.c
> index c58750dcc685..7fedf8506335 100644
> --- a/drivers/block/ataflop.c
> +++ b/drivers/block/ataflop.c
> @@ -299,7 +299,6 @@ static struct atari_floppy_struct {
>  				   disk change detection) */
>  	int flags;		/* flags */
>  	struct gendisk *disk[NUM_DISK_MINORS];
> -	bool registered[NUM_DISK_MINORS];
>  	int ref;
>  	int type;
>  	struct blk_mq_tag_set tag_set;
> @@ -1988,41 +1987,20 @@ static int ataflop_probe(dev_t dev)
>  	if (drive >= FD_MAX_UNITS || type >= NUM_DISK_MINORS)
>  		return -EINVAL;
>
> -	if (!unit[drive].disk[type]) {
> -		err = ataflop_alloc_disk(drive, type);
> -		if (err == 0) {
> -			err = add_disk(unit[drive].disk[type]);
> -			if (err) {
> -				blk_cleanup_disk(unit[drive].disk[type]);
> -				unit[drive].disk[type] = NULL;
> -			} else
> -				unit[drive].registered[type] = true;
> +	if (unit[drive].disk[type])
> +		return 0;
> +	err = ataflop_alloc_disk(drive, type);
> +	if (err == 0) {
> +		err = add_disk(unit[drive].disk[type]);
> +		if (err) {
> +			blk_cleanup_disk(unit[drive].disk[type]);
> +			unit[drive].disk[type] = NULL;
>  		}
>  	}
>
>  	return err;
>  }
>
> -static void atari_floppy_cleanup(void)
> -{
> -	int i;
> -	int type;
> -
> -	for (i = 0; i < FD_MAX_UNITS; i++) {
> -		for (type = 0; type < NUM_DISK_MINORS; type++) {
> -			if (!unit[i].disk[type])
> -				continue;
> -			del_gendisk(unit[i].disk[type]);
> -			blk_cleanup_queue(unit[i].disk[type]->queue);
> -			put_disk(unit[i].disk[type]);
> -		}
> -		blk_mq_free_tag_set(&unit[i].tag_set);
> -	}
> -
> -	del_timer_sync(&fd_timer);
> -	atari_stram_free(DMABuffer);
> -}
> -
>  static void atari_cleanup_floppy_disk(struct atari_floppy_struct *fs)
>  {
>  	int type;
> @@ -2030,13 +2008,24 @@ static void atari_cleanup_floppy_disk(struct atari_floppy_struct *fs)
>  	for (type = 0; type < NUM_DISK_MINORS; type++) {
>  		if (!fs->disk[type])
>  			continue;
> -		if (fs->registered[type])
> -			del_gendisk(fs->disk[type]);
> +		del_gendisk(fs->disk[type]);
>  		blk_cleanup_disk(fs->disk[type]);
>  	}
>  	blk_mq_free_tag_set(&fs->tag_set);
>  }
>
> +static void atari_floppy_cleanup(void)
> +{
> +	int i;
> +
> +	for (i = 0; i < FD_MAX_UNITS; i++)
> +		atari_cleanup_floppy_disk(&unit[i]);
> +
> +	del_timer_sync(&fd_timer);
> +	if (DMABuffer)
> +		atari_stram_free(DMABuffer);
> +}
> +
>  static int __init atari_floppy_init (void)
>  {
>  	int i;
> @@ -2055,13 +2044,10 @@ static int __init atari_floppy_init (void)
>  		unit[i].tag_set.numa_node = NUMA_NO_NODE;
>  		unit[i].tag_set.flags = BLK_MQ_F_SHOULD_MERGE;
>  		ret = blk_mq_alloc_tag_set(&unit[i].tag_set);
> -		if (ret)
> -			goto err;
> -
> -		ret = ataflop_alloc_disk(i, 0);
>  		if (ret) {
> -			blk_mq_free_tag_set(&unit[i].tag_set);
> -			goto err;
> +			while (--i >= 0)
> +				blk_mq_free_tag_set(&unit[i].tag_set);
> +			return ret;
>  		}
>  	}
>
> @@ -2090,10 +2076,9 @@ static int __init atari_floppy_init (void)
>  	for (i = 0; i < FD_MAX_UNITS; i++) {
>  		unit[i].track = -1;
>  		unit[i].flags = 0;
> -		ret = add_disk(unit[i].disk[0]);
> -		if (ret)
> -			goto err_out_dma;
> -		unit[i].registered[0] = true;
> +		ret = ataflop_probe(MKDEV(0, 1 << 2));
> +		if (err)
> +			goto err;
>  	}
>
>  	printk(KERN_INFO "Atari floppy driver: max. %cD, %strack buffering\n",
> @@ -2108,12 +2093,8 @@ static int __init atari_floppy_init (void)
>  	}
>  	return ret;
>
> -err_out_dma:
> -	atari_stram_free(DMABuffer);
>  err:
> -	while (--i >= 0)
> -		atari_cleanup_floppy_disk(&unit[i]);
> -
> +	atari_floppy_cleanup();
>  	return ret;
>  }
>
>

  reply	other threads:[~2021-10-22  2:34 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-10-21 16:38 [PATCH v3 0/3] last batch of add_disk() error handling conversions Luis Chamberlain
2021-10-21 16:38 ` [PATCH v3 1/3] ataflop: remove ataflop_probe_lock mutex Luis Chamberlain
2021-10-21 16:38 ` [PATCH v3 2/3] block: make __register_blkdev() return an error Luis Chamberlain
2021-10-21 16:38 ` [PATCH v3 3/3] block: add __must_check for *add_disk*() callers Luis Chamberlain
2021-10-22  1:06 ` [PATCH v3 0/3] last batch of add_disk() error handling conversions Tetsuo Handa
2021-10-22  2:33   ` Michael Schmitz [this message]
2021-10-22  7:21     ` Michael Schmitz
2021-10-22 17:08   ` Luis Chamberlain
2021-10-22 17:32     ` Luis Chamberlain
2021-10-24  0:03   ` Michael Schmitz

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=83138a06-11cd-d0eb-7f15-9b01fe47de26@gmail.com \
    --to=schmitzmic@gmail.com \
    --cc=axboe@kernel.dk \
    --cc=efremov@linux.com \
    --cc=hare@suse.de \
    --cc=hch@lst.de \
    --cc=jack@suse.cz \
    --cc=jejb@linux.ibm.com \
    --cc=linux-block@vger.kernel.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-raid@vger.kernel.org \
    --cc=linux-scsi@vger.kernel.org \
    --cc=martin.petersen@oracle.com \
    --cc=mcgrof@kernel.org \
    --cc=ming.lei@redhat.com \
    --cc=penguin-kernel@i-love.sakura.ne.jp \
    --cc=song@kernel.org \
    --cc=tj@kernel.org \
    --cc=viro@zeniv.linux.org.uk \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.