aboutsummaryrefslogtreecommitdiffstats
path: root/fs/gfs2/incore.h
diff options
context:
space:
mode:
authorSteven Whitehouse <swhiteho@redhat.com>2008-08-08 08:45:13 -0400
committerSteven Whitehouse <swhiteho@redhat.com>2008-08-13 04:59:40 -0400
commit9b8df98fc8973ad1c5f0d7c4cf71c7fb84fe22c5 (patch)
tree6a0445afd83d0f7a63a301c2e146647abf59ad82 /fs/gfs2/incore.h
parentc1e817d03a7de57a963654c35e6e80af9a5dbff5 (diff)
GFS2: Fix metafs mounts
This patch is intended to fix the issues reported in bz #457798. Instead of having the metafs as a separate filesystem, it becomes a second root of gfs2. As a result it will appear as type gfs2 in /proc/mounts, but it is still possible (for backwards compatibility purposes) to mount it as type gfs2meta. A new mount flag "meta" is introduced so that its possible to tell the two cases apart in /proc/mounts. As a result it becomes possible to mount type gfs2 with -o meta and get the same result as mounting type gfs2meta. So it is possible to mount just the metafs on its own. Currently if you do this, its then impossible to mount the "normal" root of the gfs2 filesystem without first unmounting the metafs root. I'm not sure if thats a feature or a bug :-) Either way, this is a great improvement on the previous scheme and I've verified that it works ok with bind mounts on both the "normal" root and the metafs root in various combinations. There were also a bunch of functions in super.c which didn't belong there, so this moves them into ops_fstype.c where they can be static. Hopefully the mount/umount sequence is now more obvious as a result. Signed-off-by: Steven Whitehouse <swhiteho@redhat.com> Cc: Alexander Viro <aviro@redhat.com>
Diffstat (limited to 'fs/gfs2/incore.h')
-rw-r--r--fs/gfs2/incore.h7
1 files changed, 4 insertions, 3 deletions
diff --git a/fs/gfs2/incore.h b/fs/gfs2/incore.h
index 448697a5c462..a1777a1927b3 100644
--- a/fs/gfs2/incore.h
+++ b/fs/gfs2/incore.h
@@ -400,6 +400,7 @@ struct gfs2_args {
400 int ar_quota; /* off/account/on */ 400 int ar_quota; /* off/account/on */
401 int ar_suiddir; /* suiddir support */ 401 int ar_suiddir; /* suiddir support */
402 int ar_data; /* ordered/writeback */ 402 int ar_data; /* ordered/writeback */
403 int ar_meta; /* mount metafs */
403}; 404};
404 405
405struct gfs2_tune { 406struct gfs2_tune {
@@ -461,7 +462,6 @@ struct gfs2_sb_host {
461 462
462struct gfs2_sbd { 463struct gfs2_sbd {
463 struct super_block *sd_vfs; 464 struct super_block *sd_vfs;
464 struct super_block *sd_vfs_meta;
465 struct kobject sd_kobj; 465 struct kobject sd_kobj;
466 unsigned long sd_flags; /* SDF_... */ 466 unsigned long sd_flags; /* SDF_... */
467 struct gfs2_sb_host sd_sb; 467 struct gfs2_sb_host sd_sb;
@@ -499,7 +499,9 @@ struct gfs2_sbd {
499 499
500 /* Inode Stuff */ 500 /* Inode Stuff */
501 501
502 struct inode *sd_master_dir; 502 struct dentry *sd_master_dir;
503 struct dentry *sd_root_dir;
504
503 struct inode *sd_jindex; 505 struct inode *sd_jindex;
504 struct inode *sd_inum_inode; 506 struct inode *sd_inum_inode;
505 struct inode *sd_statfs_inode; 507 struct inode *sd_statfs_inode;
@@ -634,7 +636,6 @@ struct gfs2_sbd {
634 /* Debugging crud */ 636 /* Debugging crud */
635 637
636 unsigned long sd_last_warning; 638 unsigned long sd_last_warning;
637 struct vfsmount *sd_gfs2mnt;
638 struct dentry *debugfs_dir; /* debugfs directory */ 639 struct dentry *debugfs_dir; /* debugfs directory */
639 struct dentry *debugfs_dentry_glocks; /* for debugfs */ 640 struct dentry *debugfs_dentry_glocks; /* for debugfs */
640}; 641};