X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs2.git;a=blobdiff_plain;f=yaffs_vfs_multi.c;h=3cf6dde1717c394487c3780189da83801fddcb52;hp=322f9819c3f47fef498b25e382aa8822ecea96a3;hb=6c0b1f629b813db703ceac9e35822380d7f73f1f;hpb=9c99932eb16ba64c6d3ba69145fe8c5d5b04274d diff --git a/yaffs_vfs_multi.c b/yaffs_vfs_multi.c index 322f981..3cf6dde 100644 --- a/yaffs_vfs_multi.c +++ b/yaffs_vfs_multi.c @@ -2473,8 +2473,10 @@ struct mutex yaffs_context_lock; static void yaffs_put_super(struct super_block *sb) { struct yaffs_dev *dev = yaffs_super_to_dev(sb); + struct mtd_info *mtd = yaffs_dev_to_mtd(dev); - yaffs_trace(YAFFS_TRACE_OS, "yaffs_put_super"); + yaffs_trace(YAFFS_TRACE_OS | YAFFS_TRACE_ALWAYS, + "yaffs_put_super"); yaffs_trace(YAFFS_TRACE_OS | YAFFS_TRACE_BACKGROUND, "Shutting down yaffs background thread"); @@ -2486,9 +2488,6 @@ static void yaffs_put_super(struct super_block *sb) yaffs_flush_super(sb, 1); - if (yaffs_dev_to_lc(dev)->put_super_fn) - yaffs_dev_to_lc(dev)->put_super_fn(sb); - yaffs_deinitialise(dev); yaffs_gross_unlock(dev); @@ -2503,18 +2502,18 @@ static void yaffs_put_super(struct super_block *sb) } kfree(dev); -} - -static void yaffs_mtd_put_super(struct super_block *sb) -{ - struct mtd_info *mtd = yaffs_dev_to_mtd(yaffs_super_to_dev(sb)); - if (mtd->sync) + if (mtd && mtd->sync) mtd->sync(mtd); - put_mtd_device(mtd); + if(mtd) + put_mtd_device(mtd); + + yaffs_trace(YAFFS_TRACE_OS | YAFFS_TRACE_ALWAYS, + "yaffs_put_super done"); } + static void yaffs_touch_super(struct yaffs_dev *dev) { struct super_block *sb = yaffs_dev_to_lc(dev)->super; @@ -2878,10 +2877,8 @@ static struct super_block *yaffs_internal_read_super(int yaffs_version, yaffs_mtd_drv_install(dev); - yaffs_dev_to_lc(dev)->put_super_fn = yaffs_mtd_put_super; - param->sb_dirty_fn = yaffs_touch_super; - param->gc_control = yaffs_gc_control_callback; + param->gc_control_fn = yaffs_gc_control_callback; yaffs_dev_to_lc(dev)->super = sb;