> Chris Mason <mason@suse.com> writes:
>> Just noticed the filemap_fdatasync code doesn't check the return value
>> from writepage. Linus, would you take a patch that redirtied the page,
>> puts it back onto the dirty list (at the tail), and unlocks the page
>> when writepage returns 1?
>>
>> That would loop forever if the writepage func kept returning 1 though...I
>> think that's what we want, unless someone like ramfs made a writepage
>> func that always returned 1.
>
> shmem has such a writepage for locked shm segments. It also always
> return 1 if the swap space is exhausted. So everybody using shared
> anonymous, SYSV shared or POSIX shared memory can hit this.
>
> I invented the return code 1 exactly to be able to handle this.
>
Yes, right now the shmem writepage calls are the only ones returning one at
all. But, the question of how to properly fsync/msync these kinds of pages
still stands. Returning from an fsync before writing them isn't correct.
Either way, filemap_fdatasync needs fixing, since it drops the dirty bit on
these pages. They'll never get written after going through it.
-chris
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
Please read the FAQ at http://www.tux.org/lkml/