]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - mm/shmem.c
Merge remote-tracking branch 'powerpc/next'
[karo-tx-linux.git] / mm / shmem.c
index e43dc555069dbe609cd1afae76e56fc4b38e4951..8297623fcaedec21b37b5080d376967e673afe92 100644 (file)
@@ -1205,7 +1205,7 @@ repeat:
                                                gfp & GFP_RECLAIM_MASK);
                if (error)
                        goto decused;
-               error = radix_tree_preload(gfp & GFP_RECLAIM_MASK);
+               error = radix_tree_maybe_preload(gfp & GFP_RECLAIM_MASK);
                if (!error) {
                        error = shmem_add_to_page_cache(page, mapping, index,
                                                        gfp, NULL);
@@ -2615,13 +2615,15 @@ int shmem_fill_super(struct super_block *sb, void *data, int silent)
         * tmpfs instance, limiting inodes to one per page of lowmem;
         * but the internal instance is left unlimited.
         */
-       if (!(sb->s_flags & MS_NOUSER)) {
+       if (!(sb->s_flags & MS_KERNMOUNT)) {
                sbinfo->max_blocks = shmem_default_max_blocks();
                sbinfo->max_inodes = shmem_default_max_inodes();
                if (shmem_parse_options(data, sbinfo, false)) {
                        err = -EINVAL;
                        goto failed;
                }
+       } else {
+               sb->s_flags |= MS_NOUSER;
        }
        sb->s_export_op = &shmem_export_ops;
        sb->s_flags |= MS_NOSEC;
@@ -2817,6 +2819,10 @@ int __init shmem_init(void)
 {
        int error;
 
+       /* If rootfs called this, don't re-init */
+       if (shmem_inode_cachep)
+               return 0;
+
        error = bdi_init(&shmem_backing_dev_info);
        if (error)
                goto out4;
@@ -2831,8 +2837,7 @@ int __init shmem_init(void)
                goto out2;
        }
 
-       shm_mnt = vfs_kern_mount(&shmem_fs_type, MS_NOUSER,
-                                shmem_fs_type.name, NULL);
+       shm_mnt = kern_mount(&shmem_fs_type);
        if (IS_ERR(shm_mnt)) {
                error = PTR_ERR(shm_mnt);
                printk(KERN_ERR "Could not kern_mount tmpfs\n");