fedora core 6 1.2949 + vserver 2.2.0
[linux-2.6.git] / fs / jfs / super.c
index b84a6ec..35a7cc7 100644 (file)
@@ -4,16 +4,16 @@
  *
  *   This program is free software;  you can redistribute it and/or modify
  *   it under the terms of the GNU General Public License as published by
- *   the Free Software Foundation; either version 2 of the License, or 
+ *   the Free Software Foundation; either version 2 of the License, or
  *   (at your option) any later version.
- * 
+ *
  *   This program is distributed in the hope that it will be useful,
  *   but WITHOUT ANY WARRANTY;  without even the implied warranty of
  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See
  *   the GNU General Public License for more details.
  *
  *   You should have received a copy of the GNU General Public License
- *   along with this program;  if not, write to the Free Software 
+ *   along with this program;  if not, write to the Free Software
  *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  */
 
@@ -44,7 +44,7 @@ MODULE_DESCRIPTION("The Journaled Filesystem (JFS)");
 MODULE_AUTHOR("Steve Best/Dave Kleikamp/Barry Arndt, IBM");
 MODULE_LICENSE("GPL");
 
-static kmem_cache_t * jfs_inode_cachep;
+static struct kmem_cache * jfs_inode_cachep;
 
 static struct super_operations jfs_super_operations;
 static struct export_operations jfs_export_operations;
@@ -82,7 +82,7 @@ static void jfs_handle_error(struct super_block *sb)
                        "as read-only\n",
                        sb->s_id);
                sb->s_flags |= MS_RDONLY;
-       } 
+       }
 
        /* nothing is done for continue beyond marking the superblock dirty */
 }
@@ -93,7 +93,7 @@ void jfs_error(struct super_block *sb, const char * function, ...)
        va_list args;
 
        va_start(args, function);
-       vsprintf(error_buf, function, args);
+       vsnprintf(error_buf, sizeof(error_buf), function, args);
        va_end(args);
 
        printk(KERN_ERR "ERROR: (device %s): %s\n", sb->s_id, error_buf);
@@ -195,7 +195,7 @@ enum {
        Opt_integrity, Opt_nointegrity, Opt_iocharset, Opt_resize,
        Opt_resize_nosize, Opt_errors, Opt_ignore, Opt_err, Opt_quota,
        Opt_usrquota, Opt_grpquota, Opt_uid, Opt_gid, Opt_umask,
-       Opt_tagxid
+       Opt_tag, Opt_notag, Opt_tagid
 };
 
 static match_table_t tokens = {
@@ -205,7 +205,10 @@ static match_table_t tokens = {
        {Opt_resize, "resize=%u"},
        {Opt_resize_nosize, "resize"},
        {Opt_errors, "errors=%s"},
-       {Opt_tagxid, "tagxid"},
+       {Opt_tag, "tag"},
+       {Opt_notag, "notag"},
+       {Opt_tagid, "tagid=%u"},
+       {Opt_tag, "tagxid"},
        {Opt_ignore, "noquota"},
        {Opt_ignore, "quota"},
        {Opt_usrquota, "usrquota"},
@@ -341,8 +344,17 @@ static int parse_options(char *options, struct super_block *sb, s64 *newLVSize,
                        break;
                }
 #ifndef CONFIG_TAGGING_NONE
-               case Opt_tagxid:
-                       *flag |= JFS_TAGXID;
+               case Opt_tag:
+                       *flag |= JFS_TAGGED;
+                       break;
+               case Opt_notag:
+                       *flag &= JFS_TAGGED;
+                       break;
+#endif
+#ifdef CONFIG_PROPAGATE
+               case Opt_tagid:
+                       /* use args[0] */
+                       *flag |= JFS_TAGGED;
                        break;
 #endif
                default:
@@ -376,8 +388,8 @@ static int jfs_remount(struct super_block *sb, int *flags, char *data)
                return -EINVAL;
        }
 
-       if ((flag & JFS_TAGXID) && !(sb->s_flags & MS_TAGXID)) {
-               printk(KERN_ERR "JFS: %s: tagxid not permitted on remount.\n",
+       if ((flag & JFS_TAGGED) && !(sb->s_flags & MS_TAGGED)) {
+               printk(KERN_ERR "JFS: %s: tagging not permitted on remount.\n",
                        sb->s_id);
                return -EINVAL;
        }
@@ -436,7 +448,7 @@ static int jfs_fill_super(struct super_block *sb, void *data, int silent)
 
        sbi = kzalloc(sizeof (struct jfs_sb_info), GFP_KERNEL);
        if (!sbi)
-               return -ENOSPC;
+               return -ENOMEM;
        sb->s_fs_info = sbi;
        sbi->sb = sb;
        sbi->uid = sbi->gid = sbi->umask = -1;
@@ -454,8 +466,8 @@ static int jfs_fill_super(struct super_block *sb, void *data, int silent)
        sb->s_flags |= MS_POSIXACL;
 #endif
        /* map mount option tagxid */
-       if (sbi->flag & JFS_TAGXID)
-               sb->s_flags |= MS_TAGXID;
+       if (sbi->flag & JFS_TAGGED)
+               sb->s_flags |= MS_TAGGED;
 
        if (newLVSize) {
                printk(KERN_ERR "resize option for remount only\n");
@@ -765,7 +777,7 @@ static struct file_system_type jfs_fs_type = {
        .fs_flags       = FS_REQUIRES_DEV,
 };
 
-static void init_once(void *foo, kmem_cache_t * cachep, unsigned long flags)
+static void init_once(void *foo, struct kmem_cache * cachep, unsigned long flags)
 {
        struct jfs_inode_info *jfs_ip = (struct jfs_inode_info *) foo;
 
@@ -792,7 +804,7 @@ static int __init init_jfs_fs(void)
        int rc;
 
        jfs_inode_cachep =
-           kmem_cache_create("jfs_ip", sizeof(struct jfs_inode_info), 0, 
+           kmem_cache_create("jfs_ip", sizeof(struct jfs_inode_info), 0,
                            SLAB_RECLAIM_ACCOUNT|SLAB_MEM_SPREAD,
                            init_once, NULL);
        if (jfs_inode_cachep == NULL)