block: integrity flags can't use bit ops on unsigned short
Just use normal open coded bit operations instead, they need not be atomic. Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
This commit is contained in:
parent
06a452e5b9
commit
b24498d477
|
@ -217,17 +217,16 @@ static ssize_t integrity_read_store(struct blk_integrity *bi,
|
||||||
unsigned long val = simple_strtoul(p, &p, 10);
|
unsigned long val = simple_strtoul(p, &p, 10);
|
||||||
|
|
||||||
if (val)
|
if (val)
|
||||||
set_bit(INTEGRITY_FLAG_READ, &bi->flags);
|
bi->flags |= INTEGRITY_FLAG_READ;
|
||||||
else
|
else
|
||||||
clear_bit(INTEGRITY_FLAG_READ, &bi->flags);
|
bi->flags &= ~INTEGRITY_FLAG_READ;
|
||||||
|
|
||||||
return count;
|
return count;
|
||||||
}
|
}
|
||||||
|
|
||||||
static ssize_t integrity_read_show(struct blk_integrity *bi, char *page)
|
static ssize_t integrity_read_show(struct blk_integrity *bi, char *page)
|
||||||
{
|
{
|
||||||
return sprintf(page, "%d\n",
|
return sprintf(page, "%d\n", (bi->flags & INTEGRITY_FLAG_READ) != 0);
|
||||||
test_bit(INTEGRITY_FLAG_READ, &bi->flags) ? 1 : 0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static ssize_t integrity_write_store(struct blk_integrity *bi,
|
static ssize_t integrity_write_store(struct blk_integrity *bi,
|
||||||
|
@ -237,17 +236,16 @@ static ssize_t integrity_write_store(struct blk_integrity *bi,
|
||||||
unsigned long val = simple_strtoul(p, &p, 10);
|
unsigned long val = simple_strtoul(p, &p, 10);
|
||||||
|
|
||||||
if (val)
|
if (val)
|
||||||
set_bit(INTEGRITY_FLAG_WRITE, &bi->flags);
|
bi->flags |= INTEGRITY_FLAG_WRITE;
|
||||||
else
|
else
|
||||||
clear_bit(INTEGRITY_FLAG_WRITE, &bi->flags);
|
bi->flags &= ~INTEGRITY_FLAG_WRITE;
|
||||||
|
|
||||||
return count;
|
return count;
|
||||||
}
|
}
|
||||||
|
|
||||||
static ssize_t integrity_write_show(struct blk_integrity *bi, char *page)
|
static ssize_t integrity_write_show(struct blk_integrity *bi, char *page)
|
||||||
{
|
{
|
||||||
return sprintf(page, "%d\n",
|
return sprintf(page, "%d\n", (bi->flags & INTEGRITY_FLAG_WRITE) != 0);
|
||||||
test_bit(INTEGRITY_FLAG_WRITE, &bi->flags) ? 1 : 0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct integrity_sysfs_entry integrity_format_entry = {
|
static struct integrity_sysfs_entry integrity_format_entry = {
|
||||||
|
@ -340,8 +338,7 @@ int blk_integrity_register(struct gendisk *disk, struct blk_integrity *template)
|
||||||
|
|
||||||
kobject_uevent(&bi->kobj, KOBJ_ADD);
|
kobject_uevent(&bi->kobj, KOBJ_ADD);
|
||||||
|
|
||||||
set_bit(INTEGRITY_FLAG_READ, &bi->flags);
|
bi->flags |= INTEGRITY_FLAG_READ | INTEGRITY_FLAG_WRITE;
|
||||||
set_bit(INTEGRITY_FLAG_WRITE, &bi->flags);
|
|
||||||
bi->sector_size = disk->queue->hardsect_size;
|
bi->sector_size = disk->queue->hardsect_size;
|
||||||
disk->integrity = bi;
|
disk->integrity = bi;
|
||||||
} else
|
} else
|
||||||
|
|
|
@ -870,8 +870,8 @@ void kblockd_flush_work(struct work_struct *work);
|
||||||
|
|
||||||
#if defined(CONFIG_BLK_DEV_INTEGRITY)
|
#if defined(CONFIG_BLK_DEV_INTEGRITY)
|
||||||
|
|
||||||
#define INTEGRITY_FLAG_READ 1 /* verify data integrity on read */
|
#define INTEGRITY_FLAG_READ 2 /* verify data integrity on read */
|
||||||
#define INTEGRITY_FLAG_WRITE 2 /* generate data integrity on write */
|
#define INTEGRITY_FLAG_WRITE 4 /* generate data integrity on write */
|
||||||
|
|
||||||
struct blk_integrity_exchg {
|
struct blk_integrity_exchg {
|
||||||
void *prot_buf;
|
void *prot_buf;
|
||||||
|
@ -940,11 +940,11 @@ static inline int bdev_integrity_enabled(struct block_device *bdev, int rw)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if (rw == READ && bi->verify_fn != NULL &&
|
if (rw == READ && bi->verify_fn != NULL &&
|
||||||
test_bit(INTEGRITY_FLAG_READ, &bi->flags))
|
(bi->flags & INTEGRITY_FLAG_READ))
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
if (rw == WRITE && bi->generate_fn != NULL &&
|
if (rw == WRITE && bi->generate_fn != NULL &&
|
||||||
test_bit(INTEGRITY_FLAG_WRITE, &bi->flags))
|
(bi->flags & INTEGRITY_FLAG_WRITE))
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
Loading…
Reference in New Issue