2002-03-22 20:03:04

by Rakesh Tiwari

[permalink] [raw]
Subject: 2.2.19(xx) file unmapping on abort

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 :-)


2002-03-22 20:13:35

by Alexander Viro

[permalink] [raw]
Subject: Re: 2.2.19(xx) file unmapping on abort



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().