One fix for raid5 discard issue.
-----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.22 (GNU/Linux) iQIVAwUAVC40bznsnt1WYoG5AQJs0w//T8Z3vBhXwC3SjREbH42x8pWxFXgzhUdW WGKwYYwHFQfL05rP3eg+X+Sh+X3s3E3/+lFzDVE/JGjBdSG/A5X+j5jRH6ENl16u 32wQjZwKliYxSiUPWbbPzl0BDi3nyhpR1CMsgTWpU6qkMuGy2npNZFK/cQIy4/Je ygXLwncKPfAVszaMrx9oBeghpwTnJR3Se1RAYhxc4qQLm+jXfUTQ9Ool3J2InZo3 st7weyuvPrtr+Em65ta0j/VIOzTP5dIallq+LSL5e0lhn5Pc99XBaM60lEzH9mwP t8ZDuV6HL8rXktCOwNtkmEQeW/7uOpmwKG0yt6nPFKghsclJvbyrtxOWKnOrPAd8 0rvUAX7EXX/OQyEjguhJQ1ZK9E4HxglGay7trVyXeLdK3kOUaVjAlG/5y8FrEusU K/uOnHwIiCDxTZ86imTcRcXxOG5eWVscsWwVFIHf2IN4J1NKJ7rQB6LP4WEKzHGE y3CgSy/c7yyuksMlYZE9q1GRc5i8pI5tGg3tV2S2uvgjuNIw6dkAF1UjW5Mpgy3x OFue/SxsYWuBeSqMANuJQDeCOLttwSZV/Ho3Kac+nA7l0LTXkVIYFj0bSGIIUxjI scF+r04u35/jib0QALdeTw9FB46V5GYZ7d0bd/lEMxe24dsPreCKiI/xDvpr5NQn 8flYcaBK+PI= =Qyea -----END PGP SIGNATURE----- Merge tag 'md/3.17-final-fix' of git://neil.brown.name/md Pull raid5 discard fix from Neil Brown: "One fix for raid5 discard issue" * tag 'md/3.17-final-fix' of git://neil.brown.name/md: md/raid5: disable 'DISCARD' by default due to safety concerns.
This commit is contained in:
commit
ee042ec880
|
@ -64,6 +64,10 @@
|
|||
#define cpu_to_group(cpu) cpu_to_node(cpu)
|
||||
#define ANY_GROUP NUMA_NO_NODE
|
||||
|
||||
static bool devices_handle_discard_safely = false;
|
||||
module_param(devices_handle_discard_safely, bool, 0644);
|
||||
MODULE_PARM_DESC(devices_handle_discard_safely,
|
||||
"Set to Y if all devices in each array reliably return zeroes on reads from discarded regions");
|
||||
static struct workqueue_struct *raid5_wq;
|
||||
/*
|
||||
* Stripe cache
|
||||
|
@ -6208,7 +6212,7 @@ static int run(struct mddev *mddev)
|
|||
mddev->queue->limits.discard_granularity = stripe;
|
||||
/*
|
||||
* unaligned part of discard request will be ignored, so can't
|
||||
* guarantee discard_zerors_data
|
||||
* guarantee discard_zeroes_data
|
||||
*/
|
||||
mddev->queue->limits.discard_zeroes_data = 0;
|
||||
|
||||
|
@ -6233,6 +6237,18 @@ static int run(struct mddev *mddev)
|
|||
!bdev_get_queue(rdev->bdev)->
|
||||
limits.discard_zeroes_data)
|
||||
discard_supported = false;
|
||||
/* Unfortunately, discard_zeroes_data is not currently
|
||||
* a guarantee - just a hint. So we only allow DISCARD
|
||||
* if the sysadmin has confirmed that only safe devices
|
||||
* are in use by setting a module parameter.
|
||||
*/
|
||||
if (!devices_handle_discard_safely) {
|
||||
if (discard_supported) {
|
||||
pr_info("md/raid456: discard support disabled due to uncertainty.\n");
|
||||
pr_info("Set raid456.devices_handle_discard_safely=Y to override.\n");
|
||||
}
|
||||
discard_supported = false;
|
||||
}
|
||||
}
|
||||
|
||||
if (discard_supported &&
|
||||
|
|
Loading…
Reference in New Issue