]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - fs/ubifs/super.c
Merge branch 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel...
[linux.git] / fs / ubifs / super.c
index 4ec051089186ea2aef6bb4f96e22fefa24a10777..e08aa04fc8351ca03db6479f94a33c0fe1ff845b 100644 (file)
@@ -198,7 +198,6 @@ struct inode *ubifs_iget(struct super_block *sb, unsigned long inum)
                }
                memcpy(ui->data, ino->data, ui->data_len);
                ((char *)ui->data)[ui->data_len] = '\0';
-               inode->i_link = ui->data;
                break;
        case S_IFBLK:
        case S_IFCHR:
@@ -380,6 +379,9 @@ static void ubifs_evict_inode(struct inode *inode)
        }
 done:
        clear_inode(inode);
+#ifdef CONFIG_UBIFS_FS_ENCRYPTION
+       fscrypt_put_encryption_info(inode, NULL);
+#endif
 }
 
 static void ubifs_dirty_inode(struct inode *inode, int flags)
@@ -1207,7 +1209,8 @@ static int mount_ubifs(struct ubifs_info *c)
                bu_init(c);
 
        if (!c->ro_mount) {
-               c->write_reserve_buf = kmalloc(COMPRESSED_DATA_NODE_BUF_SZ,
+               c->write_reserve_buf = kmalloc(COMPRESSED_DATA_NODE_BUF_SZ + \
+                                              UBIFS_CIPHER_BLOCK_SIZE,
                                               GFP_KERNEL);
                if (!c->write_reserve_buf)
                        goto out_free;
@@ -1620,7 +1623,8 @@ static int ubifs_remount_rw(struct ubifs_info *c)
                goto out;
        }
 
-       c->write_reserve_buf = kmalloc(COMPRESSED_DATA_NODE_BUF_SZ, GFP_KERNEL);
+       c->write_reserve_buf = kmalloc(COMPRESSED_DATA_NODE_BUF_SZ + \
+                                      UBIFS_CIPHER_BLOCK_SIZE, GFP_KERNEL);
        if (!c->write_reserve_buf) {
                err = -ENOMEM;
                goto out;
@@ -1995,6 +1999,12 @@ static struct ubifs_info *alloc_ubifs_info(struct ubi_volume_desc *ubi)
        return c;
 }
 
+#ifndef CONFIG_UBIFS_FS_ENCRYPTION
+struct fscrypt_operations ubifs_crypt_operations = {
+       .is_encrypted           = __ubifs_crypt_is_encrypted,
+};
+#endif
+
 static int ubifs_fill_super(struct super_block *sb, void *data, int silent)
 {
        struct ubifs_info *c = sb->s_fs_info;
@@ -2041,6 +2051,7 @@ static int ubifs_fill_super(struct super_block *sb, void *data, int silent)
                sb->s_maxbytes = c->max_inode_sz = MAX_LFS_FILESIZE;
        sb->s_op = &ubifs_super_operations;
        sb->s_xattr = ubifs_xattr_handlers;
+       sb->s_cop = &ubifs_crypt_operations;
 
        mutex_lock(&c->umount_mutex);
        err = mount_ubifs(c);