On Wed 03-09-14 16:00:39, Ted Tso wrote: > On Wed, Sep 03, 2014 at 05:31:22PM +0200, Jan Kara wrote: > > Also one question: > > > > > - if (ei == locked_ei || !write_trylock(&ei->i_es_lock)) { > > > - nr_skipped++; > > > - spin_lock(&sbi->s_es_lock); > > > __ext4_es_list_add(sbi, ei); > > > + if (spin_is_contended(&sbi->s_es_lock)) { > > > + spin_unlock(&sbi->s_es_lock); > > > + spin_lock(&sbi->s_es_lock); > > > + } > > Why not cond_resched_lock(&sbi->s_es_lock)? > > I didn't think we were allowed to reschedule or sleep while in > shrinker context? I believe we are allowed to sleep in the shrinker if appropriate gfp flags are set (__GFP_WAIT) and we enter extent cache shrinker only if __GFP_FS is set which guarantees __GFP_WAIT. Honza -- Jan Kara <jack@xxxxxxx> SUSE Labs, CR -- To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html