| /* fs_x.h : interface to the FSX layer |
| * |
| * ==================================================================== |
| * 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_FS_X_H |
| #define SVN_LIBSVN_FS_X_FS_X_H |
| |
| #include "fs.h" |
| |
| /* Read the 'format' file of fsx filesystem FS and store its info in FS. |
| * Use SCRATCH_POOL for temporary allocations. */ |
| svn_error_t * |
| svn_fs_x__read_format_file(svn_fs_t *fs, |
| apr_pool_t *scratch_pool); |
| |
| /* Open the fsx filesystem pointed to by PATH and associate it with |
| filesystem object FS. Use SCRATCH_POOL for temporary allocations. |
| |
| ### Some parts of *FS must have been initialized beforehand; some parts |
| (including FS->path) are initialized by this function. */ |
| svn_error_t * |
| svn_fs_x__open(svn_fs_t *fs, |
| const char *path, |
| apr_pool_t *scratch_pool); |
| |
| /* Initialize parts of the FS data that are being shared across multiple |
| filesystem objects. Use COMMON_POOL for process-wide and SCRATCH_POOL |
| for temporary allocations. Use COMMON_POOL_LOCK to ensure that the |
| initialization is serialized. */ |
| svn_error_t * |
| svn_fs_x__initialize_shared_data(svn_fs_t *fs, |
| svn_mutex__t *common_pool_lock, |
| apr_pool_t *scratch_pool, |
| apr_pool_t *common_pool); |
| |
| /* Upgrade the fsx filesystem FS. Indicate progress via the optional |
| * NOTIFY_FUNC callback using NOTIFY_BATON. The optional CANCEL_FUNC |
| * will periodically be called with CANCEL_BATON to allow for preemption. |
| * Use SCRATCH_POOL for temporary allocations. */ |
| svn_error_t * |
| svn_fs_x__upgrade(svn_fs_t *fs, |
| svn_fs_upgrade_notify_t notify_func, |
| void *notify_baton, |
| svn_cancel_func_t cancel_func, |
| void *cancel_baton, |
| apr_pool_t *scratch_pool); |
| |
| /* Set *YOUNGEST to the youngest revision in filesystem FS. Do any |
| temporary allocation in SCRATCH_POOL. */ |
| svn_error_t * |
| svn_fs_x__youngest_rev(svn_revnum_t *youngest, |
| svn_fs_t *fs, |
| apr_pool_t *scratch_pool); |
| |
| /* Return SVN_ERR_FS_NO_SUCH_REVISION if the given revision REV is newer |
| than the current youngest revision in FS or is simply not a valid |
| revision number, else return success. Use SCRATCH_POOL for temporary |
| allocations. */ |
| svn_error_t * |
| svn_fs_x__ensure_revision_exists(svn_revnum_t rev, |
| svn_fs_t *fs, |
| apr_pool_t *scratch_pool); |
| |
| /* Set *LENGTH to the be fulltext length of the node revision |
| specified by NODEREV. */ |
| svn_error_t * |
| svn_fs_x__file_length(svn_filesize_t *length, |
| svn_fs_x__noderev_t *noderev); |
| |
| /* Return TRUE if the representations in A and B have equal contents, else |
| return FALSE. */ |
| svn_boolean_t |
| svn_fs_x__file_text_rep_equal(svn_fs_x__representation_t *a, |
| svn_fs_x__representation_t *b); |
| |
| /* Set *EQUAL to TRUE if the property representations in A and B within FS |
| have equal contents, else set it to FALSE. If STRICT is not set, allow |
| for false negatives. |
| Use SCRATCH_POOL for temporary allocations. */ |
| svn_error_t * |
| svn_fs_x__prop_rep_equal(svn_boolean_t *equal, |
| svn_fs_t *fs, |
| svn_fs_x__noderev_t *a, |
| svn_fs_x__noderev_t *b, |
| svn_boolean_t strict, |
| apr_pool_t *scratch_pool); |
| |
| |
| /* Return a copy of the representation REP allocated from RESULT_POOL. */ |
| svn_fs_x__representation_t * |
| svn_fs_x__rep_copy(svn_fs_x__representation_t *rep, |
| apr_pool_t *result_pool); |
| |
| |
| /* Return the recorded checksum of type KIND for the text representation |
| of NODREV into CHECKSUM, allocating from RESULT_POOL. If no stored |
| checksum is available, put all NULL into CHECKSUM. */ |
| svn_error_t * |
| svn_fs_x__file_checksum(svn_checksum_t **checksum, |
| svn_fs_x__noderev_t *noderev, |
| svn_checksum_kind_t kind, |
| apr_pool_t *result_pool); |
| |
| /* Under the repository db PATH, create a FSFS repository with FORMAT, |
| * the given SHARD_SIZE. If not supported by the respective format, |
| * the latter two parameters will be ignored. FS will be updated. |
| * |
| * The only file not being written is the 'format' file. This allows |
| * callers such as hotcopy to modify the contents before turning the |
| * tree into an accessible repository. |
| * |
| * Use SCRATCH_POOL for temporary allocations. |
| */ |
| svn_error_t * |
| svn_fs_x__create_file_tree(svn_fs_t *fs, |
| const char *path, |
| int format, |
| int shard_size, |
| apr_pool_t *scratch_pool); |
| |
| /* Create a fs_x fileysystem referenced by FS at path PATH. Get any |
| temporary allocations from SCRATCH_POOL. |
| |
| ### Some parts of *FS must have been initialized beforehand; some parts |
| (including FS->path) are initialized by this function. */ |
| svn_error_t * |
| svn_fs_x__create(svn_fs_t *fs, |
| const char *path, |
| apr_pool_t *scratch_pool); |
| |
| /* Set the uuid of repository FS to UUID and the instance ID to INSTANCE_ID. |
| If any of them is NULL, use a newly generated UUID / ID instead. |
| |
| If OVERWRITE is not set, the uuid file must not exist yet implying this |
| is a fresh repository. |
| |
| Perform temporary allocations in SCRATCH_POOL. */ |
| svn_error_t * |
| svn_fs_x__set_uuid(svn_fs_t *fs, |
| const char *uuid, |
| const char *instance_id, |
| svn_boolean_t overwrite, |
| apr_pool_t *scratch_pool); |
| |
| /* Read the format number and maximum number of files per directory |
| from PATH and return them in *PFORMAT and *MAX_FILES_PER_DIR |
| respectively. |
| |
| *MAX_FILES_PER_DIR is obtained from the 'layout' format option, and |
| will be set to zero if a linear scheme should be used. |
| |
| Use SCRATCH_POOL for temporary allocation. */ |
| svn_error_t * |
| svn_fs_x__write_format(svn_fs_t *fs, |
| svn_boolean_t overwrite, |
| apr_pool_t *scratch_pool); |
| |
| /* Find the value of the property named PROPNAME in transaction REV. |
| Return the contents in *VALUE_P, allocated from RESULT_POOL. |
| If REFRESH is not set, continue using the potentially outdated |
| revprop generation value in FS->FSAP_DATA. |
| Use SCRATCH_POOL for temporary allocations. */ |
| svn_error_t * |
| svn_fs_x__revision_prop(svn_string_t **value_p, |
| svn_fs_t *fs, |
| svn_revnum_t rev, |
| const char *propname, |
| svn_boolean_t refresh, |
| apr_pool_t *result_pool, |
| apr_pool_t *scratch_pool); |
| |
| /* Change, add, or delete a property on a revision REV in filesystem |
| FS. NAME gives the name of the property, and value, if non-NULL, |
| gives the new contents of the property. If value is NULL, then the |
| property will be deleted. If OLD_VALUE_P is not NULL, do nothing unless |
| the preexisting value is *OLD_VALUE_P. |
| Do any temporary allocation in SCRATCH_POOL. */ |
| svn_error_t * |
| svn_fs_x__change_rev_prop(svn_fs_t *fs, |
| svn_revnum_t rev, |
| const char *name, |
| const svn_string_t *const *old_value_p, |
| const svn_string_t *value, |
| apr_pool_t *scratch_pool); |
| |
| /* If directory PATH does not exist, create it and give it the same |
| permissions as FS_PATH. Do any temporary allocation in SCRATCH_POOL. */ |
| svn_error_t * |
| svn_fs_x__ensure_dir_exists(const char *path, |
| const char *fs_path, |
| apr_pool_t *scratch_pool); |
| |
| /* Initialize all session-local caches in FS according to the global |
| cache settings. Use SCRATCH_POOL for temporary allocations. |
| |
| Please note that it is permissible for this function to set some |
| or all of these caches to NULL, regardless of any setting. */ |
| svn_error_t * |
| svn_fs_x__initialize_caches(svn_fs_t *fs, |
| apr_pool_t *scratch_pool); |
| |
| #endif |