| /* revprops.h --- everything needed to handle revprops in FSX |
| * |
| * ==================================================================== |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| * ==================================================================== |
| */ |
| |
| #ifndef SVN_LIBSVN_FS_X_REVPROPS_H |
| #define SVN_LIBSVN_FS_X_REVPROPS_H |
| |
| #include "svn_fs.h" |
| |
| #include "batch_fsync.h" |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif /* __cplusplus */ |
| |
| /* Auto-create / replace the revprop generation file in FS with its |
| * initial contents. In any case, FS will not hold an open handle to |
| * it after this function succeeds. |
| * |
| * Use SCRATCH_POOL for temporary allocations. |
| */ |
| svn_error_t * |
| svn_fs_x__reset_revprop_generation_file(svn_fs_t *fs, |
| apr_pool_t *scratch_pool); |
| |
| /* Invalidate the cached revprop generation value in FS->FSAP_DATA. |
| * This enforces a re-read upon the next revprop read. */ |
| void |
| svn_fs_x__invalidate_revprop_generation(svn_fs_t *fs); |
| |
| /* Utility function serializing PROPLIST into FILE and adding the checksum. |
| * Use SCRATCH_POOL for temporary allocations. |
| * |
| * Call this only when creating initial revprop file contents. |
| * For modifications use svn_fs_x__set_revision_proplist. |
| */ |
| svn_error_t * |
| svn_fs_x__write_non_packed_revprops(apr_file_t *file, |
| apr_hash_t *proplist, |
| apr_pool_t *scratch_pool); |
| |
| /* Read the revprops for revision REV in FS and return them in *PROPLIST_P. |
| * If BYPASS_CACHE is set, don't consult the disks but always read from disk. |
| * If REFRESH is set, update the revprop generation info; otherwise access |
| * potentially outdated cache data directly. |
| * |
| * Allocate the *PROPLIST_P in RESULT_POOL and use SCRATCH_POOL for temporary |
| * allocations. |
| */ |
| svn_error_t * |
| svn_fs_x__get_revision_proplist(apr_hash_t **proplist_p, |
| svn_fs_t *fs, |
| svn_revnum_t rev, |
| svn_boolean_t bypass_cache, |
| svn_boolean_t refresh, |
| apr_pool_t *result_pool, |
| apr_pool_t *scratch_pool); |
| |
| /* Set the revision property list of revision REV in filesystem FS to |
| PROPLIST. Use SCRATCH_POOL for temporary allocations. */ |
| svn_error_t * |
| svn_fs_x__set_revision_proplist(svn_fs_t *fs, |
| svn_revnum_t rev, |
| apr_hash_t *proplist, |
| apr_pool_t *scratch_pool); |
| |
| |
| /* Return TRUE, if for REVISION in FS, we can find the revprop pack file. |
| * Use SCRATCH_POOL for temporary allocations. |
| * Set *MISSING, if the reason is a missing manifest or pack file. |
| */ |
| svn_boolean_t |
| svn_fs_x__packed_revprop_available(svn_boolean_t *missing, |
| svn_fs_t *fs, |
| svn_revnum_t revision, |
| apr_pool_t *scratch_pool); |
| |
| |
| /****** Packing FSX shards *********/ |
| |
| /* For the revprop SHARD at SHARD_PATH with exactly MAX_FILES_PER_DIR |
| * revprop files in it, create a packed shared at PACK_FILE_DIR in |
| * filesystem FS. Schedule necessary fsync calls in BATCH. |
| * |
| * COMPRESSION_LEVEL defines how well the resulting pack file shall be |
| * compressed or whether is shall be compressed at all. Individual pack |
| * file containing more than one revision will be limited to a size of |
| * MAX_PACK_SIZE bytes before compression. |
| * |
| * CANCEL_FUNC and CANCEL_BATON are used in the usual way. Temporary |
| * allocations are done in SCRATCH_POOL. |
| */ |
| svn_error_t * |
| svn_fs_x__pack_revprops_shard(svn_fs_t *fs, |
| const char *pack_file_dir, |
| const char *shard_path, |
| apr_int64_t shard, |
| int max_files_per_dir, |
| apr_int64_t max_pack_size, |
| int compression_level, |
| svn_fs_x__batch_fsync_t *batch, |
| svn_cancel_func_t cancel_func, |
| void *cancel_baton, |
| apr_pool_t *scratch_pool); |
| |
| #ifdef __cplusplus |
| } |
| #endif /* __cplusplus */ |
| |
| #endif /* SVN_LIBSVN_FS_X_REVPROPS_H */ |