diff options
author | NeilBrown <neilb@suse.de> | 2013-06-11 04:57:09 (GMT) |
---|---|---|
committer | NeilBrown <neilb@suse.de> | 2013-06-13 22:10:27 (GMT) |
commit | 635f6416a2e983adac8ccf90bffbeed0c1a76454 (patch) | |
tree | 36389c7bd9b6dd43ec6055354e9e718d2147240d /drivers/base/base.h | |
parent | b29bebd66dbd492105668ec3515a5ffb0b25e4c1 (diff) | |
download | linux-fsl-qoriq-635f6416a2e983adac8ccf90bffbeed0c1a76454.tar.xz |
md/raid10: locking changes for 'enough()'.
As 'enough' accesses conf->prev and conf->geo, which can change
spontanously, it should guard against changes.
This can be done with device_lock as start_reshape holds device_lock
while updating 'geo' and end_reshape holds it while updating 'prev'.
So 'error' needs to hold 'device_lock'.
On the other hand, raid10_end_read_request knows which of the two it
really wants to access, and as it is an active request on that one,
the value cannot change underneath it.
So change _enough to take flag rather than a pointer, pass the
appropriate flag from raid10_end_read_request(), and remove the locking.
All other calls to 'enough' are made with reconfig_mutex held, so
neither 'prev' nor 'geo' can change.
Signed-off-by: NeilBrown <neilb@suse.de>
Diffstat (limited to 'drivers/base/base.h')
0 files changed, 0 insertions, 0 deletions