Relevant code -
../src/linux/mm/filemap.c
static void filemap_unmap(struct vm_area_struct *vma, unsigned long
start, size_t len)
{
filemap_sync(vma, start, len, MS_ASYNC);
}
Question -
Does this imply that every time a process terminates abonormally, all
the dirty pages related to that mapping are flushed to the disk, even if
that was not intended ? Why can not it be simply this ? -
static void filemap_unmap(struct vm_area_struct *vma, unsigned long
start, size_t len)
{
filemap_sync(vma, start, len, MS_INVALIDATE);
}
I call msync() at various points in the program where data in the pages
is known to be in good condition. At the abnormal program termination, I
am not really sure if data in pages is valid or not.....
Thank you.
Rakesh :-)
On Fri, 22 Mar 2002, Rakesh Tiwari wrote:
>
> I call msync() at various points in the program where data in the pages
> is known to be in good condition. At the abnormal program termination, I
> am not really sure if data in pages is valid or not.....
If you have a shared mapping it can be written to disk at any moment, so
you can't rely on that happening only at the moment of msync().