Re: [patch 1/3] fix illogical behavior in balance_dirty_pages()

Miklos Szeredi
2007-03-25T11:35:46Z

> >
> > Please have a look at this:
> > http://lkml.org/lkml/2007/3/19/220
>
>
>
> > + if (bdi_nr_reclaimable + bdi_stat(bdi, BDI_WRITEBACK) <=
> > + bdi_thresh)
> > + break;
> >
>
> Yes, this will resolve the deadlock as well, where balance_dirty_pages()
> is currently looping forever with:

Almost.

This

> - if (nr_reclaimable) {
> + if (bdi_nr_reclaimable) {
> writeback_inodes(&wbc);

still makes it loop forever if bdi_nr_reclaimable == 0, since the exit
condition is not checked.

Shouldn't it break out of the loop if bdi_stat(bdi, BDI_WRITEBACK) <=
bdi_thresh in this case?

Thanks,
Miklos