[for-4.16,v2,1/3] block: only bdi_unregister() in del_gendisk() if !GENHD_FL_HIDDEN
diff mbox

Message ID 20180110024104.34885-2-snitzer@redhat.com
State New
Headers show

Commit Message

Mike Snitzer Jan. 10, 2018, 2:41 a.m. UTC
device_add_disk() will only call bdi_register_owner() if
!GENHD_FL_HIDDEN so it follows that bdi_unregister() should be avoided
for !GENHD_FL_HIDDEN in del_gendisk().

Found with code inspection.  bdi_unregister() won't do much harm if
bdi_register_owner() wasn't used but best to avoid it.

Fixes: 8ddcd65325 ("block: introduce GENHD_FL_HIDDEN")
Signed-off-by: Mike Snitzer <snitzer@redhat.com>
---
 block/genhd.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Comments

Mike Snitzer Jan. 10, 2018, 4:35 a.m. UTC | #1
On Tue, Jan 09 2018 at  9:41pm -0500,
Mike Snitzer <snitzer@redhat.com> wrote:

> device_add_disk() will only call bdi_register_owner() if
> !GENHD_FL_HIDDEN so it follows that bdi_unregister() should be avoided
> for !GENHD_FL_HIDDEN in del_gendisk().

This  ^ should be "GENHD_FL_HIDDEN".

Sorry for the cut-n-paste typo.
Christoph Hellwig Jan. 10, 2018, 8:31 a.m. UTC | #2
It's in fact completely harmless :)  But not even calling it
obviously is just as fine.

Patch
diff mbox

diff --git a/block/genhd.c b/block/genhd.c
index 96a66f671720..00620e01e043 100644
--- a/block/genhd.c
+++ b/block/genhd.c
@@ -725,7 +725,8 @@  void del_gendisk(struct gendisk *disk)
 		 * Unregister bdi before releasing device numbers (as they can
 		 * get reused and we'd get clashes in sysfs).
 		 */
-		bdi_unregister(disk->queue->backing_dev_info);
+		if (!(disk->flags & GENHD_FL_HIDDEN))
+			bdi_unregister(disk->queue->backing_dev_info);
 		blk_unregister_queue(disk);
 	} else {
 		WARN_ON(1);