[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] xenpaging: unify return value in nominate and evict
# HG changeset patch # User Olaf Hering <olaf@xxxxxxxxx> # Date 1327925194 -3600 # Node ID 828639c20dcc9f48d155bd99ef6f963484ef7527 # Parent f31d8d1b534eab54178c2a73112562d46bbd6fcb 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 and evict return EBUSY, which is supposed to mean "pager request reached target function, and failed." Signed-off-by: Olaf Hering <olaf@xxxxxxxxx> Acked-by: Tim Deegan <tim@xxxxxxx> Committed-by: Tim Deegan <tim@xxxxxxx> --- diff -r f31d8d1b534e -r 828639c20dcc xen/arch/x86/mm/p2m.c --- a/xen/arch/x86/mm/p2m.c Mon Jan 30 15:23:39 2012 +0000 +++ b/xen/arch/x86/mm/p2m.c Mon Jan 30 13:06:34 2012 +0100 @@ -735,19 +735,17 @@ p2m_type_t p2mt; p2m_access_t a; mfn_t mfn; - int ret; + int ret = -EBUSY; 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 @@ 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 @@ 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)) ) _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |