All of lore.kernel.org
 help / color / mirror / Atom feed
From: Christoph Hellwig <hch@lst.de>
To: Ming Lei <ming.lei@redhat.com>
Cc: Christoph Hellwig <hch@lst.de>, Jens Axboe <axboe@kernel.dk>,
	Josef Bacik <josef@toxicpanda.com>,
	David Sterba <dsterba@suse.com>,
	Naohiro Aota <naohiro.aota@wdc.com>,
	linux-block@vger.kernel.org, linux-btrfs@vger.kernel.org
Subject: Re: [PATCH 3/9] block: unhash the whole device inode earlier
Date: Thu, 22 Jul 2021 15:12:27 +0200	[thread overview]
Message-ID: <20210722131227.GA27213@lst.de> (raw)
In-Reply-To: <YPkqHjNQpgvbUgBr@T590>

On Thu, Jul 22, 2021 at 04:19:42PM +0800, Ming Lei wrote:
> >  		goto bdput;
> > -	if ((disk->flags & (GENHD_FL_UP | GENHD_FL_HIDDEN)) != GENHD_FL_UP)
> > +	if (disk->flags & GENHD_FL_HIDDEN)
> 
> But del_gendisk() can be called just between bdget() and checking GENHD_FL_UP.
> 
> And not see difference by moving remove_inode_hash() with disk open_mutex held.


The difference is not about having the open_mutex held, but about doing
it earlier.

The only check that matters is the GENHD_FL_UP check in blkdev_get_by_dev.
The earlier check just reduces the amount of work we're doing for a disk
already being delete.  With the early unhash there is no need for that
check as we won't even find the inode for a disk in del_gendisk.  We still
need the non-racy check under the lock, but the patch doesn't touch that
one.

Maybe I need to split this into two patches and improve the commit log.

  reply	other threads:[~2021-07-22 13:12 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-07-22  7:53 fixes and cleanups for block_device refcounting v2 Christoph Hellwig
2021-07-22  7:53 ` [PATCH 1/9] block: delay freeing the gendisk Christoph Hellwig
2021-07-22  7:53 ` [PATCH 2/9] block: assert the locking state in delete_partition Christoph Hellwig
2021-07-22 18:38   ` Chaitanya Kulkarni
2021-07-22  7:53 ` [PATCH 3/9] block: unhash the whole device inode earlier Christoph Hellwig
2021-07-22  8:19   ` Ming Lei
2021-07-22 13:12     ` Christoph Hellwig [this message]
2021-07-22  7:53 ` [PATCH 4/9] block: allocate bd_meta_info later in add_partitions Christoph Hellwig
2021-07-22  8:32   ` Ming Lei
2021-07-22  7:53 ` [PATCH 5/9] block: change the refcounting for partitions Christoph Hellwig
2021-07-22  8:41   ` Ming Lei
2021-07-22 13:12     ` Christoph Hellwig
2021-07-22  7:53 ` [PATCH 6/9] btrfs: store a block_device in struct btrfs_ordered_extent Christoph Hellwig
2021-07-22 12:58   ` David Sterba
2021-07-22 13:04     ` Christoph Hellwig
2021-07-22  7:54 ` [PATCH 7/9] loop: don't grab a reference to the block device Christoph Hellwig
2021-07-22  8:57   ` Ming Lei
2021-07-22 18:40   ` Chaitanya Kulkarni
2021-07-22  7:54 ` [PATCH 8/9] block: remove bdgrab Christoph Hellwig
2021-07-22  7:54 ` [PATCH 9/9] block: remove bdput Christoph Hellwig
2021-07-22 18:40   ` Chaitanya Kulkarni
2021-07-28  1:39 ` fixes and cleanups for block_device refcounting v2 Jens Axboe

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=20210722131227.GA27213@lst.de \
    --to=hch@lst.de \
    --cc=axboe@kernel.dk \
    --cc=dsterba@suse.com \
    --cc=josef@toxicpanda.com \
    --cc=linux-block@vger.kernel.org \
    --cc=linux-btrfs@vger.kernel.org \
    --cc=ming.lei@redhat.com \
    --cc=naohiro.aota@wdc.com \
    /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.