xfs
[Top] [All Lists]

[PATCH 2/2] xfsdump: fix DEBUGPARTIALS build

To: xfs-oss <xfs@xxxxxxxxxxx>
Subject: [PATCH 2/2] xfsdump: fix DEBUGPARTIALS build
From: Eric Sandeen <sandeen@xxxxxxxxxxx>
Date: Tue, 08 Oct 2013 17:31:41 -0500
Delivered-to: xfs@xxxxxxxxxxx
In-reply-to: <525480A6.3000202@xxxxxxxxxx>
References: <525480A6.3000202@xxxxxxxxxx>
User-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:17.0) Gecko/20130801 Thunderbird/17.0.8
the DEBUGPARTIALS debug code might have been helpful
in this saga, so get it building again.

The primary build failure is that STREAM_MAX isn't
defined for the num_partials[STREAM_MAX] array;
the loop which uses that array iterates "drivecnt"
times, so just allocate an array of that size.

Fix a few printf format warnings while we're at it.

Signed-off-by: Eric Sandeen <sandeen@xxxxxxxxxx>
---

diff --git a/restore/content.c b/restore/content.c
index cc49336..8ad0f00 100644
--- a/restore/content.c
+++ b/restore/content.c
@@ -8857,22 +8857,23 @@ dump_partials(void)
        int i;
 
        pi_lock();
-       printf("\npartial_reg: count=%d\n", persp->a.parrestcnt);
+       printf("\npartial_reg: count=%d\n", (int)persp->a.parrestcnt);
        if (persp->a.parrestcnt > 0) {
                for (i=0; i < partialmax; i++ ) {
                        if (persp->a.parrest[i].is_ino > 0) {
                                int j;
 
                                isptr = &persp->a.parrest[i];
-                               printf( "\tino=%lld ", isptr->is_ino);
+                               printf("\tino=%llu ",
+                                      (unsigned long long)isptr->is_ino);
                                for (j=0, bsptr=isptr->is_bs;
                                     j < drivecnt; 
                                     j++, bsptr++)
                                {
                                        if (bsptr->endoffset > 0) {
                                                printf("%d:%lld-%lld ",
-                                                    j, bsptr->offset, 
-                                                    bsptr->endoffset);
+                                                  j, (long long)bsptr->offset,
+                                                  (long long)bsptr->endoffset);
                                        } 
                                }
                                printf( "\n");
@@ -8892,13 +8893,17 @@ dump_partials(void)
 void
 check_valid_partials(void)
 {
-        int num_partials[STREAM_MAX]; /* sum of partials for a given drive */
+       int *num_partials; /* array for sum of partials for a given drive */
        partial_rest_t *isptr = NULL;
        bytespan_t *bsptr = NULL;
        int i;
 
        /* zero the sums for each stream */
-        memset(num_partials, 0, sizeof(num_partials));
+       num_partials = calloc(drivecnt, sizeof(int));
+       if (!num_partials) {
+               perror("num_partials array allocation");
+               return;
+       }
 
        pi_lock();
        if (persp->a.parrestcnt > 0) {
@@ -8926,6 +8931,7 @@ check_valid_partials(void)
                }
        }
        pi_unlock();
+       free(num_partials);
 }
 #endif
 


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