Jan Kara writes: > On Mon 05-09-16 23:39:54, Ted Tso wrote: >> Dmitry, thanks for the patch, and Jan, thanks for the review. >> >> This is what I've added to the ext4 tree, which should reflect all of >> the comments which Jan made. > > Hum, one comment still: > >> + if (down_read_trylock(&elr->lr_super->s_umount)) { >> + if (sb_start_write_trylock(elr->lr_super)) { >> + progress = 1; >> + /* >> + * We hold sb->s_umount, sb can not >> + * be removed from the list, it is >> + * now safe to drop li_list_mtx >> + */ >> + mutex_unlock(&eli->li_list_mtx); >> + err = ext4_run_li_request(elr); >> + sb_end_write(elr->lr_super); >> + mutex_lock(&eli->li_list_mtx); >> + n = pos->next; >> } >> + up_read((&elr->lr_super->s_umount)); >> + } >> + /* error, remove the lazy_init job */ >> + if (err) { >> + ext4_remove_li_request(elr); >> + continue; >> + } >> + if (!progress) { >> + elr->lr_next_sched = jiffies + >> + (prandom_u32() >> + % (EXT4_DEF_LI_MAX_START_DELAY * HZ)); >> + if (time_before(elr->lr_next_sched, >> + next_wakeup)) >> + next_wakeup = elr->lr_next_sched; >> } >> - >> - if (time_before(elr->lr_next_sched, next_wakeup)) >> - next_wakeup = elr->lr_next_sched; >> } > > ext4_run_li_request() can also update elr->lr_next_sched. So we need to > update next_wakeup even in progress == 1 case (i.e., I'd leave the update > of next_wakeup as is in the old code...). Otherwise the patch looks good. Yes. That is correct. Simply last hank shoul not be deleted. Theodore, please fold patch attached to original one.