On Wed, Apr 10 2013, Andrew Morton wrote: > On Tue, 09 Apr 2013 17:37:20 -0700 Greg Thelen <gthelen@xxxxxxxxxx> wrote: > >> > Call cond_resched() in shrink_dcache_parent() to maintain >> > interactivity. >> > >> > Before this patch: >> > >> > void shrink_dcache_parent(struct dentry * parent) >> > { >> > while ((found = select_parent(parent, &dispose)) != 0) >> > shrink_dentry_list(&dispose); >> > } >> > >> > select_parent() populates the dispose list with dentries which >> > shrink_dentry_list() then deletes. select_parent() carefully uses >> > need_resched() to avoid doing too much work at once. But neither >> > shrink_dcache_parent() nor its called functions call cond_resched(). >> > So once need_resched() is set select_parent() will return single >> > dentry dispose list which is then deleted by shrink_dentry_list(). >> > This is inefficient when there are a lot of dentry to process. This >> > can cause softlockup and hurts interactivity on non preemptable >> > kernels. >> > >> > This change adds cond_resched() in shrink_dcache_parent(). The >> > benefit of this is that need_resched() is quickly cleared so that >> > future calls to select_parent() are able to efficiently return a big >> > batch of dentry. >> > >> > These additional cond_resched() do not seem to impact performance, at >> > least for the workload below. >> > >> > Here is a program which can cause soft lockup on a if other system >> > activity sets need_resched(). > > I was unable to guess what word was missing from "on a if other" ;) Less is more ;) Reword to: Here is a program which can cause soft lockup if other system activity sets need_resched(). >> Should this change go through Al's or Andrew's branch? > > I'll fight him for it. Thanks. > Softlockups are fairly serious, so I'll put a cc:stable in there. Or > were the changes which triggered this problem added after 3.9? This also applies to stable. I see the problem at least back to v3.3. I did not test earlier kernels, but could if you want. -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html