]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
oracleasm: 4.0 compat changes
authorMartin K. Petersen <martin.petersen@oracle.com>
Wed, 22 Apr 2015 00:06:10 +0000 (20:06 -0400)
committerSantosh Shilimkar <santosh.shilimkar@oracle.com>
Mon, 29 Jun 2015 15:34:53 +0000 (08:34 -0700)
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
block/bio.c
drivers/block/oracleasm/driver.c
drivers/block/oracleasm/masklog.c

index f66a4eae16ee4a96c9469c7a9311de3437a923c5..f4c6a206a025d08bb0bb0d496dfda341c8d47454 100644 (file)
@@ -1395,6 +1395,7 @@ struct bio *bio_map_user_iov(struct request_queue *q,
        bio_put(bio);
        return ERR_PTR(ret);
 }
+EXPORT_SYMBOL(bio_map_user_iov);
 
 static void __bio_unmap_user(struct bio *bio)
 {
index bc13e7c21126abcb4c021d1e2bb0328ede0bad0b..af26fbb2eafe72fd8ec6961eaf4f2ba18a9fbb02 100644 (file)
@@ -269,12 +269,6 @@ static struct transaction_context trans_contexts[] = {
 #endif
 };
 
-static struct backing_dev_info memory_backing_dev_info = {
-       .ra_pages       = 0,    /* No readahead */
-       .capabilities   = BDI_CAP_NO_ACCT_DIRTY | BDI_CAP_NO_WRITEBACK,
-};
-
-
 static struct inode *asmdisk_alloc_inode(struct super_block *sb)
 {
        struct asm_disk_info *d = kmem_cache_alloc(asmdisk_cachep, GFP_KERNEL);
@@ -562,7 +556,6 @@ static int asmfs_create(struct inode *dir, struct dentry *dentry, umode_t mode,
        inode->i_atime = inode->i_mtime = inode->i_ctime = CURRENT_TIME;
        inode->i_op = &asmfs_file_inode_operations;
        inode->i_fop = &asmfs_file_operations;
-       inode->i_mapping->backing_dev_info = &memory_backing_dev_info;
 
        d_instantiate(dentry, inode);
 
@@ -747,6 +740,11 @@ static int asm_open_disk(struct file *file, struct block_device *bdev)
        d = ASMDISK_I(disk_inode);
 
        if (disk_inode->i_state & I_NEW) {
+               struct backing_dev_info *bdi = inode_to_bdi(inode);
+
+               bdi->ra_pages = 0;      /* No readahead */
+               bdi->capabilities = BDI_CAP_NO_ACCT_DIRTY | BDI_CAP_NO_WRITEBACK;
+
                mlog_bug_on_msg(atomic_read(&d->d_ios) != 0,
                                "Supposedly new disk 0x%p (dev %X) has outstanding I/O\n",
                                d, bdev->bd_dev);
@@ -758,8 +756,6 @@ static int asm_open_disk(struct file *file, struct block_device *bdev)
                                "New disk 0x%p has set bdev 0x%p but we were opening 0x%p\n",
                                d, d->d_bdev, bdev);
 
-               disk_inode->i_mapping->backing_dev_info =
-                       &memory_backing_dev_info;
                d->d_max_sectors = compute_max_sectors(bdev);
                d->d_live = 1;
 
@@ -1230,6 +1226,8 @@ static int asm_submit_io(struct file *file,
        struct inode *disk_inode;
        struct block_device *bdev;
        struct oracleasm_integrity_v2 *it;
+       struct iov_iter iter;
+       struct iovec iov;
 
        mlog_entry("(0x%p, 0x%p, 0x%p)\n", file, user_iocp, ioc);
 
@@ -1383,15 +1381,20 @@ static int asm_submit_io(struct file *file,
                goto out_error;
 
        ret = -ENOMEM;
-       r->r_bio = bio_map_user(bdev_get_queue(bdev), bdev,
-                               (unsigned long)ioc->buffer_asm_ioc,
-                               r->r_count, rw == READ, GFP_KERNEL);
+
+       iov.iov_base = (void __user *)ioc->buffer_asm_ioc;
+       iov.iov_len = r->r_count;
+       iov_iter_init(&iter, rw, &iov, 1, r->r_count);
+       r->r_bio = bio_map_user_iov(bdev_get_queue(bdev), &iter, GFP_KERNEL);
+
        if (IS_ERR(r->r_bio)) {
                ret = PTR_ERR(r->r_bio);
                r->r_bio = NULL;
                goto out_error;
        }
 
+       r->r_bio->bi_bdev = bdev;
+
        if (r->r_bio->bi_iter.bi_size != r->r_count) {
                mlog(ML_ERROR|ML_BIO, "Only mapped partial ioc buffer\n");
                bio_unmap_user(r->r_bio);
@@ -2749,7 +2752,6 @@ static int asmfs_fill_super(struct super_block *sb,
        inode->i_atime = inode->i_mtime = inode->i_ctime = CURRENT_TIME;
        inode->i_op = &simple_dir_inode_operations;
        inode->i_fop = &asmfs_dir_operations;
-       inode->i_mapping->backing_dev_info = &memory_backing_dev_info;
        /* directory inodes start off with i_nlink == 2 (for "." entry) */
        set_nlink(inode, inode->i_nlink + 1);
        parent = inode;
@@ -2775,7 +2777,6 @@ static int asmfs_fill_super(struct super_block *sb,
        inode->i_atime = inode->i_mtime = inode->i_ctime = CURRENT_TIME;
        inode->i_op = &asmfs_disk_dir_inode_operations;
        inode->i_fop = &asmfs_dir_operations;
-       inode->i_mapping->backing_dev_info = &memory_backing_dev_info;
        d_add(dentry, inode);
 
        name.name = ASM_MANAGER_INSTANCES;
@@ -2795,7 +2796,6 @@ static int asmfs_fill_super(struct super_block *sb,
        inode->i_atime = inode->i_mtime = inode->i_ctime = CURRENT_TIME;
        inode->i_op = &asmfs_iid_dir_inode_operations;
        inode->i_fop = &asmfs_dir_operations;
-       inode->i_mapping->backing_dev_info = &memory_backing_dev_info;
        d_add(dentry, inode);
 
        name.name = asm_operation_files[ASMOP_QUERY_VERSION];
@@ -2808,7 +2808,6 @@ static int asmfs_fill_super(struct super_block *sb,
                                      &trans_contexts[ASMOP_QUERY_VERSION]);
        if (!inode)
                goto out_genocide;
-       inode->i_mapping->backing_dev_info = &memory_backing_dev_info;
        d_add(dentry, inode);
 
        name.name = asm_operation_files[ASMOP_GET_IID];
@@ -2821,7 +2820,6 @@ static int asmfs_fill_super(struct super_block *sb,
                                      &trans_contexts[ASMOP_GET_IID]);
        if (!inode)
                goto out_genocide;
-       inode->i_mapping->backing_dev_info = &memory_backing_dev_info;
        d_add(dentry, inode);
 
        name.name = asm_operation_files[ASMOP_CHECK_IID];
@@ -2834,7 +2832,6 @@ static int asmfs_fill_super(struct super_block *sb,
                                      &trans_contexts[ASMOP_CHECK_IID]);
        if (!inode)
                goto out_genocide;
-       inode->i_mapping->backing_dev_info = &memory_backing_dev_info;
        d_add(dentry, inode);
 
        name.name = asm_operation_files[ASMOP_QUERY_DISK];
@@ -2847,7 +2844,6 @@ static int asmfs_fill_super(struct super_block *sb,
                                      &trans_contexts[ASMOP_QUERY_DISK]);
        if (!inode)
                goto out_genocide;
-       inode->i_mapping->backing_dev_info = &memory_backing_dev_info;
        d_add(dentry, inode);
 
        sb->s_root = root;
index 9e6c08be0282bee52b6fe726d1d1549c4f471935..acb5c28d52bf3b513ab0582e47ca083f4a499589 100644 (file)
@@ -130,20 +130,20 @@ static ssize_t mlog_fop_write(struct file *filp, const char __user *buf,
                namelen = strlen(name);
 
                if (namelen != masklen
-                   || strnicmp(mask, name, namelen))
+                   || strncasecmp(mask, name, namelen))
                        continue;
                break;
        }
        if (i == ARRAY_SIZE(mlog_bit_names))
                return -EINVAL;
 
-       if (!strnicmp(val, "allow", 5)) {
+       if (!strncasecmp(val, "allow", 5)) {
                __mlog_set_u64((u64)1 << i, mlog_and_bits);
                __mlog_clear_u64((u64)1 << i, mlog_not_bits);
-       } else if (!strnicmp(val, "deny", 4)) {
+       } else if (!strncasecmp(val, "deny", 4)) {
                __mlog_set_u64((u64)1 << i, mlog_not_bits);
                __mlog_clear_u64((u64)1 << i, mlog_and_bits);
-       } else if (!strnicmp(val, "off", 3)) {
+       } else if (!strncasecmp(val, "off", 3)) {
                __mlog_clear_u64((u64)1 << i, mlog_not_bits);
                __mlog_clear_u64((u64)1 << i, mlog_and_bits);
        } else