*/
                if (!was_dirty) {
                        struct bdi_writeback *wb = &inode_to_bdi(inode)->wb;
+                       struct backing_dev_info *bdi = wb->bdi;
+
+                       if (bdi_cap_writeback_dirty(bdi) &&
+                           !test_bit(BDI_registered, &bdi->state)) {
+                               WARN_ON(1);
+                               printk(KERN_ERR "bdi-%s not registered\n",
+                                                               bdi->name);
+                       }
 
                        inode->dirtied_when = jiffies;
                        list_move(&inode->i_list, &wb->b_dirty);
 
        BDI_wb_alloc,           /* Default embedded wb allocated */
        BDI_async_congested,    /* The async (write) queue is getting full */
        BDI_sync_congested,     /* The sync queue is getting full */
+       BDI_registered,         /* bdi_register() was done */
        BDI_unused,             /* Available bits start here */
 };
 
 
        if (!bdi_cap_writeback_dirty(bdi))
                return;
 
+       if (WARN_ON(!test_bit(BDI_registered, &bdi->state))) {
+               printk(KERN_ERR "bdi %p/%s is not registered!\n",
+                                                       bdi, bdi->name);
+               return;
+       }
+
        /*
         * Check with the helper whether to proceed adding a task. Will only
         * abort if we two or more simultanous calls to
        }
 
        bdi_debug_register(bdi, dev_name(dev));
+       set_bit(BDI_registered, &bdi->state);
 exit:
        return ret;
 }