]> git.neil.brown.name Git - history.git/commitdiff
[PATCH] (1/8) ->get_sb() switchover
authorAlexander Viro <viro@math.psu.edu>
Wed, 6 Feb 2002 13:57:56 +0000 (05:57 -0800)
committerLinus Torvalds <torvalds@athlon.transmeta.com>
Wed, 6 Feb 2002 13:57:56 +0000 (05:57 -0800)
OK, here comes the long-promised switchover to ->get_sb().

New method added - ->get_sb(type, flags, dev, data).  At this point we
still keep ->read_super(), but it will go away in the end of series.
->get_sb() is a generalization of get_sb_{bdev,nodev,single}() - as the
matter of fact, these will become common helpers used by filesystems in
their ->get_sb().

fs/super.c
include/linux/fs.h

index fb70602790ae0c6e997a49d13984f924cad1bedd..c632db504c7316041cc2c0b45dd8e8878aad526e 100644 (file)
@@ -792,7 +792,9 @@ do_kern_mount(const char *fstype, int flags, char *name, void *data)
        mnt = alloc_vfsmnt(name);
        if (!mnt)
                goto out;
-       if (type->fs_flags & FS_REQUIRES_DEV)
+       if (type->get_sb)
+               sb = type->get_sb(type, flags, name, data);
+       else if (type->fs_flags & FS_REQUIRES_DEV)
                sb = get_sb_bdev(type, flags, name, data);
        else if (type->fs_flags & FS_SINGLE)
                sb = get_sb_single(type, flags, name, data);
index f4699a15157d42b9c4f36a9ed263ead0445853c5..fd96319ad140e824665f91b7c1578910d5a87841 100644 (file)
@@ -926,9 +926,20 @@ struct dquot_operations {
        int (*transfer) (struct inode *, struct iattr *);
 };
 
+/*
+ *             NOTE NOTE NOTE
+ *
+ *     ->read_super() is going to die.  New method (->get_sb) should replace
+ * it.  The only reason why ->read_super() is left for _SHORT_ transition
+ * period is to avoid a single patch touching every fs.  They will be
+ * converted one-by-one and ONCE THAT IS DONE OR TWO WEEKS HAD PASSED
+ * (whatever sooner) ->read_super() WILL DISAPPEAR.  
+ */
+
 struct file_system_type {
        const char *name;
        int fs_flags;
+       struct super_block *(*get_sb) (struct file_system_type *, int, char *, void *);
        struct super_block *(*read_super) (struct super_block *, void *, int);
        struct module *owner;
        struct file_system_type * next;