Re: ENOSPC returned during writepages

Mingming Cao
2008-08-21T17:17:26Z

在 2008-08-21四的 11:35 -0400，Theodore Tso写道：
> On Thu, Aug 21, 2008 at 08:48:15PM +0530, Aneesh Kumar K.V wrote:
> > > I have a feeling that we did not try very hard before invalidate the
> > > dirty page which fail to map to disks. Perhaps we should try a few more
> > > times before give up. Also in that case, perhaps we should turn off
> > > delalloc fs wide, so the new writers won't take the subsequently made
> > > avaible free blocks away from this unlucky delalloc da writepages.
> >
> > How do we try hard ? The mballoc already try had to allocate blocks. So I
> > am not sure what do we achieve by requesting for block allocation again.
>
> So here's the problem that we face. If we have a situation where the
> disk fills temporarily, but then subsequently space gets freed up, it
> would be preferable if the dirty page isn't invalidated, and so
> periodically (or perhaps via "there's-free-space-now notifier") we
> retry the delayed allocation so we don't lose data during a transient
> disk full situation. But at the same time, we don't want an fsync()
> on the entire filesystem, or a umount on the filesystem, to hang
> forever.
>

This situation (disk fills temporarily) is not new, we handled this in
ext4_write_begin() (and other places) by retry allocation three times
in case of ENOSPC error. we could do the same retry in
ext4_da_writepages().

Mingming
> - Ted
> --
> To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html