]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - fs/minix/inode.c
Merge branch 'x86-mce-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git...
[karo-tx-linux.git] / fs / minix / inode.c
index fa8b612b8ce29eb0c16b6dccf8a61eb1b1a6f283..fcb05d2c6b5f99cd4a26031668fe5e06de915d8c 100644 (file)
@@ -190,24 +190,24 @@ static int minix_fill_super(struct super_block *s, void *data, int silent)
                sbi->s_version = MINIX_V1;
                sbi->s_dirsize = 16;
                sbi->s_namelen = 14;
-               sbi->s_link_max = MINIX_LINK_MAX;
+               s->s_max_links = MINIX_LINK_MAX;
        } else if (s->s_magic == MINIX_SUPER_MAGIC2) {
                sbi->s_version = MINIX_V1;
                sbi->s_dirsize = 32;
                sbi->s_namelen = 30;
-               sbi->s_link_max = MINIX_LINK_MAX;
+               s->s_max_links = MINIX_LINK_MAX;
        } else if (s->s_magic == MINIX2_SUPER_MAGIC) {
                sbi->s_version = MINIX_V2;
                sbi->s_nzones = ms->s_zones;
                sbi->s_dirsize = 16;
                sbi->s_namelen = 14;
-               sbi->s_link_max = MINIX2_LINK_MAX;
+               s->s_max_links = MINIX2_LINK_MAX;
        } else if (s->s_magic == MINIX2_SUPER_MAGIC2) {
                sbi->s_version = MINIX_V2;
                sbi->s_nzones = ms->s_zones;
                sbi->s_dirsize = 32;
                sbi->s_namelen = 30;
-               sbi->s_link_max = MINIX2_LINK_MAX;
+               s->s_max_links = MINIX2_LINK_MAX;
        } else if ( *(__u16 *)(bh->b_data + 24) == MINIX3_SUPER_MAGIC) {
                m3s = (struct minix3_super_block *) bh->b_data;
                s->s_magic = m3s->s_magic;
@@ -221,9 +221,9 @@ static int minix_fill_super(struct super_block *s, void *data, int silent)
                sbi->s_dirsize = 64;
                sbi->s_namelen = 60;
                sbi->s_version = MINIX_V3;
-               sbi->s_link_max = MINIX2_LINK_MAX;
                sbi->s_mount_state = MINIX_VALID_FS;
                sb_set_blocksize(s, m3s->s_blocksize);
+               s->s_max_links = MINIX2_LINK_MAX;
        } else
                goto out_no_fs;
 
@@ -254,14 +254,6 @@ static int minix_fill_super(struct super_block *s, void *data, int silent)
        minix_set_bit(0,sbi->s_imap[0]->b_data);
        minix_set_bit(0,sbi->s_zmap[0]->b_data);
 
-       /* set up enough so that it can read an inode */
-       s->s_op = &minix_sops;
-       root_inode = minix_iget(s, MINIX_ROOT_INO);
-       if (IS_ERR(root_inode)) {
-               ret = PTR_ERR(root_inode);
-               goto out_no_root;
-       }
-
        /* Apparently minix can create filesystems that allocate more blocks for
         * the bitmaps than needed.  We simply ignore that, but verify it didn't
         * create one with not enough blocks and bail out if so.
@@ -270,7 +262,7 @@ static int minix_fill_super(struct super_block *s, void *data, int silent)
        if (sbi->s_imap_blocks < block) {
                printk("MINIX-fs: file system does not have enough "
                                "imap blocks allocated.  Refusing to mount\n");
-               goto out_iput;
+               goto out_no_bitmap;
        }
 
        block = minix_blocks_needed(
@@ -279,13 +271,21 @@ static int minix_fill_super(struct super_block *s, void *data, int silent)
        if (sbi->s_zmap_blocks < block) {
                printk("MINIX-fs: file system does not have enough "
                                "zmap blocks allocated.  Refusing to mount.\n");
-               goto out_iput;
+               goto out_no_bitmap;
+       }
+
+       /* set up enough so that it can read an inode */
+       s->s_op = &minix_sops;
+       root_inode = minix_iget(s, MINIX_ROOT_INO);
+       if (IS_ERR(root_inode)) {
+               ret = PTR_ERR(root_inode);
+               goto out_no_root;
        }
 
        ret = -ENOMEM;
-       s->s_root = d_alloc_root(root_inode);
+       s->s_root = d_make_root(root_inode);
        if (!s->s_root)
-               goto out_iput;
+               goto out_no_root;
 
        if (!(s->s_flags & MS_RDONLY)) {
                if (sbi->s_version != MINIX_V3) /* s_state is now out from V3 sb */
@@ -301,10 +301,6 @@ static int minix_fill_super(struct super_block *s, void *data, int silent)
 
        return 0;
 
-out_iput:
-       iput(root_inode);
-       goto out_freemap;
-
 out_no_root:
        if (!silent)
                printk("MINIX-fs: get root inode failed\n");