From: Olaf Hering <olaf@aepfle.de>
To: xen-devel@lists.xensource.com
Subject: [PATCH] xenpaging: unify return value in nominate and evict
Date: Thu, 26 Jan 2012 20:56:17 +0100 [thread overview]
Message-ID: <ebc68ae15103061fa554.1327607777@probook.site> (raw)
# HG changeset patch
# User Olaf Hering <olaf@aepfle.de>
# Date 1327607757 -3600
# Node ID ebc68ae15103061fa554745efb652b7d7e7b8e89
# Parent 266a12304601226213a57e39cc11aa075acdfb58
xenpaging: unify return value in nominate and evict
Let p2m_mem_paging_nominate and p2m_mem_paging_evict return just one
error number. EINVAL is not very helpful in case of nominate, it can
happen if the pager tries to nominate a ballooned page. In this case the
gfn is not backed by a mfn, the pager can not know that. Similar with
evict, anything can happen between nominate and evict.
This change helps the pager to decide if the returned error is from the
function itself, or if it happend earlier. In the latter case, it is
most likely fatal and should be handled as such.
nominate returns EAGAIN, evict EBUSY.
Signed-off-by: Olaf Hering <olaf@aepfle.de>
diff -r 266a12304601 -r ebc68ae15103 xen/arch/x86/mm/p2m.c
--- a/xen/arch/x86/mm/p2m.c
+++ b/xen/arch/x86/mm/p2m.c
@@ -735,19 +735,17 @@ int p2m_mem_paging_nominate(struct domai
p2m_type_t p2mt;
p2m_access_t a;
mfn_t mfn;
- int ret;
+ int ret = -EAGAIN;
p2m_lock(p2m);
mfn = p2m->get_entry(p2m, gfn, &p2mt, &a, p2m_query, NULL);
/* Check if mfn is valid */
- ret = -EINVAL;
if ( !mfn_valid(mfn) )
goto out;
/* Check p2m type */
- ret = -EAGAIN;
if ( !p2m_is_pageable(p2mt) )
goto out;
@@ -799,7 +797,7 @@ int p2m_mem_paging_evict(struct domain *
p2m_access_t a;
mfn_t mfn;
struct p2m_domain *p2m = p2m_get_hostp2m(d);
- int ret = -EINVAL;
+ int ret = -EBUSY;
p2m_lock(p2m);
@@ -812,7 +810,6 @@ int p2m_mem_paging_evict(struct domain *
if ( p2mt != p2m_ram_paging_out )
goto out;
- ret = -EBUSY;
/* Get the page so it doesn't get modified under Xen's feet */
page = mfn_to_page(mfn);
if ( unlikely(!get_page(page, d)) )
next reply other threads:[~2012-01-26 19:56 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-01-26 19:56 Olaf Hering [this message]
2012-01-30 9:51 ` [PATCH] xenpaging: unify return value in nominate and evict Tim Deegan
2012-01-30 10:24 ` Olaf Hering
2012-01-30 10:36 ` Tim Deegan
-- strict thread matches above, loose matches on Subject: below --
2012-01-30 12:07 Olaf Hering
2012-01-31 9:33 ` Tim Deegan
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ebc68ae15103061fa554.1327607777@probook.site \
--to=olaf@aepfle.de \
--cc=xen-devel@lists.xensource.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).