> Before I put this in, is there any particular reason you're adding
> DMP_WARNING?  Why not just add these entries as DMP_NORMAL?

First reason (beauty): I decided to put the warnings into a different
group than the normal output, just to be ready for further additions of
warnings of other dump programs and to have the ability to treat them
differently in the future.

In this case, the warnings seem to be quite normal for busy XFS
filesystems. But xfsdump prints a warning and hopefully the xfsdump
developers will have had their reasons for it: why don't recognize it as
a warning but continue as you would do on the command line? ("A warning?
I've got the backups - who cares if I can recover?" ;-))

Second reason (technical nature): the dmpline_t/regex pairs in the array
re_table (client-src/sendbackup-dump.c, line 44) are matched against
dump's output in order of array index in parse_dumpline().

client-src/sendbackup.c:
   729  dmpline_t parse_dumpline(str)
   730  char *str;
   731  /*
   732   * Checks the dump output line in str against the regex table.
   733   */
   734  {
   735      regex_t *rp;
   736  
   737      /* check for error match */
   738      for(rp = program->re_table; rp->regex != NULL; rp++) {
   739          if(match(rp->regex, str))
   740              break;
   741      }

The array re_table is initialized with pairs in order of DMP_SIZE,
DMP_STRANGE, DMP_NORMAL and DMP_STRANGE (for all other lines). One of
the regexps of dmpline_t DMP_STRANGE is "[Ff]ail". 

client-src/sendbackup-dump.c:
   100    /* strange dump lines */
   101    { DMP_STRANGE, "should not happen" },
   102    { DMP_STRANGE, "Cannot open" },
   103    { DMP_STRANGE, "[Ee]rror" },
   104    { DMP_STRANGE, "[Ff]ail" },
   105    /* XXX add more ERROR entries here by scanning dump sources?
*/
   106  
   107    /* any blank or non-strange DUMP: lines are marked as normal
*/
   108    { DMP_NORMAL, "^ *DUMP:" },

If you added "failed to get bulkstat" to DMP_NORMAL, you would never
match DMP_NORMAL because DMP_STRANGE would have been matched first. So I
inserted DMP_WARNING between DMP_SIZE and DMP_STRANGE.

The XFS boys of SGI told me not to bang my head on these warnings.
Bulkstat is a special XFS feature to get lots of inodes in a single
rush. Sometimes an inode cannot be caught by bulkstat due to filesystem
activity; instead, xfsdump will do a single stat call later on it.

Reply via email to