There were some cases where delalloc data would never get flushed out
to disk unless you unmounted the filesystem, specifically the tail
end of files (or all of small files) when there was insufficient
memory pressure to push them onto the inactive dirty list. This
adds explicit aging on these pages so that they will get flushed
soon after being written to.
This should fix most of the problems people have had with missing
data after a crash. Note that missing data is still possible in
the case where the file size gets updated on disk and the data
does not get written out before a crash, the window is just smaller
now. This can happen in all filesystems if the inode gets on to disk
before the data.
Date: Tue Feb 13 10:47:43 PST 2001
Workarea: 128.162.184.86:/src/lord/merge
The following file(s) were checked into:
bonnie.engr.sgi.com:/isms/slinx/2.4.x-xfs
Modid: 2.4.x-xfs:slinx:87434a
linux/fs/pagebuf/page_buf.c - 1.53
- Fix one more case where we need to be careful about how we allocate
memory.
linux/fs/pagebuf/page_buf_io.c - 1.51
- Add some explicit aging of delalloc pages out of the active list,
without
this there are cases where delalloc just sits in memory until we
unmount.
|