Skip to content

Commit

Permalink
block: invert the BLK_INTEGRITY_{GENERATE,VERIFY} flags
Browse files Browse the repository at this point in the history
Invert the flags so that user set values will be able to persist
revalidating the integrity information once we switch the integrity
information to queue_limits.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com>
Reviewed-by: Hannes Reinecke <hare@suse.de>
Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com>
Link: https://lore.kernel.org/r/20240613084839.1044015-12-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk>
  • Loading branch information
Christoph Hellwig authored and Jens Axboe committed Jun 14, 2024
1 parent 3c3e85d commit 9f4aa46
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 13 deletions.
4 changes: 2 additions & 2 deletions block/bio-integrity.c
Original file line number Diff line number Diff line change
Expand Up @@ -448,10 +448,10 @@ bool bio_integrity_prep(struct bio *bio)
return true;

if (bio_data_dir(bio) == READ) {
if (!(bi->flags & BLK_INTEGRITY_VERIFY))
if (bi->flags & BLK_INTEGRITY_NOVERIFY)
return true;
} else {
if (!(bi->flags & BLK_INTEGRITY_GENERATE))
if (bi->flags & BLK_INTEGRITY_NOGENERATE)
return true;

/*
Expand Down
18 changes: 9 additions & 9 deletions block/blk-integrity.c
Original file line number Diff line number Diff line change
Expand Up @@ -254,10 +254,11 @@ static ssize_t flag_store(struct device *dev, struct device_attribute *attr,
if (err)
return err;

/* the flags are inverted vs the values in the sysfs files */
if (val)
bi->flags |= flag;
else
bi->flags &= ~flag;
else
bi->flags |= flag;
return count;
}

Expand All @@ -266,7 +267,7 @@ static ssize_t flag_show(struct device *dev, struct device_attribute *attr,
{
struct blk_integrity *bi = dev_to_bi(dev);

return sysfs_emit(page, "%d\n", !!(bi->flags & flag));
return sysfs_emit(page, "%d\n", !(bi->flags & flag));
}

static ssize_t format_show(struct device *dev, struct device_attribute *attr,
Expand Down Expand Up @@ -301,26 +302,26 @@ static ssize_t read_verify_store(struct device *dev,
struct device_attribute *attr,
const char *page, size_t count)
{
return flag_store(dev, attr, page, count, BLK_INTEGRITY_VERIFY);
return flag_store(dev, attr, page, count, BLK_INTEGRITY_NOVERIFY);
}

static ssize_t read_verify_show(struct device *dev,
struct device_attribute *attr, char *page)
{
return flag_show(dev, attr, page, BLK_INTEGRITY_VERIFY);
return flag_show(dev, attr, page, BLK_INTEGRITY_NOVERIFY);
}

static ssize_t write_generate_store(struct device *dev,
struct device_attribute *attr,
const char *page, size_t count)
{
return flag_store(dev, attr, page, count, BLK_INTEGRITY_GENERATE);
return flag_store(dev, attr, page, count, BLK_INTEGRITY_NOGENERATE);
}

static ssize_t write_generate_show(struct device *dev,
struct device_attribute *attr, char *page)
{
return flag_show(dev, attr, page, BLK_INTEGRITY_GENERATE);
return flag_show(dev, attr, page, BLK_INTEGRITY_NOGENERATE);
}

static ssize_t device_is_integrity_capable_show(struct device *dev,
Expand Down Expand Up @@ -371,8 +372,7 @@ void blk_integrity_register(struct gendisk *disk, struct blk_integrity *template
struct blk_integrity *bi = &disk->queue->integrity;

bi->csum_type = template->csum_type;
bi->flags = BLK_INTEGRITY_VERIFY | BLK_INTEGRITY_GENERATE |
template->flags;
bi->flags = template->flags;
bi->interval_exp = template->interval_exp ? :
ilog2(queue_logical_block_size(disk->queue));
bi->tuple_size = template->tuple_size;
Expand Down
4 changes: 2 additions & 2 deletions include/linux/blk-integrity.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@
struct request;

enum blk_integrity_flags {
BLK_INTEGRITY_VERIFY = 1 << 0,
BLK_INTEGRITY_GENERATE = 1 << 1,
BLK_INTEGRITY_NOVERIFY = 1 << 0,
BLK_INTEGRITY_NOGENERATE = 1 << 1,
BLK_INTEGRITY_DEVICE_CAPABLE = 1 << 2,
BLK_INTEGRITY_REF_TAG = 1 << 3,
};
Expand Down

0 comments on commit 9f4aa46

Please sign in to comment.