summaryrefslogtreecommitdiff
path: root/scripts/Makefile.modinst
diff options
context:
space:
mode:
authorDave Chinner <david@fromorbit.com>2010-03-12 09:42:16 +1100
committerGreg Kroah-Hartman <gregkh@suse.de>2010-04-26 07:41:16 -0700
commite52af5078f958b84f5ca2f06f692f96438d82d84 (patch)
tree706193070335293f6b690ca103af4b95385c2533 /scripts/Makefile.modinst
parent76962b5ed721dd91bd736c65944522798a35ced5 (diff)
downloadlwn-e52af5078f958b84f5ca2f06f692f96438d82d84.tar.gz
lwn-e52af5078f958b84f5ca2f06f692f96438d82d84.zip
xfs: Non-blocking inode locking in IO completion
commit 77d7a0c2eeb285c9069e15396703d0cb9690ac50 upstream The introduction of barriers to loop devices has created a new IO order completion dependency that XFS does not handle. The loop device implements barriers using fsync and so turns a log IO in the XFS filesystem on the loop device into a data IO in the backing filesystem. That is, the completion of log IOs in the loop filesystem are now dependent on completion of data IO in the backing filesystem. This can cause deadlocks when a flush daemon issues a log force with an inode locked because the IO completion of IO on the inode is blocked by the inode lock. This in turn prevents further data IO completion from occuring on all XFS filesystems on that CPU (due to the shared nature of the completion queues). This then prevents the log IO from completing because the log is waiting for data IO completion as well. The fix for this new completion order dependency issue is to make the IO completion inode locking non-blocking. If the inode lock can't be grabbed, simply requeue the IO completion back to the work queue so that it can be processed later. This prevents the completion queue from being blocked and allows data IO completion on other inodes to proceed, hence avoiding completion order dependent deadlocks. Signed-off-by: Dave Chinner <david@fromorbit.com> Reviewed-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Alex Elder <aelder@sgi.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'scripts/Makefile.modinst')
0 files changed, 0 insertions, 0 deletions