| To: | Dave Chinner <david@xxxxxxxxxxxxx> |
|---|---|
| Subject: | Re: [PATCH 1/2] bdi: mark the bdi flusher busy when being forked |
| From: | Christoph Hellwig <hch@xxxxxxxxxxxxx> |
| Date: | Mon, 11 Apr 2011 14:34:12 -0400 |
| Cc: | xfs@xxxxxxxxxxx, linux-fsdevel@xxxxxxxxxxxxxxx |
| In-reply-to: | <1302157196-1988-2-git-send-email-david@xxxxxxxxxxxxx> |
| References: | <1302157196-1988-1-git-send-email-david@xxxxxxxxxxxxx> <1302157196-1988-2-git-send-email-david@xxxxxxxxxxxxx> |
| User-agent: | Mutt/1.5.21 (2010-09-15) |
On Thu, Apr 07, 2011 at 04:19:55PM +1000, Dave Chinner wrote: > From: Dave Chinner <dchinner@xxxxxxxxxx> > > Recetn attempts to use writeback_inode_sb_nr_if_idle() in XFs from > memory reclaim context have caused deadlocks because memory reclaim > call be called from a failed allocation during forking a flusher > thread. The shrinker then attempts to trigger writeback and the bdi > is considered idle because writeback is not in progress yet and then > deadlocks because bdi_queue_work() blocks waiting for the > BDI_Pending bit to clear which will never happen because it needs > the fork to complete. > > To avoid this deadlock, consider writeback to be in progress if the > flusher thread is being created. This prevents reclaim from blocking > waiting for it be forked and hence avoids the deadlock. Looks good, Reviewed-by: Christoph Hellwig <hch@xxxxxx> |
| <Prev in Thread] | Current Thread | [Next in Thread> |
|---|---|---|
| ||
| Previous by Date: | Re: [PATCH] xfs: don't look forever in xfs_inode_ag_walk during async inode flushes, Christoph Hellwig |
|---|---|
| Next by Date: | Re: [PATCH 2/2] xfs: kick inode writeback when low on memory, Christoph Hellwig |
| Previous by Thread: | [PATCH 1/2] bdi: mark the bdi flusher busy when being forked, Dave Chinner |
| Next by Thread: | Re: [PATCH 1/2] bdi: mark the bdi flusher busy when being forked, Alex Elder |
| Indexes: | [Date] [Thread] [Top] [All Lists] |