diff --git a/block/genhd.c b/block/genhd.c index b26a5ea115d0..d06ba7e731a4 100644 --- a/block/genhd.c +++ b/block/genhd.c @@ -662,6 +662,7 @@ void del_gendisk(struct gendisk *disk) struct disk_part_iter piter; struct hd_struct *part; + WARN_ON(!(disk->flags & GENHD_FL_UP)); blk_integrity_del(disk); disk_del_events(disk); diff --git a/drivers/scsi/scsi_scan.c b/drivers/scsi/scsi_scan.c index 6f7128f49c30..7d987dcb8fee 100644 --- a/drivers/scsi/scsi_scan.c +++ b/drivers/scsi/scsi_scan.c @@ -1073,6 +1073,7 @@ static int scsi_probe_and_add_lun(struct scsi_target *starget, */ sdev = scsi_device_lookup_by_target(starget, lun); if (sdev) { + printk("Reusing sdev %p\n", sdev); if (rescan != SCSI_SCAN_INITIAL || !scsi_device_created(sdev)) { SCSI_LOG_SCAN_BUS(3, sdev_printk(KERN_INFO, sdev, "scsi scan: device exists on %s\n", @@ -1089,8 +1090,10 @@ static int scsi_probe_and_add_lun(struct scsi_target *starget, return SCSI_SCAN_LUN_PRESENT; } scsi_device_put(sdev); - } else + } else { sdev = scsi_alloc_sdev(starget, lun, hostdata); + printk("Created sdev %p\n", sdev); + } if (!sdev) goto out; diff --git a/mm/backing-dev.c b/mm/backing-dev.c index 6d861d090e9f..6c172099aa23 100644 --- a/mm/backing-dev.c +++ b/mm/backing-dev.c @@ -496,6 +496,7 @@ static void cgwb_release_workfn(struct work_struct *work) wb_exit(wb); kfree_rcu(wb, rcu); + printk("CGWB release! %p\n", bdi); if (atomic_dec_and_test(&bdi->usage_cnt)) wake_up_all(&cgwb_release_wait); } @@ -668,6 +669,7 @@ static int cgwb_bdi_init(struct backing_dev_info *bdi) { int ret; + printk("CGWB init %p\n", bdi); INIT_RADIX_TREE(&bdi->cgwb_tree, GFP_ATOMIC); bdi->cgwb_congested_tree = RB_ROOT; atomic_set(&bdi->usage_cnt, 1); @@ -709,6 +711,7 @@ static void cgwb_bdi_destroy(struct backing_dev_info *bdi) * all cgwb's and cgwb_congested's ever created on @bdi. */ atomic_dec(&bdi->usage_cnt); + printk("CGWB %p usage_cnt: %u\n", bdi, atomic_read(&bdi->usage_cnt)); wait_event(cgwb_release_wait, !atomic_read(&bdi->usage_cnt)); } @@ -877,10 +880,15 @@ static void bdi_remove_from_list(struct backing_dev_info *bdi) void bdi_unregister(struct backing_dev_info *bdi) { + WARN_ON(!test_bit(WB_registered, &bdi->wb.state)); /* make sure nobody finds us on the bdi_list anymore */ + printk("Unreg1\n"); bdi_remove_from_list(bdi); + printk("Unreg2\n"); wb_shutdown(&bdi->wb); + printk("Unreg3\n"); cgwb_bdi_destroy(bdi); + printk("Unreg4\n"); if (bdi->dev) { bdi_debug_unregister(bdi);