--- linux-2.4.18/fs/super.c Tue Mar 12 15:04:10 2002 +++ linux-2.4.18-getsbfix/fs/super.c Tue Nov 26 21:58:02 2002 @@ -15,7 +15,7 @@ * Added kerneld support: Jacques Gelinas and Bjorn Ekwall * Added change_root: Werner Almesberger & Hans Lermen, Feb '96 * Added options to /proc/mounts: - * Torbjörn Lindh (torbjorn.lindh@gopta.se), April 14, 1996. + * Torbj-Aörn Lindh (torbjorn.lindh@gopta.se), April 14, 1996.$)B * Added devfs support: Richard Gooch , 13-JAN-1998 * Heavily rewritten for 'one fs - one tree' dcache architecture. AV, Mar 2000 */ @@ -645,21 +645,16 @@ dev = to_kdev_t(bdev->bd_dev); if (!(flags & MS_RDONLY)) mode |= FMODE_WRITE; - error = blkdev_get(bdev, mode, 0, BDEV_FS); - devfs_put_ops (de); /* Decrement module use count now we're safe */ - if (error) - goto out; check_disk_change(dev); error = -EACCES; if (!(flags & MS_RDONLY) && is_read_only(dev)) { - blkdev_put(bdev, BDEV_FS); + devfs_put_ops (de); /* Decrement module use count */ goto out; } - error = -ENOMEM; s = alloc_super(); if (!s) { - blkdev_put(bdev, BDEV_FS); + devfs_put_ops (de); /* Decrement module use count */ goto out; } @@ -675,16 +670,24 @@ ((flags ^ old->s_flags) & MS_RDONLY)) { spin_unlock(&sb_lock); destroy_super(s); - blkdev_put(bdev, BDEV_FS); + devfs_put_ops (de); /* Decrement module use count */ goto out; } if (!grab_super(old)) goto restart; destroy_super(s); - blkdev_put(bdev, BDEV_FS); + devfs_put_ops (de); /* Decrement module use count */ path_release(&nd); return old; } + /* + * 2002.11.08 moved by T. KATO + * To make MTD worked. + */ + error = blkdev_get(bdev, mode, 0, BDEV_FS); + devfs_put_ops (de); /* Decrement module use count now we're safe */ + if (error) + goto out; s->s_dev = dev; s->s_bdev = bdev; s->s_flags = flags;