Hi yaffsers. I've noticed some slight strangeness in the yaffs/mtd interaction. I have put debugging code in the drivers/mtd/mtd_blkdevs::blktrans_open/release functions, and when yaffs mounts blktrans_open gets called, and the use count increases. When yaffs is umounted the blktrans_release function is not called - therefore the use count isn't decremented, and other clean up operations aren't done. Normally this is OK, I can mount & umount as many times as I like. However, if I happen to remove my mtd device (if you are curious, I have removable nand storage & I am rmmoding the nand driver module), then add the mtd device back & remount yaffs, it borks. In the below structure (yaffs_fs.c) static struct file_system_type yaffs_fs_type = { .owner = THIS_MODULE, .name = "yaffs", .get_sb = yaffs_read_super, //.kill_sb = kill_block_super, .kill_sb = kill_litter_super, .fs_flags = FS_REQUIRES_DEV, }; .kill_sb is set to kill_litter_super, but there is a (commented out) alternative of .kill_sb = kill_block_super. I have found that setting kill_sb to be kill_block_super causes the blktrans_release function to be called when yaffs is unmounted, and I can happily go through the sequence of - insmod driver - mount yaffs - umount yaffs - rmmod driver My question is: why should the default kill_litter_super be prefered over kill_block_super, and what might I have screwed up in the process of changing from one function to another? Cheers Brad