Messages in this thread Patch in this message | | | Date | Sun, 7 Oct 2007 22:58:11 +0300 (EEST) | From | Pekka J Enberg <> | Subject | Re: msync(2) bug(?), returns AOP_WRITEPAGE_ACTIVATE to userland |
| |
Hi Erez,
On 10/7/07, Erez Zadok <ezk@cs.sunysb.edu> wrote: > Anyway, some Ubuntu users of Unionfs reported that msync(2) sometimes > returns AOP_WRITEPAGE_ACTIVATE (decimal 524288) back to userland. > Therefore, some user programs fail, esp. if they're written such as > this:
[snip]
On 10/7/07, Erez Zadok <ezk@cs.sunysb.edu> wrote: > Is this a bug indeed, or are user programs supposed to handle > AOP_WRITEPAGE_ACTIVATE (I hope not the latter). If it's a kernel bug, > what should the kernel return: a zero, or an -errno (and which one)?
It's a kernel bug. AOP_WRITEPAGE_ACTIVATE is a hint to the VM to avoid writeback of the page in the near future. I wonder if it's enough that we change the return value to zero from mm/page-writeback.c:write_cache_pages() in case we hit AOP_WRITEPAGE_ACTIVE...
Pekka
diff --git a/mm/page-writeback.c b/mm/page-writeback.c index 63512a9..717f341 100644 --- a/mm/page-writeback.c +++ b/mm/page-writeback.c @@ -672,8 +672,10 @@ retry: ret = (*writepage)(page, wbc, data); - if (unlikely(ret == AOP_WRITEPAGE_ACTIVATE)) + if (unlikely(ret == AOP_WRITEPAGE_ACTIVATE)) { unlock_page(page); + ret = 0; + } if (ret || (--(wbc->nr_to_write) <= 0)) done = 1; if (wbc->nonblocking && bdi_write_congested(bdi)) { | |