From: Tejun Heo <tj@kernel.org>
To: jens.axboe@oracle.com, James.Bottomley@HansenPartnership.com,
bharrosh@panasas.com, greg.freemyer@gmail.com,
linux-scsi@vger.kernel.org, brking@linux.vnet.ibm.com,
liml@rtr.ca, viro@f
Cc: Tejun Heo <tj@kernel.org>
Subject: [PATCH 09/13] block: kill GENHD_FL_FAIL and use part0->make_it_fail
Date: Mon, 14 Jul 2008 16:48:09 +0900 [thread overview]
Message-ID: <1216021693-483-10-git-send-email-tj@kernel.org> (raw)
In-Reply-To: <1216021693-483-1-git-send-email-tj@kernel.org>
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: Tejun Heo <tj@kernel.org>
---
block/blk-core.c | 5 +++--
block/genhd.c | 30 +-----------------------------
fs/partitions/check.c | 10 +++++-----
include/linux/genhd.h | 9 +++++++--
4 files changed, 16 insertions(+), 38 deletions(-)
diff --git a/block/blk-core.c b/block/blk-core.c
index 511b8c7..332d695 100644
--- a/block/blk-core.c
+++ b/block/blk-core.c
@@ -1262,8 +1262,9 @@ __setup("fail_make_request=", setup_fail_make_request);
static int should_fail_request(struct bio *bio)
{
- if ((bio->bi_bdev->bd_disk->flags & GENHD_FL_FAIL) ||
- bio->bi_bdev->bd_part->make_it_fail)
+ struct hd_struct *part = bio->bi_bdev->bd_part;
+
+ if (part_to_disk(part)->part0.make_it_fail || part->make_it_fail)
return should_fail(&fail_make_request, bio->bi_size);
return 0;
diff --git a/block/genhd.c b/block/genhd.c
index ff33b8c..21b8535 100644
--- a/block/genhd.c
+++ b/block/genhd.c
@@ -762,34 +762,6 @@ static ssize_t disk_stat_show(struct device *dev,
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(ext_range, S_IRUGO, disk_ext_range_show, NULL);
static DEVICE_ATTR(removable, S_IRUGO, disk_removable_show, NULL);
@@ -798,7 +770,7 @@ static DEVICE_ATTR(capability, S_IRUGO, disk_capability_show, NULL);
static DEVICE_ATTR(stat, S_IRUGO, disk_stat_show, NULL);
#ifdef CONFIG_FAIL_MAKE_REQUEST
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
static struct attribute *disk_attrs[] = {
diff --git a/fs/partitions/check.c b/fs/partitions/check.c
index 931d366..ddd0258 100644
--- a/fs/partitions/check.c
+++ b/fs/partitions/check.c
@@ -237,17 +237,17 @@ static ssize_t part_stat_show(struct device *dev,
}
#ifdef CONFIG_FAIL_MAKE_REQUEST
-static ssize_t part_fail_show(struct device *dev,
- struct device_attribute *attr, char *buf)
+ssize_t part_fail_show(struct device *dev,
+ struct device_attribute *attr, char *buf)
{
struct hd_struct *p = dev_to_part(dev);
return sprintf(buf, "%d\n", p->make_it_fail);
}
-static ssize_t part_fail_store(struct device *dev,
- struct device_attribute *attr,
- const char *buf, size_t count)
+ssize_t part_fail_store(struct device *dev,
+ struct device_attribute *attr,
+ const char *buf, size_t count)
{
struct hd_struct *p = dev_to_part(dev);
int i;
diff --git a/include/linux/genhd.h b/include/linux/genhd.h
index 8c94f17..61448a9 100644
--- a/include/linux/genhd.h
+++ b/include/linux/genhd.h
@@ -112,8 +112,6 @@ struct hd_struct {
#define GENHD_FL_CD 8
#define GENHD_FL_UP 16
#define GENHD_FL_SUPPRESS_PARTITION_INFO 32
-#define GENHD_FL_FAIL 64
-
struct gendisk {
/* major, first_minor, minors and ext_minors are input
@@ -582,6 +580,13 @@ extern void blk_unregister_region(dev_t devt, unsigned long range);
extern ssize_t part_size_show(struct device *dev,
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 */
--
1.5.4.5
WARNING: multiple messages have this Message-ID (diff)
From: Tejun Heo <tj@kernel.org>
To: jens.axboe@oracle.com, James.Bottomley@HansenPartnership.com,
bharrosh@panasas.com, greg.freemyer@gmail.com,
linux-scsi@vger.kernel.org, brking@linux.vnet.ibm.com,
liml@rtr.ca, viro@ftp.linux.org.uk, linux-kernel@vger.kernel.org,
linux-ide@vger.kernel.org
Cc: Tejun Heo <tj@kernel.org>
Subject: [PATCH 09/13] block: kill GENHD_FL_FAIL and use part0->make_it_fail
Date: Mon, 14 Jul 2008 16:48:09 +0900 [thread overview]
Message-ID: <1216021693-483-10-git-send-email-tj@kernel.org> (raw)
In-Reply-To: <1216021693-483-1-git-send-email-tj@kernel.org>
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: Tejun Heo <tj@kernel.org>
---
block/blk-core.c | 5 +++--
block/genhd.c | 30 +-----------------------------
fs/partitions/check.c | 10 +++++-----
include/linux/genhd.h | 9 +++++++--
4 files changed, 16 insertions(+), 38 deletions(-)
diff --git a/block/blk-core.c b/block/blk-core.c
index 511b8c7..332d695 100644
--- a/block/blk-core.c
+++ b/block/blk-core.c
@@ -1262,8 +1262,9 @@ __setup("fail_make_request=", setup_fail_make_request);
static int should_fail_request(struct bio *bio)
{
- if ((bio->bi_bdev->bd_disk->flags & GENHD_FL_FAIL) ||
- bio->bi_bdev->bd_part->make_it_fail)
+ struct hd_struct *part = bio->bi_bdev->bd_part;
+
+ if (part_to_disk(part)->part0.make_it_fail || part->make_it_fail)
return should_fail(&fail_make_request, bio->bi_size);
return 0;
diff --git a/block/genhd.c b/block/genhd.c
index ff33b8c..21b8535 100644
--- a/block/genhd.c
+++ b/block/genhd.c
@@ -762,34 +762,6 @@ static ssize_t disk_stat_show(struct device *dev,
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(ext_range, S_IRUGO, disk_ext_range_show, NULL);
static DEVICE_ATTR(removable, S_IRUGO, disk_removable_show, NULL);
@@ -798,7 +770,7 @@ static DEVICE_ATTR(capability, S_IRUGO, disk_capability_show, NULL);
static DEVICE_ATTR(stat, S_IRUGO, disk_stat_show, NULL);
#ifdef CONFIG_FAIL_MAKE_REQUEST
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
static struct attribute *disk_attrs[] = {
diff --git a/fs/partitions/check.c b/fs/partitions/check.c
index 931d366..ddd0258 100644
--- a/fs/partitions/check.c
+++ b/fs/partitions/check.c
@@ -237,17 +237,17 @@ static ssize_t part_stat_show(struct device *dev,
}
#ifdef CONFIG_FAIL_MAKE_REQUEST
-static ssize_t part_fail_show(struct device *dev,
- struct device_attribute *attr, char *buf)
+ssize_t part_fail_show(struct device *dev,
+ struct device_attribute *attr, char *buf)
{
struct hd_struct *p = dev_to_part(dev);
return sprintf(buf, "%d\n", p->make_it_fail);
}
-static ssize_t part_fail_store(struct device *dev,
- struct device_attribute *attr,
- const char *buf, size_t count)
+ssize_t part_fail_store(struct device *dev,
+ struct device_attribute *attr,
+ const char *buf, size_t count)
{
struct hd_struct *p = dev_to_part(dev);
int i;
diff --git a/include/linux/genhd.h b/include/linux/genhd.h
index 8c94f17..61448a9 100644
--- a/include/linux/genhd.h
+++ b/include/linux/genhd.h
@@ -112,8 +112,6 @@ struct hd_struct {
#define GENHD_FL_CD 8
#define GENHD_FL_UP 16
#define GENHD_FL_SUPPRESS_PARTITION_INFO 32
-#define GENHD_FL_FAIL 64
-
struct gendisk {
/* major, first_minor, minors and ext_minors are input
@@ -582,6 +580,13 @@ extern void blk_unregister_region(dev_t devt, unsigned long range);
extern ssize_t part_size_show(struct device *dev,
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 */
--
1.5.4.5
next prev parent reply other threads:[~2008-07-14 7:49 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-07-14 7:48 [PATCHSET 2.6.26] block: unify disk/part handling and improve ext devt Tejun Heo
2008-07-14 7:48 ` Tejun Heo
2008-07-14 7:48 ` [PATCH 01/13] block: implement and use {disk|part}_to_dev() Tejun Heo
2008-07-14 7:48 ` Tejun Heo
2008-07-14 7:48 ` [PATCH 02/13] block: introduce partition 0 Tejun Heo
2008-07-14 7:48 ` Tejun Heo
2008-07-14 7:48 ` [PATCH 03/13] block: move capacity from disk to part0 Tejun Heo
2008-07-14 7:48 ` Tejun Heo
2008-07-14 7:48 ` [PATCH 04/13] block: move __dev " Tejun Heo
2008-07-14 7:48 ` Tejun Heo
2008-07-14 7:48 ` Tejun Heo
2008-07-14 7:48 ` [PATCH 05/13] block: unify sysfs size node handling Tejun Heo
2008-07-14 7:48 ` Tejun Heo
2008-07-14 7:48 ` Tejun Heo
2008-07-14 7:48 ` [PATCH 06/13] block: move policy from disk to part0 Tejun Heo
2008-07-14 7:48 ` Tejun Heo
2008-07-14 7:48 ` [PATCH 07/13] block: move holder_dir " Tejun Heo
2008-07-14 7:48 ` Tejun Heo
2008-07-14 7:48 ` Tejun Heo
2008-07-14 7:48 ` [PATCH 08/13] block: always set bdev->bd_part Tejun Heo
2008-07-14 7:48 ` Tejun Heo
2008-07-14 7:48 ` Tejun Heo [this message]
2008-07-14 7:48 ` [PATCH 09/13] block: kill GENHD_FL_FAIL and use part0->make_it_fail Tejun Heo
2008-07-14 7:48 ` [PATCH 10/13] block: move stats from disk to part0 Tejun Heo
2008-07-14 7:48 ` Tejun Heo
2008-07-14 7:48 ` Tejun Heo
2008-07-14 7:48 ` [PATCH 11/13] block: make partition array dynamic Tejun Heo
2008-07-14 7:48 ` Tejun Heo
2008-07-14 7:48 ` Tejun Heo
2008-07-14 7:48 ` [PATCH 12/13] block: replace @ext_minors with GENHD_FL_EXT_DEVT Tejun Heo
2008-07-14 7:48 ` Tejun Heo
2008-07-14 7:48 ` Tejun Heo
2008-07-14 7:48 ` [PATCH 13/13] block: allow disk to have extended device number Tejun Heo
2008-07-14 7:48 ` Tejun Heo
2008-07-14 7:48 ` Tejun Heo
-- strict thread matches above, loose matches on Subject: below --
2008-08-25 10:56 [PATCHSET 3/3 blk-for-2.6.28] block: unify disk/part handling and improve ext devt, take #2 Tejun Heo
2008-08-25 10:56 ` [PATCH 09/13] block: kill GENHD_FL_FAIL and use part0->make_it_fail Tejun Heo
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1216021693-483-10-git-send-email-tj@kernel.org \
--to=tj@kernel.org \
--cc=James.Bottomley@HansenPartnership.com \
--cc=bharrosh@panasas.com \
--cc=brking@linux.vnet.ibm.com \
--cc=greg.freemyer@gmail.com \
--cc=jens.axboe@oracle.com \
--cc=liml@rtr.ca \
--cc=linux-scsi@vger.kernel.org \
--cc=viro@f \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.