]> err.no Git - linux-2.6/commit
[PATCH] md: Improve locking around error handling
authorNeilBrown <neilb@suse.de>
Tue, 3 Oct 2006 08:15:53 +0000 (01:15 -0700)
committerLinus Torvalds <torvalds@g5.osdl.org>
Tue, 3 Oct 2006 15:04:18 +0000 (08:04 -0700)
commitc04be0aa82ff535e3676ab3e573957bdeef41879
tree8481ab270218bed246eb02b3ba04a4b84d4e90d0
parent11ce99e625fe2718ad2682bfdd99070b337e6252
[PATCH] md: Improve locking around error handling

The error handling routines don't use proper locking, and so two concurrent
errors could trigger a problem.

So:
  - use test-and-set and test-and-clear to synchonise
    the In_sync bits with the ->degraded count
  - use the spinlock to protect updates to the
    degraded count (could use an atomic_t but that
    would be a bigger change in code, and isn't
    really justified)
  - remove un-necessary locking in raid5

Signed-off-by: Neil Brown <neilb@suse.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
drivers/md/raid1.c
drivers/md/raid10.c
drivers/md/raid5.c