stefan2_at_apache.org wrote on Thu, Aug 01, 2013 at 17:36:42 -0000:
> Author: stefan2
> Date: Thu Aug 1 17:36:42 2013
> New Revision: 1509342
>
> URL: http://svn.apache.org/r1509342
> Log:
> On the log-addressing branch:
High-level question: how does this compare to fsx? Is this a feature
fsx already has that is now being backported to fsfs?
> Bump FSFS format number and introduce
> the new "addressing" option to fsfs format files. Make that available
> to our internal code through the new svn_fs_fs__use_log_addressing API.
> IOW, we support mixed addressing repos from the beginning.
> +++ subversion/branches/log-addressing/subversion/libsvn_fs_fs/fs_fs.c Thu Aug 1 17:36:42 2013
> @@ -323,17 +329,42 @@ read_format(int *pformat, int *max_files
> + /* non-shared repositories never use logical addressing */
> + if (!*max_files_per_dir)
> + *min_log_addressing_rev = SVN_INVALID_REVNUM;
Can we detect
7
layout linear
addressing logical 42
and make it an error?
> @@ -987,14 +1042,59 @@ svn_fs_fs__create(svn_fs_t *fs,
> + /* set compatible version according to generic option */
> + compatible = svn_hash_gets(fs->config, SVN_FS_CONFIG_COMPATIBLE_VERSION);
...
> else if (svn_hash_gets(fs->config, SVN_FS_CONFIG_PRE_1_8_COMPATIBLE))
> - format = 4;
> + compatible_version->minor = 7;
> +
> + /* select format number */
> + switch(compatible_version->minor)
> + {
What about case 0? Right now it'll fall to the "default" case, I think
we should either make it an error or funnel it into the 1.1 case.
> + case 1:
> + case 2:
> + case 3: format = 1;
> + break;
> +
> + case 4: format = 2;
> + break;
> +
> + case 5: format = 3;
> + break;
> +
> + case 6:
> + case 7: format = 4;
> + break;
> +
> + case 8: format = 5;
> + break;
Format 5 was never released, I think you meant 6.
Should the definition of SVN_FS_FS__FORMAT_NUMBER point to this switch()
statement? eg, "If you increment this, update svn_fs_fs__create()"
> +
> + default:format = SVN_FS_FS__FORMAT_NUMBER;
> + }
> }
> ffd->format = format;
>
> @@ -1002,6 +1102,12 @@ svn_fs_fs__create(svn_fs_t *fs,
> if (format >= SVN_FS_FS__MIN_LAYOUT_FORMAT_OPTION_FORMAT)
> ffd->max_files_per_dir = SVN_FS_FS_DEFAULT_MAX_FILES_PER_DIR;
>
> + /* Select the addressing mode depending on the format. */
> + if (format >= SVN_FS_FS__MIN_LOG_ADDRESSING_FORMAT)
> + ffd->min_log_addressing_rev = 0;
> + else
> + ffd->min_log_addressing_rev = SVN_INVALID_REVNUM;
Shouldn't you set this to SVN_INVALID_REVNUM in initialize_fs_struct()
as well?
Received on 2013-08-02 05:11:50 CEST