Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a1706ac4 authored by Jens Axboe's avatar Jens Axboe
Browse files

Revert "block: Remove extra discard_alignment from hd_struct."

It was not a good idea to start dereferencing disk->queue from
the fs sysfs strategy for displaying discard alignment. We ran
into first a NULL pointer deref, and after fixing that we sometimes
see unvalid disk->queue pointer values.

Since discard is the only one of the bunch actually looking into
the queue, just revert the change.

This reverts commit 23ceb5b7.

Conflicts:
	fs/partitions/check.c
parent 5988ce23
Loading
Loading
Loading
Loading
+3 −7
Original line number Diff line number Diff line
@@ -255,13 +255,7 @@ ssize_t part_discard_alignment_show(struct device *dev,
				   struct device_attribute *attr, char *buf)
{
	struct hd_struct *p = dev_to_part(dev);
	struct gendisk *disk = dev_to_disk(dev);
	unsigned int alignment = 0;

	if (disk->queue)
		alignment = queue_limit_discard_alignment(&disk->queue->limits,
								p->start_sect);
	return sprintf(buf, "%u\n", alignment);
	return sprintf(buf, "%u\n", p->discard_alignment);
}

ssize_t part_stat_show(struct device *dev,
@@ -455,6 +449,8 @@ struct hd_struct *add_partition(struct gendisk *disk, int partno,
	p->start_sect = start;
	p->alignment_offset =
		queue_limit_alignment_offset(&disk->queue->limits, 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);
+1 −0
Original line number Diff line number Diff line
@@ -100,6 +100,7 @@ struct hd_struct {
	sector_t start_sect;
	sector_t nr_sects;
	sector_t alignment_offset;
	unsigned int discard_alignment;
	struct device __dev;
	struct kobject *holder_dir;
	int policy, partno;