block: remove the discard_alignment field from struct hd_struct
authorChristoph Hellwig <hch@lst.de>
Mon, 31 Aug 2020 18:02:34 +0000 (20:02 +0200)
committerJens Axboe <axboe@kernel.dk>
Tue, 1 Sep 2020 22:49:26 +0000 (16:49 -0600)
The alignment offset is only used in slow path callers, so just calculate
it on the fly.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
block/partitions/core.c
include/linux/blkdev.h
include/linux/genhd.h

index 94c2fb3..e596a85 100644 (file)
@@ -209,7 +209,10 @@ static ssize_t part_discard_alignment_show(struct device *dev,
                                           struct device_attribute *attr, char *buf)
 {
        struct hd_struct *p = dev_to_part(dev);
-       return sprintf(buf, "%u\n", p->discard_alignment);
+
+       return sprintf(buf, "%u\n",
+               queue_limit_discard_alignment(&part_to_disk(p)->queue->limits,
+                               p->start_sect));
 }
 
 static DEVICE_ATTR(partition, 0444, part_partition_show, NULL);
@@ -408,8 +411,6 @@ static struct hd_struct *add_partition(struct gendisk *disk, int partno,
        pdev = part_to_dev(p);
 
        p->start_sect = start;
-       p->discard_alignment =
-               queue_limit_discard_alignment(&disk->queue->limits, start);
        p->nr_sects = len;
        p->partno = partno;
        p->policy = get_disk_ro(disk);
index ba1f5f5..d0d61bc 100644 (file)
@@ -1498,8 +1498,8 @@ static inline int bdev_discard_alignment(struct block_device *bdev)
        struct request_queue *q = bdev_get_queue(bdev);
 
        if (bdev != bdev->bd_contains)
-               return bdev->bd_part->discard_alignment;
-
+               return queue_limit_discard_alignment(&q->limits,
+                               bdev->bd_part->start_sect);
        return q->limits.discard_alignment;
 }
 
index bfa411c..9ea2ca3 100644 (file)
@@ -65,7 +65,6 @@ struct hd_struct {
        struct disk_stats __percpu *dkstats;
        struct percpu_ref ref;
 
-       unsigned int discard_alignment;
        struct device __dev;
        struct kobject *holder_dir;
        int policy, partno;