* [PATCH] permit fs->get_sb() to return alternative root
@ 2004-05-18 14:14 ` David Howells
2004-05-18 14:43 ` Trond Myklebust
[not found] ` <20040518152426.GY17014@parcelfarce.linux.theplanet.co.uk>
0 siblings, 2 replies; 4+ messages in thread
From: David Howells @ 2004-05-18 14:14 UTC (permalink / raw)
To: viro, Linus Torvalds, Trond Myklebust; +Cc: linux-fsdevel
Hi Al, Linux,
Here's a patch to add an extra argument to the get_sb() method of struct
file_system_type that allows a filesystem to suggest an alternative dentry to
be attached to the vfsmount structure. If no such suggestion is made,
sb->s_root is selected as usual.
The reason I want this is so that the NFS fs can be improved such that two
mounts made from the same server will be able to use the same superblock, the
same inodes and the same dentries (as I've been discussing with Trond), this
eliminating aliasing at the client end.
This deals with the case of doing, for instance:
mount file:/export/home0/dhowells /home/dhowells
mount file:/export/home0/dwmw2 /home/dwmw2
And then finding you've got files hard-linked across the two.
In effect, you get a sort of bind mount.
It also means that local on-disc caching becomes feasible with cachefs.
David
diff -uNr linux-2.6.6/include/linux/fs.h linux-2.6.6-getsb/include/linux/fs.h
--- linux-2.6.6/include/linux/fs.h 2004-05-11 11:28:57.000000000 +0100
+++ linux-2.6.6-getsb/include/linux/fs.h 2004-05-18 11:35:07.000000000 +0100
@@ -1086,7 +1086,7 @@
const char *name;
int fs_flags;
struct super_block *(*get_sb) (struct file_system_type *, int,
- const char *, void *);
+ const char *, void *, struct dentry **);
void (*kill_sb) (struct super_block *);
struct module *owner;
struct file_system_type * next;
diff -uNr linux-2.6.6/fs/super.c linux-2.6.6-getsb/fs/super.c
--- linux-2.6.6/fs/super.c 2004-05-11 11:28:56.000000000 +0100
+++ linux-2.6.6-getsb/fs/super.c 2004-05-18 13:55:58.000000000 +0100
@@ -738,6 +738,7 @@
struct file_system_type *type = get_fs_type(fstype);
struct super_block *sb = ERR_PTR(-ENOMEM);
struct vfsmount *mnt;
+ struct dentry *root;
int error;
char *secdata = NULL;
@@ -762,15 +763,18 @@
}
}
- sb = type->get_sb(type, flags, name, data);
+ root = NULL;
+ sb = type->get_sb(type, flags, name, data, &root);
if (IS_ERR(sb))
goto out_free_secdata;
+ if (!root)
+ root = sb->s_root;
error = security_sb_kern_mount(sb, secdata);
if (error)
goto out_sb;
mnt->mnt_sb = sb;
- mnt->mnt_root = dget(sb->s_root);
- mnt->mnt_mountpoint = sb->s_root;
+ mnt->mnt_root = dget(root);
+ mnt->mnt_mountpoint = mnt->mnt_root;
mnt->mnt_parent = mnt;
up_write(&sb->s_umount);
put_filesystem(type);
diff -uNr linux-2.6.6/arch/ia64/kernel/perfmon.c linux-2.6.6-getsb/arch/ia64/kernel/perfmon.c
--- linux-2.6.6/arch/ia64/kernel/perfmon.c 2004-05-11 11:28:36.000000000 +0100
+++ linux-2.6.6-getsb/arch/ia64/kernel/perfmon.c 2004-05-18 13:35:17.000000000 +0100
@@ -592,7 +592,8 @@
static struct super_block *
-pfmfs_get_sb(struct file_system_type *fs_type, int flags, const char *dev_name, void *data)
+pfmfs_get_sb(struct file_system_type *fs_type, int flags, const char *dev_name, void *data,
+ struct dentry **_root)
{
return get_sb_pseudo(fs_type, "pfm:", NULL, PFMFS_MAGIC);
}
diff -uNr linux-2.6.6/arch/ia64/sn/io/hwgfs/ramfs.c linux-2.6.6-getsb/arch/ia64/sn/io/hwgfs/ramfs.c
--- linux-2.6.6/arch/ia64/sn/io/hwgfs/ramfs.c 2004-05-11 11:28:14.000000000 +0100
+++ linux-2.6.6-getsb/arch/ia64/sn/io/hwgfs/ramfs.c 2004-05-18 13:35:35.000000000 +0100
@@ -165,7 +165,7 @@
}
static struct super_block *hwgfs_get_sb(struct file_system_type *fs_type,
- int flags, const char *dev_name, void *data)
+ int flags, const char *dev_name, void *data, struct dentry **_root)
{
return get_sb_single(fs_type, flags, data, hwgfs_fill_super);
}
diff -uNr linux-2.6.6/drivers/isdn/capi/capifs.c linux-2.6.6-getsb/drivers/isdn/capi/capifs.c
--- linux-2.6.6/drivers/isdn/capi/capifs.c 2004-05-11 11:26:21.000000000 +0100
+++ linux-2.6.6-getsb/drivers/isdn/capi/capifs.c 2004-05-18 13:37:35.000000000 +0100
@@ -118,7 +118,7 @@
}
static struct super_block *capifs_get_sb(struct file_system_type *fs_type,
- int flags, const char *dev_name, void *data)
+ int flags, const char *dev_name, void *data, struct dentry **_root)
{
return get_sb_single(fs_type, flags, data, capifs_fill_super);
}
diff -uNr linux-2.6.6/drivers/misc/ibmasm/ibmasmfs.c linux-2.6.6-getsb/drivers/misc/ibmasm/ibmasmfs.c
--- linux-2.6.6/drivers/misc/ibmasm/ibmasmfs.c 2004-05-11 11:26:31.000000000 +0100
+++ linux-2.6.6-getsb/drivers/misc/ibmasm/ibmasmfs.c 2004-05-18 13:38:51.000000000 +0100
@@ -103,7 +103,8 @@
static struct super_block *ibmasmfs_get_super(struct file_system_type *fst,
- int flags, const char *name, void *data)
+ int flags, const char *name, void *data,
+ struct dentry **_root)
{
return get_sb_single(fst, flags, data, ibmasmfs_fill_super);
}
diff -uNr linux-2.6.6/drivers/oprofile/oprofilefs.c linux-2.6.6-getsb/drivers/oprofile/oprofilefs.c
--- linux-2.6.6/drivers/oprofile/oprofilefs.c 2004-05-11 11:26:28.000000000 +0100
+++ linux-2.6.6-getsb/drivers/oprofile/oprofilefs.c 2004-05-18 13:38:25.000000000 +0100
@@ -300,7 +300,7 @@
static struct super_block *oprofilefs_get_sb(struct file_system_type *fs_type,
- int flags, const char *dev_name, void *data)
+ int flags, const char *dev_name, void *data, struct dentry **_root)
{
return get_sb_single(fs_type, flags, data, oprofilefs_fill_super);
}
diff -uNr linux-2.6.6/drivers/usb/core/inode.c linux-2.6.6-getsb/drivers/usb/core/inode.c
--- linux-2.6.6/drivers/usb/core/inode.c 2004-05-11 11:28:55.000000000 +0100
+++ linux-2.6.6-getsb/drivers/usb/core/inode.c 2004-05-18 13:37:48.000000000 +0100
@@ -497,7 +497,7 @@
static struct file_system_type usbdevice_fs_type;
static struct super_block *usb_get_sb(struct file_system_type *fs_type,
- int flags, const char *dev_name, void *data)
+ int flags, const char *dev_name, void *data, struct dentry **_root)
{
return get_sb_single(fs_type, flags, data, usbfs_fill_super);
}
diff -uNr linux-2.6.6/drivers/usb/gadget/inode.c linux-2.6.6-getsb/drivers/usb/gadget/inode.c
--- linux-2.6.6/drivers/usb/gadget/inode.c 2004-05-11 11:26:25.000000000 +0100
+++ linux-2.6.6-getsb/drivers/usb/gadget/inode.c 2004-05-18 13:38:08.000000000 +0100
@@ -1842,7 +1842,7 @@
/* "mount -t gadgetfs path /dev/gadget" ends up here */
static struct super_block *
gadgetfs_get_sb (struct file_system_type *t, int flags,
- const char *path, void *opts)
+ const char *path, void *opts, struct dentry **_root)
{
return get_sb_single (t, flags, opts, gadgetfs_fill_super);
}
diff -uNr linux-2.6.6/fs/adfs/super.c linux-2.6.6-getsb/fs/adfs/super.c
--- linux-2.6.6/fs/adfs/super.c 2004-05-11 11:28:55.000000000 +0100
+++ linux-2.6.6-getsb/fs/adfs/super.c 2004-05-18 13:17:45.000000000 +0100
@@ -470,7 +470,7 @@
}
static struct super_block *adfs_get_sb(struct file_system_type *fs_type,
- int flags, const char *dev_name, void *data)
+ int flags, const char *dev_name, void *data, struct dentry **_root)
{
return get_sb_bdev(fs_type, flags, dev_name, data, adfs_fill_super);
}
diff -uNr linux-2.6.6/fs/affs/super.c linux-2.6.6-getsb/fs/affs/super.c
--- linux-2.6.6/fs/affs/super.c 2004-05-11 11:28:55.000000000 +0100
+++ linux-2.6.6-getsb/fs/affs/super.c 2004-05-18 13:20:59.000000000 +0100
@@ -546,7 +546,7 @@
}
static struct super_block *affs_get_sb(struct file_system_type *fs_type,
- int flags, const char *dev_name, void *data)
+ int flags, const char *dev_name, void *data, struct dentry **_root)
{
return get_sb_bdev(fs_type, flags, dev_name, data, affs_fill_super);
}
diff -uNr linux-2.6.6/fs/afs/super.c linux-2.6.6-getsb/fs/afs/super.c
--- linux-2.6.6/fs/afs/super.c 2004-05-11 11:28:30.000000000 +0100
+++ linux-2.6.6-getsb/fs/afs/super.c 2004-05-18 13:14:07.000000000 +0100
@@ -40,7 +40,7 @@
static struct super_block *afs_get_sb(struct file_system_type *fs_type,
int flags, const char *dev_name,
- void *data);
+ void *data, struct dentry **_root);
static struct inode *afs_alloc_inode(struct super_block *sb);
@@ -299,7 +299,8 @@
static struct super_block *afs_get_sb(struct file_system_type *fs_type,
int flags,
const char *dev_name,
- void *options)
+ void *options,
+ struct dentry **_root)
{
struct afs_mount_params params;
struct super_block *sb;
diff -uNr linux-2.6.6/fs/autofs/init.c linux-2.6.6-getsb/fs/autofs/init.c
--- linux-2.6.6/fs/autofs/init.c 2004-05-11 11:26:07.000000000 +0100
+++ linux-2.6.6-getsb/fs/autofs/init.c 2004-05-18 13:20:44.000000000 +0100
@@ -15,7 +15,7 @@
#include "autofs_i.h"
static struct super_block *autofs_get_sb(struct file_system_type *fs_type,
- int flags, const char *dev_name, void *data)
+ int flags, const char *dev_name, void *data, struct dentry **_root)
{
return get_sb_nodev(fs_type, flags, data, autofs_fill_super);
}
diff -uNr linux-2.6.6/fs/autofs4/init.c linux-2.6.6-getsb/fs/autofs4/init.c
--- linux-2.6.6/fs/autofs4/init.c 2004-05-11 11:26:06.000000000 +0100
+++ linux-2.6.6-getsb/fs/autofs4/init.c 2004-05-18 13:19:25.000000000 +0100
@@ -15,7 +15,7 @@
#include "autofs_i.h"
static struct super_block *autofs_get_sb(struct file_system_type *fs_type,
- int flags, const char *dev_name, void *data)
+ int flags, const char *dev_name, void *data, struct dentry **_root)
{
return get_sb_nodev(fs_type, flags, data, autofs4_fill_super);
}
diff -uNr linux-2.6.6/fs/befs/linuxvfs.c linux-2.6.6-getsb/fs/befs/linuxvfs.c
--- linux-2.6.6/fs/befs/linuxvfs.c 2004-05-11 11:26:06.000000000 +0100
+++ linux-2.6.6-getsb/fs/befs/linuxvfs.c 2004-05-18 13:19:00.000000000 +0100
@@ -928,7 +928,7 @@
static struct super_block *
befs_get_sb(struct file_system_type *fs_type, int flags, const char *dev_name,
- void *data)
+ void *data, struct dentry **_root)
{
return get_sb_bdev(fs_type, flags, dev_name, data, befs_fill_super);
}
diff -uNr linux-2.6.6/fs/bfs/inode.c linux-2.6.6-getsb/fs/bfs/inode.c
--- linux-2.6.6/fs/bfs/inode.c 2004-05-11 11:26:06.000000000 +0100
+++ linux-2.6.6-getsb/fs/bfs/inode.c 2004-05-18 13:18:05.000000000 +0100
@@ -381,7 +381,7 @@
}
static struct super_block *bfs_get_sb(struct file_system_type *fs_type,
- int flags, const char *dev_name, void *data)
+ int flags, const char *dev_name, void *data, struct dentry **_root)
{
return get_sb_bdev(fs_type, flags, dev_name, data, bfs_fill_super);
}
diff -uNr linux-2.6.6/fs/binfmt_misc.c linux-2.6.6-getsb/fs/binfmt_misc.c
--- linux-2.6.6/fs/binfmt_misc.c 2004-05-11 11:28:55.000000000 +0100
+++ linux-2.6.6-getsb/fs/binfmt_misc.c 2004-05-18 13:21:41.000000000 +0100
@@ -622,7 +622,7 @@
}
static struct super_block *bm_get_sb(struct file_system_type *fs_type,
- int flags, const char *dev_name, void *data)
+ int flags, const char *dev_name, void *data, struct dentry **_root)
{
return get_sb_single(fs_type, flags, data, bm_fill_super);
}
diff -uNr linux-2.6.6/fs/cifs/cifsfs.c linux-2.6.6-getsb/fs/cifs/cifsfs.c
--- linux-2.6.6/fs/cifs/cifsfs.c 2004-05-11 11:28:55.000000000 +0100
+++ linux-2.6.6-getsb/fs/cifs/cifsfs.c 2004-05-18 13:16:00.000000000 +0100
@@ -398,7 +398,7 @@
static struct super_block *
cifs_get_sb(struct file_system_type *fs_type,
- int flags, const char *dev_name, void *data)
+ int flags, const char *dev_name, void *data, , struct dentry **_root)
{
int rc;
struct super_block *sb = sget(fs_type, NULL, set_anon_super, NULL);
diff -uNr linux-2.6.6/fs/coda/inode.c linux-2.6.6-getsb/fs/coda/inode.c
--- linux-2.6.6/fs/coda/inode.c 2004-05-11 11:28:55.000000000 +0100
+++ linux-2.6.6-getsb/fs/coda/inode.c 2004-05-18 13:16:59.000000000 +0100
@@ -306,7 +306,7 @@
/* init_coda: used by filesystems.c to register coda */
static struct super_block *coda_get_sb(struct file_system_type *fs_type,
- int flags, const char *dev_name, void *data)
+ int flags, const char *dev_name, void *data, struct dentry **_root)
{
return get_sb_nodev(fs_type, flags, data, coda_fill_super);
}
diff -uNr linux-2.6.6/fs/cramfs/inode.c linux-2.6.6-getsb/fs/cramfs/inode.c
--- linux-2.6.6/fs/cramfs/inode.c 2004-05-11 11:28:55.000000000 +0100
+++ linux-2.6.6-getsb/fs/cramfs/inode.c 2004-05-18 13:19:48.000000000 +0100
@@ -494,7 +494,7 @@
};
static struct super_block *cramfs_get_sb(struct file_system_type *fs_type,
- int flags, const char *dev_name, void *data)
+ int flags, const char *dev_name, void *data, struct dentry **_root)
{
return get_sb_bdev(fs_type, flags, dev_name, data, cramfs_fill_super);
}
diff -uNr linux-2.6.6/fs/devfs/base.c linux-2.6.6-getsb/fs/devfs/base.c
--- linux-2.6.6/fs/devfs/base.c 2004-05-11 11:28:55.000000000 +0100
+++ linux-2.6.6-getsb/fs/devfs/base.c 2004-05-18 13:20:27.000000000 +0100
@@ -2566,7 +2566,7 @@
static struct super_block *devfs_get_sb(struct file_system_type *fs_type,
int flags, const char *dev_name,
- void *data)
+ void *data, struct dentry **_root)
{
return get_sb_single(fs_type, flags, data, devfs_fill_super);
}
diff -uNr linux-2.6.6/fs/devpts/inode.c linux-2.6.6-getsb/fs/devpts/inode.c
--- linux-2.6.6/fs/devpts/inode.c 2004-05-11 11:26:07.000000000 +0100
+++ linux-2.6.6-getsb/fs/devpts/inode.c 2004-05-18 13:21:07.000000000 +0100
@@ -109,7 +109,7 @@
}
static struct super_block *devpts_get_sb(struct file_system_type *fs_type,
- int flags, const char *dev_name, void *data)
+ int flags, const char *dev_name, void *data, struct dentry **_root)
{
return get_sb_single(fs_type, flags, data, devpts_fill_super);
}
diff -uNr linux-2.6.6/fs/efs/super.c linux-2.6.6-getsb/fs/efs/super.c
--- linux-2.6.6/fs/efs/super.c 2004-05-11 11:28:55.000000000 +0100
+++ linux-2.6.6-getsb/fs/efs/super.c 2004-05-18 13:21:14.000000000 +0100
@@ -16,7 +16,7 @@
#include <linux/vfs.h>
static struct super_block *efs_get_sb(struct file_system_type *fs_type,
- int flags, const char *dev_name, void *data)
+ int flags, const char *dev_name, void *data, struct dentry **_root)
{
return get_sb_bdev(fs_type, flags, dev_name, data, efs_fill_super);
}
diff -uNr linux-2.6.6/fs/eventpoll.c linux-2.6.6-getsb/fs/eventpoll.c
--- linux-2.6.6/fs/eventpoll.c 2004-05-11 11:28:55.000000000 +0100
+++ linux-2.6.6-getsb/fs/eventpoll.c 2004-05-18 13:21:51.000000000 +0100
@@ -326,7 +326,7 @@
static struct inode *ep_eventpoll_inode(void);
static struct super_block *eventpollfs_get_sb(struct file_system_type *fs_type,
int flags, const char *dev_name,
- void *data);
+ void *data, struct dentry **_root);
/*
* This semaphore is used to serialize ep_free() and eventpoll_release_file().
@@ -1679,7 +1679,7 @@
static struct super_block *
eventpollfs_get_sb(struct file_system_type *fs_type, int flags,
- const char *dev_name, void *data)
+ const char *dev_name, void *data, struct dentry **_root)
{
return get_sb_pseudo(fs_type, "eventpoll:", NULL, EVENTPOLLFS_MAGIC);
}
diff -uNr linux-2.6.6/fs/ext2/super.c linux-2.6.6-getsb/fs/ext2/super.c
--- linux-2.6.6/fs/ext2/super.c 2004-05-11 11:28:55.000000000 +0100
+++ linux-2.6.6-getsb/fs/ext2/super.c 2004-05-18 13:20:40.000000000 +0100
@@ -1008,7 +1008,7 @@
}
static struct super_block *ext2_get_sb(struct file_system_type *fs_type,
- int flags, const char *dev_name, void *data)
+ int flags, const char *dev_name, void *data, struct dentry **_root)
{
return get_sb_bdev(fs_type, flags, dev_name, data, ext2_fill_super);
}
diff -uNr linux-2.6.6/fs/ext3/super.c linux-2.6.6-getsb/fs/ext3/super.c
--- linux-2.6.6/fs/ext3/super.c 2004-05-11 11:28:55.000000000 +0100
+++ linux-2.6.6-getsb/fs/ext3/super.c 2004-05-18 13:20:08.000000000 +0100
@@ -2280,7 +2280,7 @@
#endif
static struct super_block *ext3_get_sb(struct file_system_type *fs_type,
- int flags, const char *dev_name, void *data)
+ int flags, const char *dev_name, void *data, struct dentry **_root)
{
return get_sb_bdev(fs_type, flags, dev_name, data, ext3_fill_super);
}
diff -uNr linux-2.6.6/fs/freevxfs/vxfs_super.c linux-2.6.6-getsb/fs/freevxfs/vxfs_super.c
--- linux-2.6.6/fs/freevxfs/vxfs_super.c 2004-05-11 11:28:55.000000000 +0100
+++ linux-2.6.6-getsb/fs/freevxfs/vxfs_super.c 2004-05-18 13:19:52.000000000 +0100
@@ -243,7 +243,7 @@
* The usual module blurb.
*/
static struct super_block *vxfs_get_sb(struct file_system_type *fs_type,
- int flags, const char *dev_name, void *data)
+ int flags, const char *dev_name, void *data, struct dentry **_root)
{
return get_sb_bdev(fs_type, flags, dev_name, data, vxfs_fill_super);
}
diff -uNr linux-2.6.6/fs/hfs/super.c linux-2.6.6-getsb/fs/hfs/super.c
--- linux-2.6.6/fs/hfs/super.c 2004-05-11 11:28:55.000000000 +0100
+++ linux-2.6.6-getsb/fs/hfs/super.c 2004-05-18 13:21:20.000000000 +0100
@@ -316,7 +316,8 @@
}
static struct super_block *hfs_get_sb(struct file_system_type *fs_type,
- int flags, const char *dev_name, void *data)
+ int flags, const char *dev_name, void *data,
+ struct dentry **_root)
{
return get_sb_bdev(fs_type, flags, dev_name, data, hfs_fill_super);
}
diff -uNr linux-2.6.6/fs/hfsplus/super.c linux-2.6.6-getsb/fs/hfsplus/super.c
--- linux-2.6.6/fs/hfsplus/super.c 2004-05-11 11:26:06.000000000 +0100
+++ linux-2.6.6-getsb/fs/hfsplus/super.c 2004-05-18 13:18:00.000000000 +0100
@@ -441,7 +441,8 @@
#define HFSPLUS_INODE_SIZE sizeof(struct hfsplus_inode_info)
static struct super_block *hfsplus_get_sb(struct file_system_type *fs_type,
- int flags, const char *dev_name, void *data)
+ int flags, const char *dev_name, void *data,
+ struct dentry **_root)
{
return get_sb_bdev(fs_type, flags, dev_name, data, hfsplus_fill_super);
}
diff -uNr linux-2.6.6/fs/hpfs/super.c linux-2.6.6-getsb/fs/hpfs/super.c
--- linux-2.6.6/fs/hpfs/super.c 2004-05-11 11:28:31.000000000 +0100
+++ linux-2.6.6-getsb/fs/hpfs/super.c 2004-05-18 13:19:36.000000000 +0100
@@ -661,7 +661,7 @@
}
static struct super_block *hpfs_get_sb(struct file_system_type *fs_type,
- int flags, const char *dev_name, void *data)
+ int flags, const char *dev_name, void *data, struct dentry **_root)
{
return get_sb_bdev(fs_type, flags, dev_name, data, hpfs_fill_super);
}
diff -uNr linux-2.6.6/fs/hugetlbfs/inode.c linux-2.6.6-getsb/fs/hugetlbfs/inode.c
--- linux-2.6.6/fs/hugetlbfs/inode.c 2004-05-11 11:28:56.000000000 +0100
+++ linux-2.6.6-getsb/fs/hugetlbfs/inode.c 2004-05-18 13:21:25.000000000 +0100
@@ -670,7 +670,7 @@
}
static struct super_block *hugetlbfs_get_sb(struct file_system_type *fs_type,
- int flags, const char *dev_name, void *data)
+ int flags, const char *dev_name, void *data, struct dentry **_root)
{
return get_sb_nodev(fs_type, flags, data, hugetlbfs_fill_super);
}
diff -uNr linux-2.6.6/fs/intermezzo/super.c linux-2.6.6-getsb/fs/intermezzo/super.c
--- linux-2.6.6/fs/intermezzo/super.c 2004-05-11 11:26:06.000000000 +0100
+++ linux-2.6.6-getsb/fs/intermezzo/super.c 2004-05-18 13:17:06.000000000 +0100
@@ -188,7 +188,7 @@
mount options to cache FS */
struct super_block *
presto_get_sb(struct file_system_type *izo_type, int flags,
- const char *devname, void *data)
+ const char *devname, void *data, struct dentry **_root)
{
struct file_system_type *fstype;
struct presto_cache *cache = NULL;
diff -uNr linux-2.6.6/fs/isofs/inode.c linux-2.6.6-getsb/fs/isofs/inode.c
--- linux-2.6.6/fs/isofs/inode.c 2004-05-11 11:28:56.000000000 +0100
+++ linux-2.6.6-getsb/fs/isofs/inode.c 2004-05-18 13:20:49.000000000 +0100
@@ -1419,7 +1419,7 @@
#endif
static struct super_block *isofs_get_sb(struct file_system_type *fs_type,
- int flags, const char *dev_name, void *data)
+ int flags, const char *dev_name, void *data, struct dentry **_root)
{
return get_sb_bdev(fs_type, flags, dev_name, data, isofs_fill_super);
}
diff -uNr linux-2.6.6/fs/jffs/inode-v23.c linux-2.6.6-getsb/fs/jffs/inode-v23.c
--- linux-2.6.6/fs/jffs/inode-v23.c 2004-05-11 11:28:56.000000000 +0100
+++ linux-2.6.6-getsb/fs/jffs/inode-v23.c 2004-05-18 13:22:10.000000000 +0100
@@ -1788,7 +1788,7 @@
};
static struct super_block *jffs_get_sb(struct file_system_type *fs_type,
- int flags, const char *dev_name, void *data)
+ int flags, const char *dev_name, void *data, struct dentry **_root)
{
return get_sb_bdev(fs_type, flags, dev_name, data, jffs_fill_super);
}
diff -uNr linux-2.6.6/fs/jffs2/super.c linux-2.6.6-getsb/fs/jffs2/super.c
--- linux-2.6.6/fs/jffs2/super.c 2004-05-11 11:28:56.000000000 +0100
+++ linux-2.6.6-getsb/fs/jffs2/super.c 2004-05-18 13:16:54.000000000 +0100
@@ -167,7 +167,7 @@
static struct super_block *jffs2_get_sb(struct file_system_type *fs_type,
int flags, const char *dev_name,
- void *data)
+ void *data, struct dentry **_root)
{
int err;
struct nameidata nd;
diff -uNr linux-2.6.6/fs/jfs/super.c linux-2.6.6-getsb/fs/jfs/super.c
--- linux-2.6.6/fs/jfs/super.c 2004-05-11 11:28:31.000000000 +0100
+++ linux-2.6.6-getsb/fs/jfs/super.c 2004-05-18 13:15:46.000000000 +0100
@@ -494,7 +494,7 @@
}
static struct super_block *jfs_get_sb(struct file_system_type *fs_type,
- int flags, const char *dev_name, void *data)
+ int flags, const char *dev_name, void *data, struct dentry **_root)
{
return get_sb_bdev(fs_type, flags, dev_name, data, jfs_fill_super);
}
diff -uNr linux-2.6.6/fs/minix/inode.c linux-2.6.6-getsb/fs/minix/inode.c
--- linux-2.6.6/fs/minix/inode.c 2004-05-11 11:26:07.000000000 +0100
+++ linux-2.6.6-getsb/fs/minix/inode.c 2004-05-18 13:21:10.000000000 +0100
@@ -556,7 +556,7 @@
}
static struct super_block *minix_get_sb(struct file_system_type *fs_type,
- int flags, const char *dev_name, void *data)
+ int flags, const char *dev_name, void *data, struct dentry **_root)
{
return get_sb_bdev(fs_type, flags, dev_name, data, minix_fill_super);
}
diff -uNr linux-2.6.6/fs/msdos/namei.c linux-2.6.6-getsb/fs/msdos/namei.c
--- linux-2.6.6/fs/msdos/namei.c 2004-05-11 11:28:56.000000000 +0100
+++ linux-2.6.6-getsb/fs/msdos/namei.c 2004-05-18 13:22:30.000000000 +0100
@@ -596,7 +596,7 @@
}
static struct super_block *msdos_get_sb(struct file_system_type *fs_type,
- int flags, const char *dev_name, void *data)
+ int flags, const char *dev_name, void *data, struct dentry **_root)
{
return get_sb_bdev(fs_type, flags, dev_name, data, msdos_fill_super);
}
diff -uNr linux-2.6.6/fs/ncpfs/inode.c linux-2.6.6-getsb/fs/ncpfs/inode.c
--- linux-2.6.6/fs/ncpfs/inode.c 2004-05-11 11:28:56.000000000 +0100
+++ linux-2.6.6-getsb/fs/ncpfs/inode.c 2004-05-18 13:19:57.000000000 +0100
@@ -963,7 +963,7 @@
#endif
static struct super_block *ncp_get_sb(struct file_system_type *fs_type,
- int flags, const char *dev_name, void *data)
+ int flags, const char *dev_name, void *data, struct dentry **_root)
{
return get_sb_nodev(fs_type, flags, data, ncp_fill_super);
}
diff -uNr linux-2.6.6/fs/nfs/inode.c linux-2.6.6-getsb/fs/nfs/inode.c
--- linux-2.6.6/fs/nfs/inode.c 2004-05-11 11:28:56.000000000 +0100
+++ linux-2.6.6-getsb/fs/nfs/inode.c 2004-05-18 13:14:47.000000000 +0100
@@ -1305,7 +1305,7 @@
}
static struct super_block *nfs_get_sb(struct file_system_type *fs_type,
- int flags, const char *dev_name, void *raw_data)
+ int flags, const char *dev_name, void *raw_data, struct dentry **_root)
{
int error;
struct nfs_server *server;
@@ -1623,7 +1623,7 @@
}
static struct super_block *nfs4_get_sb(struct file_system_type *fs_type,
- int flags, const char *dev_name, void *raw_data)
+ int flags, const char *dev_name, void *raw_data, struct dentry **_root)
{
int error;
struct nfs_server *server;
diff -uNr linux-2.6.6/fs/nfsd/nfsctl.c linux-2.6.6-getsb/fs/nfsd/nfsctl.c
--- linux-2.6.6/fs/nfsd/nfsctl.c 2004-05-11 11:26:05.000000000 +0100
+++ linux-2.6.6-getsb/fs/nfsd/nfsctl.c 2004-05-18 13:22:50.000000000 +0100
@@ -417,7 +417,7 @@
}
static struct super_block *nfsd_get_sb(struct file_system_type *fs_type,
- int flags, const char *dev_name, void *data)
+ int flags, const char *dev_name, void *data, struct dentry **_root)
{
return get_sb_single(fs_type, flags, data, nfsd_fill_super);
}
diff -uNr linux-2.6.6/fs/ntfs/super.c linux-2.6.6-getsb/fs/ntfs/super.c
--- linux-2.6.6/fs/ntfs/super.c 2004-05-11 11:28:56.000000000 +0100
+++ linux-2.6.6-getsb/fs/ntfs/super.c 2004-05-18 13:19:44.000000000 +0100
@@ -1999,7 +1999,7 @@
DECLARE_MUTEX(ntfs_lock);
static struct super_block *ntfs_get_sb(struct file_system_type *fs_type,
- int flags, const char *dev_name, void *data)
+ int flags, const char *dev_name, void *data, struct dentry **_root)
{
return get_sb_bdev(fs_type, flags, dev_name, data, ntfs_fill_super);
}
diff -uNr linux-2.6.6/fs/openpromfs/inode.c linux-2.6.6-getsb/fs/openpromfs/inode.c
--- linux-2.6.6/fs/openpromfs/inode.c 2004-05-11 11:28:56.000000000 +0100
+++ linux-2.6.6-getsb/fs/openpromfs/inode.c 2004-05-18 13:22:05.000000000 +0100
@@ -1054,7 +1054,7 @@
}
static struct super_block *openprom_get_sb(struct file_system_type *fs_type,
- int flags, const char *dev_name, void *data)
+ int flags, const char *dev_name, void *data, struct dentry **_root)
{
return get_sb_single(fs_type, flags, data, openprom_fill_super);
}
diff -uNr linux-2.6.6/fs/pipe.c linux-2.6.6-getsb/fs/pipe.c
--- linux-2.6.6/fs/pipe.c 2004-05-11 11:28:31.000000000 +0100
+++ linux-2.6.6-getsb/fs/pipe.c 2004-05-18 13:22:19.000000000 +0100
@@ -696,7 +696,7 @@
*/
static struct super_block *pipefs_get_sb(struct file_system_type *fs_type,
- int flags, const char *dev_name, void *data)
+ int flags, const char *dev_name, void *data, struct dentry **_root)
{
return get_sb_pseudo(fs_type, "pipe:", NULL, PIPEFS_MAGIC);
}
diff -uNr linux-2.6.6/fs/proc/root.c linux-2.6.6-getsb/fs/proc/root.c
--- linux-2.6.6/fs/proc/root.c 2004-05-11 11:28:31.000000000 +0100
+++ linux-2.6.6-getsb/fs/proc/root.c 2004-05-18 13:20:31.000000000 +0100
@@ -25,7 +25,7 @@
#endif
static struct super_block *proc_get_sb(struct file_system_type *fs_type,
- int flags, const char *dev_name, void *data)
+ int flags, const char *dev_name, void *data, struct dentry **_root)
{
return get_sb_single(fs_type, flags, data, proc_fill_super);
}
diff -uNr linux-2.6.6/fs/qnx4/inode.c linux-2.6.6-getsb/fs/qnx4/inode.c
--- linux-2.6.6/fs/qnx4/inode.c 2004-05-11 11:28:56.000000000 +0100
+++ linux-2.6.6-getsb/fs/qnx4/inode.c 2004-05-18 13:21:56.000000000 +0100
@@ -559,7 +559,7 @@
}
static struct super_block *qnx4_get_sb(struct file_system_type *fs_type,
- int flags, const char *dev_name, void *data)
+ int flags, const char *dev_name, void *data, struct dentry **_root)
{
return get_sb_bdev(fs_type, flags, dev_name, data, qnx4_fill_super);
}
diff -uNr linux-2.6.6/fs/ramfs/inode.c linux-2.6.6-getsb/fs/ramfs/inode.c
--- linux-2.6.6/fs/ramfs/inode.c 2004-05-11 11:26:07.000000000 +0100
+++ linux-2.6.6-getsb/fs/ramfs/inode.c 2004-05-18 13:21:33.000000000 +0100
@@ -199,13 +199,13 @@
}
static struct super_block *ramfs_get_sb(struct file_system_type *fs_type,
- int flags, const char *dev_name, void *data)
+ int flags, const char *dev_name, void *data, struct dentry **_root)
{
return get_sb_nodev(fs_type, flags, data, ramfs_fill_super);
}
static struct super_block *rootfs_get_sb(struct file_system_type *fs_type,
- int flags, const char *dev_name, void *data)
+ int flags, const char *dev_name, void *data, struct dentry **_root)
{
return get_sb_nodev(fs_type, flags|MS_NOUSER, data, ramfs_fill_super);
}
diff -uNr linux-2.6.6/fs/reiserfs/super.c linux-2.6.6-getsb/fs/reiserfs/super.c
--- linux-2.6.6/fs/reiserfs/super.c 2004-05-11 11:28:56.000000000 +0100
+++ linux-2.6.6-getsb/fs/reiserfs/super.c 2004-05-18 13:18:52.000000000 +0100
@@ -1509,7 +1509,7 @@
static struct super_block*
get_super_block (struct file_system_type *fs_type, int flags,
- const char *dev_name, void *data)
+ const char *dev_name, void *data, struct dentry **_root)
{
return get_sb_bdev(fs_type, flags, dev_name, data, reiserfs_fill_super);
}
diff -uNr linux-2.6.6/fs/romfs/inode.c linux-2.6.6-getsb/fs/romfs/inode.c
--- linux-2.6.6/fs/romfs/inode.c 2004-05-11 11:28:56.000000000 +0100
+++ linux-2.6.6-getsb/fs/romfs/inode.c 2004-05-18 13:21:03.000000000 +0100
@@ -607,7 +607,7 @@
};
static struct super_block *romfs_get_sb(struct file_system_type *fs_type,
- int flags, const char *dev_name, void *data)
+ int flags, const char *dev_name, void *data, struct dentry **_root)
{
return get_sb_bdev(fs_type, flags, dev_name, data, romfs_fill_super);
}
diff -uNr linux-2.6.6/fs/smbfs/inode.c linux-2.6.6-getsb/fs/smbfs/inode.c
--- linux-2.6.6/fs/smbfs/inode.c 2004-05-11 11:28:56.000000000 +0100
+++ linux-2.6.6-getsb/fs/smbfs/inode.c 2004-05-18 13:20:21.000000000 +0100
@@ -776,7 +776,7 @@
#endif
static struct super_block *smb_get_sb(struct file_system_type *fs_type,
- int flags, const char *dev_name, void *data)
+ int flags, const char *dev_name, void *data, struct dentry **_root)
{
return get_sb_nodev(fs_type, flags, data, smb_fill_super);
}
diff -uNr linux-2.6.6/fs/sysfs/mount.c linux-2.6.6-getsb/fs/sysfs/mount.c
--- linux-2.6.6/fs/sysfs/mount.c 2004-05-11 11:26:06.000000000 +0100
+++ linux-2.6.6-getsb/fs/sysfs/mount.c 2004-05-18 13:18:10.000000000 +0100
@@ -55,7 +55,7 @@
}
static struct super_block *sysfs_get_sb(struct file_system_type *fs_type,
- int flags, const char *dev_name, void *data)
+ int flags, const char *dev_name, void *data, struct dentry **_root)
{
return get_sb_single(fs_type, flags, data, sysfs_fill_super);
}
diff -uNr linux-2.6.6/fs/sysv/super.c linux-2.6.6-getsb/fs/sysv/super.c
--- linux-2.6.6/fs/sysv/super.c 2004-05-11 11:28:56.000000000 +0100
+++ linux-2.6.6-getsb/fs/sysv/super.c 2004-05-18 13:19:16.000000000 +0100
@@ -499,13 +499,13 @@
/* Every kernel module contains stuff like this. */
static struct super_block *sysv_get_sb(struct file_system_type *fs_type,
- int flags, const char *dev_name, void *data)
+ int flags, const char *dev_name, void *data, struct dentry **_root)
{
return get_sb_bdev(fs_type, flags, dev_name, data, sysv_fill_super);
}
static struct super_block *v7_get_sb(struct file_system_type *fs_type,
- int flags, const char *dev_name, void *data)
+ int flags, const char *dev_name, void *data, struct dentry **_root)
{
return get_sb_bdev(fs_type, flags, dev_name, data, v7_fill_super);
}
diff -uNr linux-2.6.6/fs/udf/super.c linux-2.6.6-getsb/fs/udf/super.c
--- linux-2.6.6/fs/udf/super.c 2004-05-11 11:28:56.000000000 +0100
+++ linux-2.6.6-getsb/fs/udf/super.c 2004-05-18 13:17:49.000000000 +0100
@@ -100,7 +100,7 @@
/* UDF filesystem type */
static struct super_block *udf_get_sb(struct file_system_type *fs_type,
- int flags, const char *dev_name, void *data)
+ int flags, const char *dev_name, void *data, struct dentry **_root)
{
return get_sb_bdev(fs_type, flags, dev_name, data, udf_fill_super);
}
diff -uNr linux-2.6.6/fs/ufs/super.c linux-2.6.6-getsb/fs/ufs/super.c
--- linux-2.6.6/fs/ufs/super.c 2004-05-11 11:28:56.000000000 +0100
+++ linux-2.6.6-getsb/fs/ufs/super.c 2004-05-18 13:14:57.000000000 +0100
@@ -1209,7 +1209,7 @@
};
static struct super_block *ufs_get_sb(struct file_system_type *fs_type,
- int flags, const char *dev_name, void *data)
+ int flags, const char *dev_name, void *data, struct dentry **_root)
{
return get_sb_bdev(fs_type, flags, dev_name, data, ufs_fill_super);
}
diff -uNr linux-2.6.6/fs/vfat/namei.c linux-2.6.6-getsb/fs/vfat/namei.c
--- linux-2.6.6/fs/vfat/namei.c 2004-05-11 11:28:56.000000000 +0100
+++ linux-2.6.6-getsb/fs/vfat/namei.c 2004-05-18 13:22:25.000000000 +0100
@@ -1121,7 +1121,7 @@
}
static struct super_block *vfat_get_sb(struct file_system_type *fs_type,
- int flags, const char *dev_name, void *data)
+ int flags, const char *dev_name, void *data, struct dentry **_root)
{
return get_sb_bdev(fs_type, flags, dev_name, data, vfat_fill_super);
}
diff -uNr linux-2.6.6/fs/xfs/linux/xfs_super.c linux-2.6.6-getsb/fs/xfs/linux/xfs_super.c
--- linux-2.6.6/fs/xfs/linux/xfs_super.c 2004-05-11 11:28:56.000000000 +0100
+++ linux-2.6.6-getsb/fs/xfs/linux/xfs_super.c 2004-05-18 13:22:42.000000000 +0100
@@ -745,7 +745,8 @@
struct file_system_type *fs_type,
int flags,
const char *dev_name,
- void *data)
+ void *data,
+ struct dentry **_root)
{
return get_sb_bdev(fs_type, flags, dev_name, data, linvfs_fill_super);
}
diff -uNr linux-2.6.6/ipc/mqueue.c linux-2.6.6-getsb/ipc/mqueue.c
--- linux-2.6.6/ipc/mqueue.c 2004-05-11 11:28:57.000000000 +0100
+++ linux-2.6.6-getsb/ipc/mqueue.c 2004-05-18 13:35:59.000000000 +0100
@@ -168,7 +168,7 @@
static struct super_block *mqueue_get_sb(struct file_system_type *fs_type,
int flags, const char *dev_name,
- void *data)
+ void *data, struct dentry **_root)
{
return get_sb_single(fs_type, flags, data, mqueue_fill_super);
}
diff -uNr linux-2.6.6/kernel/futex.c linux-2.6.6-getsb/kernel/futex.c
--- linux-2.6.6/kernel/futex.c 2004-05-11 11:27:00.000000000 +0100
+++ linux-2.6.6-getsb/kernel/futex.c 2004-05-18 13:34:41.000000000 +0100
@@ -674,7 +674,7 @@
static struct super_block *
futexfs_get_sb(struct file_system_type *fs_type,
- int flags, const char *dev_name, void *data)
+ int flags, const char *dev_name, void *data, struct dentry **_root)
{
return get_sb_pseudo(fs_type, "futex", NULL, 0xBAD1DEA);
}
diff -uNr linux-2.6.6/mm/shmem.c linux-2.6.6-getsb/mm/shmem.c
--- linux-2.6.6/mm/shmem.c 2004-05-11 11:28:57.000000000 +0100
+++ linux-2.6.6-getsb/mm/shmem.c 2004-05-18 13:36:22.000000000 +0100
@@ -1879,7 +1879,7 @@
};
static struct super_block *shmem_get_sb(struct file_system_type *fs_type,
- int flags, const char *dev_name, void *data)
+ int flags, const char *dev_name, void *data, struct dentry **_root)
{
return get_sb_nodev(fs_type, flags, data, shmem_fill_super);
}
diff -uNr linux-2.6.6/net/socket.c linux-2.6.6-getsb/net/socket.c
--- linux-2.6.6/net/socket.c 2004-05-11 11:28:58.000000000 +0100
+++ linux-2.6.6-getsb/net/socket.c 2004-05-18 13:33:37.000000000 +0100
@@ -323,7 +323,7 @@
};
static struct super_block *sockfs_get_sb(struct file_system_type *fs_type,
- int flags, const char *dev_name, void *data)
+ int flags, const char *dev_name, void *data, struct dentry **_root)
{
return get_sb_pseudo(fs_type, "socket:", &sockfs_ops, SOCKFS_MAGIC);
}
diff -uNr linux-2.6.6/net/sunrpc/rpc_pipe.c linux-2.6.6-getsb/net/sunrpc/rpc_pipe.c
--- linux-2.6.6/net/sunrpc/rpc_pipe.c 2004-05-11 11:26:46.000000000 +0100
+++ linux-2.6.6-getsb/net/sunrpc/rpc_pipe.c 2004-05-18 13:34:18.000000000 +0100
@@ -793,7 +793,7 @@
static struct super_block *
rpc_get_sb(struct file_system_type *fs_type,
- int flags, const char *dev_name, void *data)
+ int flags, const char *dev_name, void *data, struct dentry **_root)
{
return get_sb_single(fs_type, flags, data, rpc_fill_super);
}
diff -uNr linux-2.6.6/security/selinux/selinuxfs.c linux-2.6.6-getsb/security/selinux/selinuxfs.c
--- linux-2.6.6/security/selinux/selinuxfs.c 2004-05-11 11:28:58.000000000 +0100
+++ linux-2.6.6-getsb/security/selinux/selinuxfs.c 2004-05-18 13:36:43.000000000 +0100
@@ -1088,7 +1088,8 @@
}
static struct super_block *sel_get_sb(struct file_system_type *fs_type,
- int flags, const char *dev_name, void *data)
+ int flags, const char *dev_name, void *data,
+ struct dentry **_root)
{
return get_sb_single(fs_type, flags, data, sel_fill_super);
}
^ permalink raw reply [flat|nested] 4+ messages in thread