From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Andres Lagar-Cavilla" Subject: Re: [PATCH] tools/libxc: handle fallback in linux_privcmd_map_foreign_bulk properly Date: Thu, 26 Jan 2012 08:19:55 -0800 Message-ID: References: Reply-To: andres@lagarcavilla.org Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: xen-devel@lists.xensource.com Cc: olaf@aepfle.de List-Id: xen-devel@lists.xenproject.org > Date: Thu, 26 Jan 2012 14:36:30 +0100 > From: Olaf Hering > To: xen-devel@lists.xensource.com > Subject: [Xen-devel] [PATCH] tools/libxc: handle fallback in > linux_privcmd_map_foreign_bulk properly > Message-ID: > Content-Type: text/plain; charset="us-ascii" > > # HG changeset patch > # User Olaf Hering > # Date 1327584962 -3600 > # Node ID aa0d678fece208975984e8e59ca223c07fc50c06 > # Parent 89fdabcf315fdaabeebf05c51a6b3b6dd4c20e85 > tools/libxc: handle fallback in linux_privcmd_map_foreign_bulk properly > > If the first ioctl fails with ENOENT it means the command is known. If a > second attempt to map each gfn happens to fail then there is no need to > run the fallback code. Some gfns are paged and the fallback code would > not fix the failure. Instead return the EINVAL to the caller. > > Signed-off-by: Olaf Hering Acked-by: Andres Lagar-Cavilla Thanks, Andres > > diff -r 89fdabcf315f -r aa0d678fece2 tools/libxc/xc_linux_osdep.c > --- a/tools/libxc/xc_linux_osdep.c > +++ b/tools/libxc/xc_linux_osdep.c > @@ -217,6 +217,7 @@ static void *linux_privcmd_map_foreign_b > > rc = ioctl(fd, IOCTL_PRIVCMD_MMAPBATCH_V2, &ioctlx); > > + /* Command was recognized, some gfn in arr are in paging state */ > if ( rc < 0 && errno == ENOENT ) > { > for ( i = rc = 0; rc == 0 && i < num; i++ ) > @@ -235,8 +236,8 @@ static void *linux_privcmd_map_foreign_b > } while ( rc < 0 && errno == ENOENT && err[i] == -ENOENT ); > } > } > - > - if ( rc < 0 && errno == EINVAL && (int)num > 0 ) > + /* Command was not recognized, use fall back */ > + else if ( rc < 0 && errno == EINVAL && (int)num > 0 ) > { > /* > * IOCTL_PRIVCMD_MMAPBATCH_V2 is not supported - fall back to > >