diff options
| author | Jens Axboe <jens.axboe@oracle.com> | 2008-06-27 03:12:09 -0400 |
|---|---|---|
| committer | Jens Axboe <jens.axboe@oracle.com> | 2008-07-03 07:21:15 -0400 |
| commit | b24498d477a14680fc3bb3ad884fa9fa76a2d237 (patch) | |
| tree | 1ba2c9f24b3f22f45fa424ad904fb6dcc5d67790 /block | |
| parent | 06a452e5b95eb669b7ad414ccf587dfc2d91b217 (diff) | |
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>
Diffstat (limited to 'block')
| -rw-r--r-- | block/blk-integrity.c | 17 |
1 files changed, 7 insertions, 10 deletions
diff --git a/block/blk-integrity.c b/block/blk-integrity.c index 4ffa3814f6a9..3f1a8478cc38 100644 --- a/block/blk-integrity.c +++ b/block/blk-integrity.c | |||
| @@ -217,17 +217,16 @@ static ssize_t integrity_read_store(struct blk_integrity *bi, | |||
| 217 | unsigned long val = simple_strtoul(p, &p, 10); | 217 | unsigned long val = simple_strtoul(p, &p, 10); |
| 218 | 218 | ||
| 219 | if (val) | 219 | if (val) |
| 220 | set_bit(INTEGRITY_FLAG_READ, &bi->flags); | 220 | bi->flags |= INTEGRITY_FLAG_READ; |
| 221 | else | 221 | else |
| 222 | clear_bit(INTEGRITY_FLAG_READ, &bi->flags); | 222 | bi->flags &= ~INTEGRITY_FLAG_READ; |
| 223 | 223 | ||
| 224 | return count; | 224 | return count; |
| 225 | } | 225 | } |
| 226 | 226 | ||
| 227 | static ssize_t integrity_read_show(struct blk_integrity *bi, char *page) | 227 | static ssize_t integrity_read_show(struct blk_integrity *bi, char *page) |
| 228 | { | 228 | { |
| 229 | return sprintf(page, "%d\n", | 229 | return sprintf(page, "%d\n", (bi->flags & INTEGRITY_FLAG_READ) != 0); |
| 230 | test_bit(INTEGRITY_FLAG_READ, &bi->flags) ? 1 : 0); | ||
| 231 | } | 230 | } |
| 232 | 231 | ||
| 233 | static ssize_t integrity_write_store(struct blk_integrity *bi, | 232 | static ssize_t integrity_write_store(struct blk_integrity *bi, |
| @@ -237,17 +236,16 @@ static ssize_t integrity_write_store(struct blk_integrity *bi, | |||
| 237 | unsigned long val = simple_strtoul(p, &p, 10); | 236 | unsigned long val = simple_strtoul(p, &p, 10); |
| 238 | 237 | ||
| 239 | if (val) | 238 | if (val) |
| 240 | set_bit(INTEGRITY_FLAG_WRITE, &bi->flags); | 239 | bi->flags |= INTEGRITY_FLAG_WRITE; |
| 241 | else | 240 | else |
| 242 | clear_bit(INTEGRITY_FLAG_WRITE, &bi->flags); | 241 | bi->flags &= ~INTEGRITY_FLAG_WRITE; |
| 243 | 242 | ||
| 244 | return count; | 243 | return count; |
| 245 | } | 244 | } |
| 246 | 245 | ||
| 247 | static ssize_t integrity_write_show(struct blk_integrity *bi, char *page) | 246 | static ssize_t integrity_write_show(struct blk_integrity *bi, char *page) |
| 248 | { | 247 | { |
| 249 | return sprintf(page, "%d\n", | 248 | return sprintf(page, "%d\n", (bi->flags & INTEGRITY_FLAG_WRITE) != 0); |
| 250 | test_bit(INTEGRITY_FLAG_WRITE, &bi->flags) ? 1 : 0); | ||
| 251 | } | 249 | } |
| 252 | 250 | ||
| 253 | static struct integrity_sysfs_entry integrity_format_entry = { | 251 | static struct integrity_sysfs_entry integrity_format_entry = { |
| @@ -340,8 +338,7 @@ int blk_integrity_register(struct gendisk *disk, struct blk_integrity *template) | |||
| 340 | 338 | ||
| 341 | kobject_uevent(&bi->kobj, KOBJ_ADD); | 339 | kobject_uevent(&bi->kobj, KOBJ_ADD); |
| 342 | 340 | ||
| 343 | set_bit(INTEGRITY_FLAG_READ, &bi->flags); | 341 | bi->flags |= INTEGRITY_FLAG_READ | INTEGRITY_FLAG_WRITE; |
| 344 | set_bit(INTEGRITY_FLAG_WRITE, &bi->flags); | ||
| 345 | bi->sector_size = disk->queue->hardsect_size; | 342 | bi->sector_size = disk->queue->hardsect_size; |
| 346 | disk->integrity = bi; | 343 | disk->integrity = bi; |
| 347 | } else | 344 | } else |
