From: Martin K. Petersen Date: Wed, 22 Apr 2015 00:06:10 +0000 (-0400) Subject: oracleasm: 4.0 compat changes X-Git-Tag: v4.1.12-92~323^2~6 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=7f24713e706efc1350189dd66d82700bc0c2d7fc;p=users%2Fjedix%2Flinux-maple.git oracleasm: 4.0 compat changes Signed-off-by: Martin K. Petersen --- diff --git a/block/bio.c b/block/bio.c index f66a4eae16ee4..f4c6a206a025d 100644 --- a/block/bio.c +++ b/block/bio.c @@ -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) { diff --git a/drivers/block/oracleasm/driver.c b/drivers/block/oracleasm/driver.c index bc13e7c21126a..af26fbb2eafe7 100644 --- a/drivers/block/oracleasm/driver.c +++ b/drivers/block/oracleasm/driver.c @@ -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; diff --git a/drivers/block/oracleasm/masklog.c b/drivers/block/oracleasm/masklog.c index 9e6c08be0282b..acb5c28d52bf3 100644 --- a/drivers/block/oracleasm/masklog.c +++ b/drivers/block/oracleasm/masklog.c @@ -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