Philip Martin wrote on Wed, Jul 25, 2012 at 11:09:54 +0100:
> Daniel Shahaf <danie...@elego.de> writes:
> 
> > Philip Martin wrote on Wed, Jul 25, 2012 at 10:49:36 +0100:
> >> 
> >> I attached to the issue a repository that demonstrates the corruption;
> >> verify doesn't report a problem on that repository.  What does verify
> >> check?
> >
> > validate_root_noderev() catches an instance of the #4129 corruption and
> > in its docstring xrefs svn_fs_fs__verify(), so I think the checks in the
> > former are done in the latter too.
> 
> validate_root_noderev is only called by write_final_rev and not during
> verify.  svn_fs_fs__verify calls svn_fs_fs__verify_root and that does:
> 
>         /* Issue #4129: bogus predecessors. */
>         /* Check 1: predecessor must be an earlier revision.
>          */
>         if (pred_rev >= root->rev)
>           return svn_error_createf(SVN_ERR_FS_CORRUPT, NULL,
>                                    "r%ld's root node's predecessor is r%ld"
>                                    " but must be earlier revision",
>                                    root->rev, pred_rev);

The check was included in svn_fs_fs__verify_root() in r1349313:

  /* Verify explicitly the predecessor of the root. */
  {
    ...
    /* Check the predecessor's revision. */
    if (pred_id)
      {
        SVN_ERR(svn_fs_fs__dag_get_node(&pred, root->fs, pred_id, pool));
        SVN_ERR(svn_fs_fs__dag_get_revision(&pred_rev, pred, pool));
        if (pred_rev+1 != root->rev)
          /* Issue #4129. */
          return svn_error_createf(SVN_ERR_FS_CORRUPT, NULL,
                                   "r%ld's root node's predecessor is r%ld",
                                   root->rev, pred_rev);
      }
    {

Reply via email to