LKML Archive on lore.kernel.org
help / color / mirror / Atom feed
* [PATCH] Don't map random pages if swapoff errors
@ 2007-01-19 16:30 Alexey Dobriyan
2007-01-19 18:08 ` Hugh Dickins
0 siblings, 1 reply; 3+ messages in thread
From: Alexey Dobriyan @ 2007-01-19 16:30 UTC (permalink / raw)
To: akpm; +Cc: Alexey Kuznetsov, linux-kernel
From: Alexey Kuznetsov <kuznet@ms2.inr.ac.ru>
If read failed we cannot map not-uptodate page to user space.
Actually, we are in serious troubles, we do not even know what
process to kill. So, the only variant remains: to stop swapoff()
and allow someone to kill processes to zap invalid pages.
Signed-off-by: Alexey Kuznetsov <kuznet@ms2.inr.ac.ru>
Signed-off-by: Alexey Dobriyan <adobriyan@openvz.org>
---
mm/swapfile.c | 13 +++++++++++++
1 file changed, 13 insertions(+)
--- a/mm/swapfile.c
+++ b/mm/swapfile.c
@@ -766,6 +766,19 @@ static int try_to_unuse(unsigned int typ
lock_page(page);
wait_on_page_writeback(page);
+ /* If read failed we cannot map not-uptodate page to
+ * user space. Actually, we are in serious troubles,
+ * we do not even know what process to kill. So, the only
+ * variant remains: to stop swapoff() and allow someone
+ * to kill processes to zap invalid pages.
+ */
+ if (unlikely(!PageUptodate(page))) {
+ unlock_page(page);
+ page_cache_release(page);
+ retval = -EIO;
+ break;
+ }
+
/*
* Remove all references to entry.
* Whenever we reach init_mm, there's no address space
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] Don't map random pages if swapoff errors
2007-01-19 16:30 [PATCH] Don't map random pages if swapoff errors Alexey Dobriyan
@ 2007-01-19 18:08 ` Hugh Dickins
2007-01-19 19:16 ` Alexey Kuznetsov
0 siblings, 1 reply; 3+ messages in thread
From: Hugh Dickins @ 2007-01-19 18:08 UTC (permalink / raw)
To: Alexey Dobriyan
Cc: Andrew Morton, Alexey Kuznetsov, Richard Purdie, linux-kernel
On Fri, 19 Jan 2007, Alexey Dobriyan wrote:
> From: Alexey Kuznetsov <kuznet@ms2.inr.ac.ru>
>
> If read failed we cannot map not-uptodate page to user space.
Good point.
> Actually, we are in serious troubles, we do not even know what
> process to kill.
True, though we don't really want to kill anything yet: the process
may never need that page again. Better to let it continue until it
exits, or hits Kirill's check in do_swap_page. But sure, that's not
going to happen without us making some change here.
> So, the only variant remains: to stop swapoff()
> and allow someone to kill processes to zap invalid pages.
Simple as it is, no, I don't like this patch at all.
Getting an error there is all the more reason to proceed
with the swapoff, not to give up and break out of it.
Let me think a little.
CC'ed Richard, since he's also interested in bad swap, and this
reminds me to look at his patches (though he's been concerned with
when the writeout fails, rather than when the readin fails).
Hugh
>
> Signed-off-by: Alexey Kuznetsov <kuznet@ms2.inr.ac.ru>
> Signed-off-by: Alexey Dobriyan <adobriyan@openvz.org>
> ---
>
> mm/swapfile.c | 13 +++++++++++++
> 1 file changed, 13 insertions(+)
>
> --- a/mm/swapfile.c
> +++ b/mm/swapfile.c
> @@ -766,6 +766,19 @@ static int try_to_unuse(unsigned int typ
> lock_page(page);
> wait_on_page_writeback(page);
>
> + /* If read failed we cannot map not-uptodate page to
> + * user space. Actually, we are in serious troubles,
> + * we do not even know what process to kill. So, the only
> + * variant remains: to stop swapoff() and allow someone
> + * to kill processes to zap invalid pages.
> + */
> + if (unlikely(!PageUptodate(page))) {
> + unlock_page(page);
> + page_cache_release(page);
> + retval = -EIO;
> + break;
> + }
> +
> /*
> * Remove all references to entry.
> * Whenever we reach init_mm, there's no address space
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] Don't map random pages if swapoff errors
2007-01-19 18:08 ` Hugh Dickins
@ 2007-01-19 19:16 ` Alexey Kuznetsov
0 siblings, 0 replies; 3+ messages in thread
From: Alexey Kuznetsov @ 2007-01-19 19:16 UTC (permalink / raw)
To: Hugh Dickins; +Cc: Alexey Dobriyan, Andrew Morton, Richard Purdie, linux-kernel
Hello!
> Getting an error there is all the more reason to proceed
> with the swapoff, not to give up and break out of it.
Yes, from this viewpoint more reasonable approach would be to untie
corresponding ptes from swap entry and mark them as invalid to trigger
fault on access.
Not even tried simply because it is definitely not that thing, which
we needed. We used this for process migration and for that purpose
we really need to know when swapoff() fails ASAP to abort migration,
to kill processes which got invalid pages and to resume original copy.
Obviously, delayed fault is absolutely inappropriate for this particular
purpose.
Alexey
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2007-01-19 20:14 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2007-01-19 16:30 [PATCH] Don't map random pages if swapoff errors Alexey Dobriyan
2007-01-19 18:08 ` Hugh Dickins
2007-01-19 19:16 ` Alexey Kuznetsov
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).