]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/blobdiff - mm/backing-dev.c
Merge 7xx-iosplit-plat-merge with omap-fixes
[mirror_ubuntu-bionic-kernel.git] / mm / backing-dev.c
index 5a37e205571785cfcc93ee7b4b95180df4e951e4..11aee09dd2a611ea7529d4f1b863d383d533b7b7 100644 (file)
@@ -610,9 +610,26 @@ static void bdi_wb_shutdown(struct backing_dev_info *bdi)
                kthread_stop(wb->task);
 }
 
+/*
+ * This bdi is going away now, make sure that no super_blocks point to it
+ */
+static void bdi_prune_sb(struct backing_dev_info *bdi)
+{
+       struct super_block *sb;
+
+       spin_lock(&sb_lock);
+       list_for_each_entry(sb, &super_blocks, s_list) {
+               if (sb->s_bdi == bdi)
+                       sb->s_bdi = NULL;
+       }
+       spin_unlock(&sb_lock);
+}
+
 void bdi_unregister(struct backing_dev_info *bdi)
 {
        if (bdi->dev) {
+               bdi_prune_sb(bdi);
+
                if (!bdi_cap_flush_forker(bdi))
                        bdi_wb_shutdown(bdi);
                bdi_debug_unregister(bdi);