aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/md/md.h
diff options
context:
space:
mode:
authorNeilBrown <neilb@suse.de>2011-01-13 17:14:33 -0500
committerNeilBrown <neilb@suse.de>2011-01-13 17:14:33 -0500
commit0ca69886a8273ac1350143d562280bfcbe4760dc (patch)
tree98acbe1e5682e4455bf7d2e7a9413b5a3fd43b2a /drivers/md/md.h
parent067032bc628598606056412594042564fcf09e22 (diff)
md: Ensure no IO request to get md device before it is properly initialised.
When an md device is in the process of coming on line it is possible for an IO request (typically a partition table probe) to get through before the array is fully initialised, which can cause unexpected behaviour (e.g. a crash). So explicitly record when the array is ready for IO and don't allow IO through until then. There is no possibility for a similar problem when the array is going off-line as there must only be one 'open' at that time, and it is busy off-lining the array and so cannot send IO requests. So no memory barrier is needed in md_stop() This has been a bug since commit 409c57f3801 in 2.6.30 which introduced md_make_request. Before then, each personality would register its own make_request_fn when it was ready. This is suitable for any stable kernel from 2.6.30.y onwards. Cc: <stable@kernel.org> Signed-off-by: NeilBrown <neilb@suse.de> Reported-by: "Hawrylewicz Czarnowski, Przemyslaw" <przemyslaw.hawrylewicz.czarnowski@intel.com>
Diffstat (limited to 'drivers/md/md.h')
-rw-r--r--drivers/md/md.h3
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/md/md.h b/drivers/md/md.h
index d05bab55df4e..229675a604f7 100644
--- a/drivers/md/md.h
+++ b/drivers/md/md.h
@@ -148,7 +148,8 @@ struct mddev_s
148 * are happening, so run/ 148 * are happening, so run/
149 * takeover/stop are not safe 149 * takeover/stop are not safe
150 */ 150 */
151 151 int ready; /* See when safe to pass
152 * IO requests down */
152 struct gendisk *gendisk; 153 struct gendisk *gendisk;
153 154
154 struct kobject kobj; 155 struct kobject kobj;