kernel-fxtec-pro1x/include/linux/raid
Dan Williams b5470dc5fc md: resolve external metadata handling deadlock in md_allow_write
md_allow_write() marks the metadata dirty while holding mddev->lock and then
waits for the write to complete.  For externally managed metadata this causes a
deadlock as userspace needs to take the lock to communicate that the metadata
update has completed.

Change md_allow_write() in the 'external' case to start the 'mark active'
operation and then return -EAGAIN.  The expected side effects while waiting for
userspace to write 'active' to 'array_state' are holding off reshape (code
currently handles -ENOMEM), cause some 'stripe_cache_size' change requests to
fail, cause some GET_BITMAP_FILE ioctl requests to fall back to GFP_NOIO, and
cause updates to 'raid_disks' to fail.  Except for 'stripe_cache_size' changes
these failures can be mitigated by coordinating with mdmon.

md_write_start() still prevents writes from occurring until the metadata
handler has had a chance to take action as it unconditionally waits for
MD_CHANGE_CLEAN to be cleared.

[neilb@suse.de: return -EAGAIN, try GFP_NOIO]
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
2008-06-30 17:18:19 -07:00
..
bitmap.h Improve setting of "events_cleared" for write-intent bitmaps. 2008-06-28 08:31:22 +10:00
Kbuild
linear.h
md.h md: resolve external metadata handling deadlock in md_allow_write 2008-06-30 17:18:19 -07:00
md_k.h Make sure all changes to md/dev-XX/state are notified 2008-06-28 08:31:44 +10:00
md_p.h [PATCH] md: endian annotation for v1 superblock access 2006-10-21 13:35:05 -07:00
md_u.h
multipath.h
raid0.h
raid1.h
raid5.h md: replace R5_WantPrexor with R5_WantDrain, add 'prexor' reconstruct_states 2008-06-28 08:32:06 +10:00
raid10.h
xor.h async_tx: add the async_tx api 2007-07-13 08:06:14 -07:00