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

Commit eddb2e26 authored by Tejun Heo's avatar Tejun Heo Committed by Jens Axboe
Browse files

block: kill GENHD_FL_FAIL and use part0->make_it_fail



GENHD_FL_FAIL for disk is what make_it_fail is for parts.  Kill it and
use part0->make_it_fail.  Sysfs node handling is unified too.

Signed-off-by: default avatarTejun Heo <tj@kernel.org>
Signed-off-by: default avatarJens Axboe <jens.axboe@oracle.com>
parent 0762b8bd
Loading
Loading
Loading
Loading
+3 −2
Original line number Original line Diff line number Diff line
@@ -1273,8 +1273,9 @@ __setup("fail_make_request=", setup_fail_make_request);


static int should_fail_request(struct bio *bio)
static int should_fail_request(struct bio *bio)
{
{
	if ((bio->bi_bdev->bd_disk->flags & GENHD_FL_FAIL) ||
	struct hd_struct *part = bio->bi_bdev->bd_part;
	    bio->bi_bdev->bd_part->make_it_fail)

	if (part_to_disk(part)->part0.make_it_fail || part->make_it_fail)
		return should_fail(&fail_make_request, bio->bi_size);
		return should_fail(&fail_make_request, bio->bi_size);


	return 0;
	return 0;
+1 −29
Original line number Original line Diff line number Diff line
@@ -795,34 +795,6 @@ static ssize_t disk_stat_show(struct device *dev,
		jiffies_to_msecs(disk_stat_read(disk, time_in_queue)));
		jiffies_to_msecs(disk_stat_read(disk, time_in_queue)));
}
}


#ifdef CONFIG_FAIL_MAKE_REQUEST
static ssize_t disk_fail_show(struct device *dev,
			      struct device_attribute *attr, char *buf)
{
	struct gendisk *disk = dev_to_disk(dev);

	return sprintf(buf, "%d\n", disk->flags & GENHD_FL_FAIL ? 1 : 0);
}

static ssize_t disk_fail_store(struct device *dev,
			       struct device_attribute *attr,
			       const char *buf, size_t count)
{
	struct gendisk *disk = dev_to_disk(dev);
	int i;

	if (count > 0 && sscanf(buf, "%d", &i) > 0) {
		if (i == 0)
			disk->flags &= ~GENHD_FL_FAIL;
		else
			disk->flags |= GENHD_FL_FAIL;
	}

	return count;
}

#endif

static DEVICE_ATTR(range, S_IRUGO, disk_range_show, NULL);
static DEVICE_ATTR(range, S_IRUGO, disk_range_show, NULL);
static DEVICE_ATTR(ext_range, S_IRUGO, disk_ext_range_show, NULL);
static DEVICE_ATTR(ext_range, S_IRUGO, disk_ext_range_show, NULL);
static DEVICE_ATTR(removable, S_IRUGO, disk_removable_show, NULL);
static DEVICE_ATTR(removable, S_IRUGO, disk_removable_show, NULL);
@@ -832,7 +804,7 @@ static DEVICE_ATTR(capability, S_IRUGO, disk_capability_show, NULL);
static DEVICE_ATTR(stat, S_IRUGO, disk_stat_show, NULL);
static DEVICE_ATTR(stat, S_IRUGO, disk_stat_show, NULL);
#ifdef CONFIG_FAIL_MAKE_REQUEST
#ifdef CONFIG_FAIL_MAKE_REQUEST
static struct device_attribute dev_attr_fail =
static struct device_attribute dev_attr_fail =
	__ATTR(make-it-fail, S_IRUGO|S_IWUSR, disk_fail_show, disk_fail_store);
	__ATTR(make-it-fail, S_IRUGO|S_IWUSR, part_fail_show, part_fail_store);
#endif
#endif


static struct attribute *disk_attrs[] = {
static struct attribute *disk_attrs[] = {
+5 −5
Original line number Original line Diff line number Diff line
@@ -238,7 +238,7 @@ static ssize_t part_stat_show(struct device *dev,
}
}


#ifdef CONFIG_FAIL_MAKE_REQUEST
#ifdef CONFIG_FAIL_MAKE_REQUEST
static ssize_t part_fail_show(struct device *dev,
ssize_t part_fail_show(struct device *dev,
		       struct device_attribute *attr, char *buf)
		       struct device_attribute *attr, char *buf)
{
{
	struct hd_struct *p = dev_to_part(dev);
	struct hd_struct *p = dev_to_part(dev);
@@ -246,7 +246,7 @@ static ssize_t part_fail_show(struct device *dev,
	return sprintf(buf, "%d\n", p->make_it_fail);
	return sprintf(buf, "%d\n", p->make_it_fail);
}
}


static ssize_t part_fail_store(struct device *dev,
ssize_t part_fail_store(struct device *dev,
			struct device_attribute *attr,
			struct device_attribute *attr,
			const char *buf, size_t count)
			const char *buf, size_t count)
{
{
+7 −1
Original line number Original line Diff line number Diff line
@@ -112,7 +112,6 @@ struct hd_struct {
#define GENHD_FL_CD				8
#define GENHD_FL_CD				8
#define GENHD_FL_UP				16
#define GENHD_FL_UP				16
#define GENHD_FL_SUPPRESS_PARTITION_INFO	32
#define GENHD_FL_SUPPRESS_PARTITION_INFO	32
#define GENHD_FL_FAIL				64


struct gendisk {
struct gendisk {
	/* major, first_minor, minors and ext_minors are input
	/* major, first_minor, minors and ext_minors are input
@@ -596,6 +595,13 @@ extern void blk_unregister_region(dev_t devt, unsigned long range);


extern ssize_t part_size_show(struct device *dev,
extern ssize_t part_size_show(struct device *dev,
			      struct device_attribute *attr, char *buf);
			      struct device_attribute *attr, char *buf);
#ifdef CONFIG_FAIL_MAKE_REQUEST
extern ssize_t part_fail_show(struct device *dev,
			      struct device_attribute *attr, char *buf);
extern ssize_t part_fail_store(struct device *dev,
			       struct device_attribute *attr,
			       const char *buf, size_t count);
#endif /* CONFIG_FAIL_MAKE_REQUEST */


#else /* CONFIG_BLOCK */
#else /* CONFIG_BLOCK */