From 60d000794d7f00453817a34af4eac0b8b9f780a8 Mon Sep 17 00:00:00 2001 From: Andrew Deason Date: Mon, 7 May 2012 15:49:34 -0500 Subject: [PATCH] fs: Report default storebehind when errors exist After 904c9fbe, we no longer print out the default store asynchrony when any of the supplied paths results in a pioctl error. However, if just one (or a few) of the paths supplied results in an error (such as, the path does not exist), this does not prevent us from reporting the default value. Instead, keep track of whether or not we have a valid value, and try to determine the default if we haven't already by the end of StoreBehindCmd, and print it out. Reviewed-on: http://gerrit.openafs.org/7376 Tested-by: BuildBot Reviewed-by: Chas Williams - CONTRACTOR Reviewed-by: Derrick Brashear (cherry picked from commit 427f53eea7f9c05e7b1913c91d57777d72bc30b2) Change-Id: I04bebe60fbb275ca44caeed9b8696283c4ded36b Reviewed-on: http://gerrit.openafs.org/7384 Tested-by: BuildBot Reviewed-by: Derrick Brashear --- src/venus/fs.c | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/src/venus/fs.c b/src/venus/fs.c index 31b2f5621..7439028cb 100644 --- a/src/venus/fs.c +++ b/src/venus/fs.c @@ -3305,6 +3305,7 @@ StoreBehindCmd(struct cmd_syndesc *as, void *arock) afs_int32 allfiles; char *t; int error = 0; + int async_default = -1; tsb.sb_thisfile = -1; ti = as->parms[0].items; /* -kbytes */ @@ -3365,14 +3366,18 @@ StoreBehindCmd(struct cmd_syndesc *as, void *arock) continue; } - if (verbose && (blob.out_size == sizeof(tsb2))) { - if (tsb2.sb_thisfile == -1) { - fprintf(stdout, "Will store %s according to default.\n", - ti->data); + if (blob.out_size == sizeof(tsb2)) { + async_default = tsb2.sb_default; + + if (verbose) { + if (tsb2.sb_thisfile == -1) { + fprintf(stdout, "Will store %s according to default.\n", + ti->data); } else { - fprintf(stdout, - "Will store up to %d kbytes of %s asynchronously.\n", - (tsb2.sb_thisfile / 1024), ti->data); + fprintf(stdout, + "Will store up to %d kbytes of %s asynchronously.\n", + (tsb2.sb_thisfile / 1024), ti->data); + } } } } @@ -3380,7 +3385,7 @@ StoreBehindCmd(struct cmd_syndesc *as, void *arock) /* If no files - make at least one pioctl call, or * set the allfiles default if we need to. */ - if (!as->parms[1].items || (allfiles != -1)) { + if (async_default < 0 || (allfiles != -1)) { tsb.sb_default = allfiles; memset(&tsb2, 0, sizeof(tsb2)); blob.out = (char *)&tsb2; @@ -3389,13 +3394,16 @@ StoreBehindCmd(struct cmd_syndesc *as, void *arock) if (code) { Die(errno, ((allfiles == -1) ? 0 : "-allfiles")); error = 1; + + } else if (blob.out_size == sizeof(tsb2)) { + async_default = tsb2.sb_default; } } /* Having no arguments also reports the default store asynchrony */ - if (!error && verbose && (blob.out_size == sizeof(tsb2))) { + if (async_default >= 0 && verbose) { fprintf(stdout, "Default store asynchrony is %d kbytes.\n", - (tsb2.sb_default / 1024)); + (async_default / 1024)); } return error; -- 2.39.5