WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

Re: [Xen-devel] [PATCH 03 of 24] xenpaging: use PERROR to print errno

To: Olaf Hering <olaf@xxxxxxxxx>
Subject: Re: [Xen-devel] [PATCH 03 of 24] xenpaging: use PERROR to print errno
From: George Dunlap <George.Dunlap@xxxxxxxxxxxxx>
Date: Tue, 4 Oct 2011 17:19:12 +0100
Cc: xen-devel@xxxxxxxxxxxxxxxxxxx
Delivery-date: Tue, 04 Oct 2011 09:19:54 -0700
Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=mime-version:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=vcXcSFJb4DSyFsZC4AGhfJj1tJDGeArl70MLmSiD3oc=; b=nYCjj1CBkVnCyO6UIAJLBbhHJZCe813KF+t5aSO6Lk9V3BvLoHHMmPwn+WFLxlFiYX +aa1s/BsDz0lRBOoVb78cmT59sFB6r/Ae5cJZOqKerW/ucn3hwT/epCE4mfhFNOurV6K FlXWUrrv9J9hV6qk4YXqAH6NvjXcB4hnOFQXc=
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: <ee4c4c7699e0de2b6bdd.1317657280@xxxxxxxxxxxx>
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
References: <patchbomb.1317657277@xxxxxxxxxxxx> <ee4c4c7699e0de2b6bdd.1317657280@xxxxxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
On Mon, Oct 3, 2011 at 4:54 PM, Olaf Hering <olaf@xxxxxxxxx> wrote:
> # HG changeset patch
> # User Olaf Hering <olaf@xxxxxxxxx>
> # Date 1317653597 -7200
> # Node ID ee4c4c7699e0de2b6bddce1e816d35f36ffb0470
> # Parent  21b7c9a6545ac1ec9d91fce83d46aab0b5808b05
> xenpaging: use PERROR to print errno
>
> Also catch lseek() errors in file_op().
>
> Signed-off-by: Olaf Hering <olaf@xxxxxxxxx>
>
> diff -r 21b7c9a6545a -r ee4c4c7699e0 tools/xenpaging/file_ops.c
> --- a/tools/xenpaging/file_ops.c
> +++ b/tools/xenpaging/file_ops.c
> @@ -37,6 +37,11 @@ static int file_op(int fd, void *page, i
>     int ret;
>
>     seek_ret = lseek(fd, i << PAGE_SHIFT, SEEK_SET);
> +    if (seek_ret == -1)
> +    {
> +        ret = -errno;
> +        goto err;
> +    }

Wouldn't it be more idiomatic to make both this check and the other
check in the function:
* check for seek_ret < 0 (rather than -1)
* make file_op() return -1
* Let the caller read errno?  (Rather than returning -errno)?


>
>     total = 0;
>     while ( total < PAGE_SIZE )
> diff -r 21b7c9a6545a -r ee4c4c7699e0 tools/xenpaging/xenpaging.c
> --- a/tools/xenpaging/xenpaging.c
> +++ b/tools/xenpaging/xenpaging.c
> @@ -90,7 +90,7 @@ static int xenpaging_wait_for_event_or_t
>         if (errno == EINTR)
>             return 0;
>
> -        ERROR("Poll exited with an error");
> +        PERROR("Poll exited with an error");
>         return -errno;
>     }
>
> @@ -121,7 +121,7 @@ static int xenpaging_wait_for_event_or_t
>         port = xc_evtchn_pending(xce);
>         if ( port == -1 )
>         {
> -            ERROR("Failed to read port from event channel");
> +            PERROR("Failed to read port from event channel");
>             rc = -1;
>             goto err;
>         }
> @@ -129,7 +129,7 @@ static int xenpaging_wait_for_event_or_t
>         rc = xc_evtchn_unmask(xce, port);
>         if ( rc < 0 )
>         {
> -            ERROR("Failed to unmask event channel port");
> +            PERROR("Failed to unmask event channel port");
>         }
>     }
>  err:
> @@ -185,7 +185,7 @@ static xenpaging_t *xenpaging_init(domid
>     paging->xs_handle = xs_open(0);
>     if ( paging->xs_handle == NULL )
>     {
> -        ERROR("Error initialising xenstore connection");
> +        PERROR("Error initialising xenstore connection");
>         goto err;
>     }
>
> @@ -193,7 +193,7 @@ static xenpaging_t *xenpaging_init(domid
>     snprintf(watch_token, sizeof(watch_token), "%u", domain_id);
>     if ( xs_watch(paging->xs_handle, "@releaseDomain", watch_token) == false )
>     {
> -        ERROR("Could not bind to shutdown watch\n");
> +        PERROR("Could not bind to shutdown watch\n");
>         goto err;
>     }
>
> @@ -214,7 +214,7 @@ static xenpaging_t *xenpaging_init(domid
>     paging->mem_event.shared_page = init_page();
>     if ( paging->mem_event.shared_page == NULL )
>     {
> -        ERROR("Error initialising shared page");
> +        PERROR("Error initialising shared page");
>         goto err;
>     }
>
> @@ -222,7 +222,7 @@ static xenpaging_t *xenpaging_init(domid
>     paging->mem_event.ring_page = init_page();
>     if ( paging->mem_event.ring_page == NULL )
>     {
> -        ERROR("Error initialising ring page");
> +        PERROR("Error initialising ring page");
>         goto err;
>     }
>
> @@ -240,13 +240,13 @@ static xenpaging_t *xenpaging_init(domid
>     {
>         switch ( errno ) {
>             case EBUSY:
> -                ERROR("xenpaging is (or was) active on this domain");
> +                PERROR("xenpaging is (or was) active on this domain");
>                 break;
>             case ENODEV:
> -                ERROR("EPT not supported for this guest");
> +                PERROR("EPT not supported for this guest");
>                 break;
>             default:
> -                ERROR("Error initialising shared page: %s", strerror(errno));
> +                PERROR("Error initialising shared page: %s", 
> strerror(errno));
>                 break;
>         }
>         goto err;
> @@ -256,7 +256,7 @@ static xenpaging_t *xenpaging_init(domid
>     paging->mem_event.xce_handle = xc_evtchn_open(NULL, 0);
>     if ( paging->mem_event.xce_handle == NULL )
>     {
> -        ERROR("Failed to open event channel");
> +        PERROR("Failed to open event channel");
>         goto err;
>     }
>
> @@ -266,7 +266,7 @@ static xenpaging_t *xenpaging_init(domid
>                                     paging->mem_event.shared_page->port);
>     if ( rc < 0 )
>     {
> -        ERROR("Failed to bind event channel");
> +        PERROR("Failed to bind event channel");
>         goto err;
>     }
>
> @@ -276,7 +276,7 @@ static xenpaging_t *xenpaging_init(domid
>     paging->domain_info = malloc(sizeof(xc_domaininfo_t));
>     if ( paging->domain_info == NULL )
>     {
> -        ERROR("Error allocating memory for domain info");
> +        PERROR("Error allocating memory for domain info");
>         goto err;
>     }
>
> @@ -284,7 +284,7 @@ static xenpaging_t *xenpaging_init(domid
>                                paging->domain_info);
>     if ( rc != 1 )
>     {
> -        ERROR("Error getting domain info");
> +        PERROR("Error getting domain info");
>         goto err;
>     }
>
> @@ -292,7 +292,7 @@ static xenpaging_t *xenpaging_init(domid
>     paging->bitmap = bitmap_alloc(paging->domain_info->max_pages);
>     if ( !paging->bitmap )
>     {
> -        ERROR("Error allocating bitmap");
> +        PERROR("Error allocating bitmap");
>         goto err;
>     }
>     DPRINTF("max_pages = %"PRIx64"\n", paging->domain_info->max_pages);
> @@ -308,7 +308,7 @@ static xenpaging_t *xenpaging_init(domid
>     rc = policy_init(paging);
>     if ( rc != 0 )
>     {
> -        ERROR("Error initialising policy");
> +        PERROR("Error initialising policy");
>         goto err;
>     }
>
> @@ -355,14 +355,14 @@ static int xenpaging_teardown(xenpaging_
>     rc = xc_mem_paging_disable(xch, paging->mem_event.domain_id);
>     if ( rc != 0 )
>     {
> -        ERROR("Error tearing down domain paging in xen");
> +        PERROR("Error tearing down domain paging in xen");
>     }
>
>     /* Unbind VIRQ */
>     rc = xc_evtchn_unbind(paging->mem_event.xce_handle, 
> paging->mem_event.port);
>     if ( rc != 0 )
>     {
> -        ERROR("Error unbinding event port");
> +        PERROR("Error unbinding event port");
>     }
>     paging->mem_event.port = -1;
>
> @@ -370,7 +370,7 @@ static int xenpaging_teardown(xenpaging_
>     rc = xc_evtchn_close(paging->mem_event.xce_handle);
>     if ( rc != 0 )
>     {
> -        ERROR("Error closing event channel");
> +        PERROR("Error closing event channel");
>     }
>     paging->mem_event.xce_handle = NULL;
>
> @@ -381,7 +381,7 @@ static int xenpaging_teardown(xenpaging_
>     rc = xc_interface_close(xch);
>     if ( rc != 0 )
>     {
> -        ERROR("Error closing connection to xen");
> +        PERROR("Error closing connection to xen");
>     }
>
>     return 0;
> @@ -441,7 +441,7 @@ static int xenpaging_evict_page(xenpagin
>                                 PROT_READ | PROT_WRITE, &gfn, 1);
>     if ( page == NULL )
>     {
> -        ERROR("Error mapping page");
> +        PERROR("Error mapping page");
>         goto out;
>     }
>
> @@ -449,8 +449,8 @@ static int xenpaging_evict_page(xenpagin
>     ret = write_page(fd, page, i);
>     if ( ret != 0 )
>     {
> +        PERROR("Error copying page");
>         munmap(page, PAGE_SIZE);
> -        ERROR("Error copying page");
>         goto out;
>     }
>
> @@ -464,7 +464,7 @@ static int xenpaging_evict_page(xenpagin
>                               victim->gfn);
>     if ( ret != 0 )
>     {
> -        ERROR("Error evicting page");
> +        PERROR("Error evicting page");
>         goto out;
>     }
>
> @@ -520,7 +520,7 @@ static int xenpaging_populate_page(xenpa
>                 sleep(1);
>                 continue;
>             }
> -            ERROR("Error preparing for page in");
> +            PERROR("Error preparing for page in");
>             goto out_map;
>         }
>     }
> @@ -532,7 +532,7 @@ static int xenpaging_populate_page(xenpa
>                                 PROT_READ | PROT_WRITE, &gfn, 1);
>     if ( page == NULL )
>     {
> -        ERROR("Error mapping page: page is null");
> +        PERROR("Error mapping page: page is null");
>         goto out_map;
>     }
>
> @@ -540,7 +540,7 @@ static int xenpaging_populate_page(xenpa
>     ret = read_page(fd, page, i);
>     if ( ret != 0 )
>     {
> -        ERROR("Error reading page");
> +        PERROR("Error reading page");
>         goto out;
>     }
>
> @@ -579,7 +579,7 @@ static int evict_victim(xenpaging_t *pag
>         {
>             if ( j++ % 1000 == 0 )
>                 if ( xenpaging_mem_paging_flush_ioemu_cache(paging) )
> -                    ERROR("Error flushing ioemu cache");
> +                    PERROR("Error flushing ioemu cache");
>         }
>     }
>     while ( ret );
> @@ -670,7 +670,7 @@ int main(int argc, char *argv[])
>         rc = xenpaging_wait_for_event_or_timeout(paging);
>         if ( rc < 0 )
>         {
> -            ERROR("Error getting event");
> +            PERROR("Error getting event");
>             goto out;
>         }
>         else if ( rc != 0 )
> @@ -710,7 +710,7 @@ int main(int argc, char *argv[])
>                     rc = xenpaging_populate_page(paging, req.gfn, fd, i);
>                     if ( rc != 0 )
>                     {
> -                        ERROR("Error populating page");
> +                        PERROR("Error populating page");
>                         goto out;
>                     }
>                 }
> @@ -723,7 +723,7 @@ int main(int argc, char *argv[])
>                 rc = xenpaging_resume_page(paging, &rsp, 1);
>                 if ( rc != 0 )
>                 {
> -                    ERROR("Error resuming page");
> +                    PERROR("Error resuming page");
>                     goto out;
>                 }
>
> @@ -752,7 +752,7 @@ int main(int argc, char *argv[])
>                     rc = xenpaging_resume_page(paging, &rsp, 0);
>                     if ( rc != 0 )
>                     {
> -                        ERROR("Error resuming");
> +                        PERROR("Error resuming");
>                         goto out;
>                     }
>                 }
>
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@xxxxxxxxxxxxxxxxxxx
> http://lists.xensource.com/xen-devel
>

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel

<Prev in Thread] Current Thread [Next in Thread>