Checkout Tools
  • last updated 1 hour ago
Constraints: committers
Constraints: files
Constraints: dates

Changeset 1620909 is being indexed.

[Reverted in r1620928]

Make FSFS export the private APIs that svnfsfs comsumes.

Not much going on here, mainly moving lots of declarations

and definitions to the new svn_fs_fs_private.h header.

* build.conf

(libsvn_fs_fs): Tell msvc what to export.

* subversion/include/private/svn_fs_fs_private.h

(): New header file. Contents taken from the following headers.

* subversion/libsvn_fs_fs/fs.h




fs_fs_data_t): Moved to the new header.

* subversion/libsvn_fs_fs/id.h

(svn_fs_fs__id_part_t): Same.

* subversion/libsvn_fs_fs/index.h







svn_fs_fs__p2l_index_from_p2l_entries): Same.

* subversion/libsvn_fs_fs/pack.h

(svn_fs_fs__get_packed_offset): Same.

* subversion/libsvn_fs_fs/rev_file.h






svn_fs_fs__close_revision_file): Same.

* subversion/libsvn_fs_fs/transaction.h

(svn_fs_fs__add_index_data): Same.

* subversion/libsvn_fs_fs/util.h

(svn_fs_fs__use_log_addressing): Same.

* subversion/libsvn_fs_fs/cached_data.c

(): Add (now) missing #include.

* subversion/svnfsfs/dump-index-cmd.c,



(): #include the new header instead of the lib-internal ones.

    • ?
* 1.8.x/STATUS

Withdraw r1611379 group and replace it with r1619774.

On the revprop-caching-ng branch: No functional change.


(): Document that we are done and what we did.

* subversion/libsvn_fs_fs/id.c

(svn_fs_fs__id_eq): Compare element-by-element for best portability.

On the revprop-caching-ng branch: Remove the "named atomics" code.

* build.conf

(msvc-export): Remove reference to feature header.


named_atomic-proc-test): Remove these test build targets.

(__ALL_TESTS__): No longer depend on the above.


(BUILD_RULES): There is no "sub-test" install target anymore.

* subversion/include/private/svn_named_atomic.h,


Remove the feature implementation.

* subversion/tests/libsvn_subr/named_atomic-test.c,



Remove the test source code.

    • ?
    • ?
On the revprop-caching-ng branch: Sync'ing FSX with FSFS:

Merge revisions r1619782-1620595 from subversion/libsvn_fs_fs

into subversion/libsvn_fs_x and resolve a few trivial text conflicts.

Rename svn_fs_fs_* functions appropriately.

This ports the new revprop caching infrastructure from FSFS to FSX.

    • ?
    • ?
On the revprop-caching-ng branch:

* subversion/libsvn_fs_fs/fs.h

(): Remove unused #include. No functional change.

On remove-log-addressing branch: Merge changes from trunk.
    • ?
  1. … 135 more files in changeset.
On the revprop-caching-ng branch:

Update FSFS structure doc. No functional change.

* subversion/libsvn_fs_fs/structure

(Layout): Add revprop-generation file.

(Revision property generation): New section describing the file contents.

On the revprop-caching-ng branch: Minor code cleanup.

* subversion/libsvn_fs_fs/revprops.c

(ensure_revprop_generation): Rename this to ...

(open_revprop_generation_file): ... that.




begin_revprop_change): Update callers.

* STATUS: Nominate r1620332.

Remove the special obstructed-add handler from svn's conflict callback.

It doesn't work with the current libsvn_wc implementation. The "mf" and

"tf" options it offers error out with "tree conflicts can only be resolved

to working state".

The only remaining way to trigger this handler was by merging an addition

of a file on top of a directory (or vice versa).

This case is now handled by the generic tree conflict code, which doesn't

offer the unsupported options:

> local dir obstruction, incoming file add upon merge

Select: (r) mark resolved, (p) postpone, (q) quit resolution, (h) help:

* subversion/svn/conflict-callbacks.c

(obstructed_add_options, handle_obstructed_add): Remove.

(conflict_func_interactive): Stop calling handle_obstructed_add().

Follow-up to r1620274: stop reinventing the wheel.

* subversion/tests/cmdline/

(relocate_and_propset, single_file_relocate): Use the existing action

tool to create the initial (untracked) greek repository instead of

copying (part of) the implementation.

Fix some tests that assume they can use global resource and then

fail miserably in parallel-test mode.

* subversion/tests/cmdline/

(relocate_and_propset, single_file_relocate):

Don't touch svntest.main.greek_dump_dir; it's a global directory and

fiddling with it may lead to races and spurious test failures

in parallel mode.

On the revprop-caching-ng branch:

* subversion/libsvn_fs_fs/revprops.c

(revprop_generation_fixup): If a reader process is to discover crashed

writer, make sure we recover based on the

latest data.

On the revprop-caching-ng branch: Improved crash recovery efficiency.

* subversion/libsvn_fs_fs/revprops.c

(read_revprop_generation): If the writer process is to discover another

crashed writer, we can recover immediately.

On the revprop-caching-ng branch: Guarantee no lost updates on

revprop generation files.

* subversion/libsvn_fs_fs/revprops.c

(begin_revprop_change): Always close and re-open the file to make

sure we don't get stale OS file buffers.

On the revprop-caching-ng branch: Allow for read-only repositories.

Open the revprop generation file in r/o mode by default and require

write access only upon the first write attempt.

* subversion/libsvn_fs_fs/revprops.c

(close_revprop_generation_file): Move up here.

(ensure_revprop_generation): Add r/o option and re-open the file if

write is requested for the first time.



has_revprop_cache): Update callers.

On the revprop-caching-ng branch: Follow-up to r1620224. Missing changes.

* subversion/include/svn_error_codes.h

(SVN_ERR_FS_INVALID_GENERATION): Declare new error code.

* subversion/tests/cmdline/

(check_hotcopy_fsfs_fsx): Ignore the checksum when checking for revprop

generation 0.

On the revprop-caching-ng branch: Detect and handle revprop generation

file read / write hazards.

At least in theory, even a small file write might get interrupted on some

OS allowing the read to "overtake" the write. The reader will then see

only partially updated content. We store a checksum of the serialized

generation number in the same file as the latter. If both are consistent,

we can be reasonably sure that read contents is valid.

* subversion/libsvn_fs_fs/revprops.c



(checkedsummed_number): New code to serialize and checksum a number.

(verify_extract_number): New code to do the reverse.

(read_revprop_generation_file): Read the new format and retry in

case of an incomplete update.


svn_fs_fs__reset_revprop_generation_file): Write the new format.

On the revprop-caching-ng branch: Minor refactoring.

* subversion/libsvn_fs_fs/revprops.c

(close_revprop_generation_file): New function, extracted from ...

(svn_fs_fs__reset_revprop_generation_file): ... this.

On the revprop-caching-ng branch: Some cleanup and doc update.

No functional change.

* subversion/libsvn_fs_fs/revprops.c



ATOMIC_REVPROP_NAMESPACE): Remove these obsolete defines.

(Revprop caching management): Document the new intended behavior.

On the revprop-caching-ng branch: Make the atomic revprop change API

work even in the case of stale caches.

When writing revprops, always read the original from disk instead of

from cache.

* subversion/libsvn_fs_fs/revprops.h

(svn_fs_fs__get_revision_proplist): Add BYPASS_CACHE option.

* subversion/libsvn_fs_fs/revprops.c

(svn_fs_fs__get_revision_proplist): Skip cache lookup when the

bypass option is set.

* subversion/libsvn_fs_fs/fs_fs.c

(svn_fs_fs__revision_prop): r/o access may use the cache.

(change_rev_prop_body): r/w access shall bypass them.

* subversion/libsvn_fs_fs/fs.c

(fs_revision_proplist): New simple signature adapter.

(fs_vtable): Call the adapter as it has the correct signature.

    • ?
On svn-auth-x509 branch, don't crash on v1/2 certs.

* subversion/libsvn_subr/x509parse.c

(x509parse_get_hostnames): Check for NULL, since v1/2 certs don't have


Reported by: philip

On the revprop-caching-ng branch: Always bump the generation upon

changing existing revprops - even if revprop caching has not been

enabled for the repo.

* subversion/libsvn_fs_fs/revprops.c

(svn_fs_fs__set_revision_proplist): The criterion is that we can

support caching, not that we

use it. Somebody else might.

* subversion/tests/libsvn_fs_fs/fs-fs-pack-test.c

(test_funcs): revprop_caching_on_off passes now.

On the revprop-caching-ng branch: Replace the SHM objects by an open

file handle to the revprops generation file allowing modifications from

different machines. Re-enable the feature.

To clean up the code, we bind the existence of the revprop-generation

file to repo format 7. It gets created with the repo and auto-inserted /

replaced by 'svnadmin upgrade'. With older formats, we will not try to

use the new infrastructure anymore.

This patch does not address the fact that generation bumps are no longer

atomic. Apart from that, the functionality is the same as until recently

on trunk with the single machine limitation removed.

* subversion/libsvn_fs_fs/fs.h

(SVN_FS_FS__MIN_REVPROP_CACHING_FORMAT): New feature availability limit.

(fs_fs_data_t): Replace SHM objects with a single file handle.

* subversion/libsvn_fs_fs/revprops.h


svn_fs_fs__cleanup_revprop_namespace): Replaced by ...

(svn_fs_fs__reset_revprop_generation_file): ... this new function.

* subversion/libsvn_fs_fs/fs_fs.c


svn_fs_fs__create): Call the new reset function to cleanup and auto-

create the generation file.

* subversion/libsvn_fs_fs/hotcopy.c

(hotcopy_body): Ensure that the target has a valid generation file.

* subversion/libsvn_fs_fs/recovery.c

(recover_body): Same for the repo being recovered.

* subversion/libsvn_fs_fs/caching.c

(read_config): Re-enable the revprop cache feature. But we have only

"on" and "off" now. "on" does not mean that we will

actually use the cache instance for the repo at hand.

* subversion/libsvn_fs_fs/revprops.c

(Revprop caching management): Add a docstring TODO for later.






ensure_revprop_timeout): Remove this old code. Some similarly named

functions may be found in the next block.




svn_fs_fs__reset_revprop_generation_file): New code to open, read,

write and auto-create the

generation file.

(has_revprop_cache): File-based now and not supported by all formats.



read_revprop_generation): Use file timestamps now for crash timeout

detection and update recovery code.


end_revprop_change): Update the generation bump logic to simple calls

of the file read / writer functions and leverage

the fact that we hold the write lock. No retries

required at this level and the generation value

is predictable after the first read.

(switch_to_new_revprop): Update caller.

    • ?
On the 'move-tracking-2' branch: switch the commit editor shim callbacks to

a single callback that can fetch the whole base state instead of having

separate functions for kind, properties and text.

Also move the shim-related declarations from svn_delta_private.h to

svn_editor3.h to keep all editor3-related declarations together.

* subversion/tests/libsvn_fs_fs/fs-fs-pack-test.c

(test_funcs): Followup to r1619774, mark revprop_caching_on_off PASS.

* subversion/include/private/svn_wc_private.h

(svn_wc__get_diff_editor): Correct the documentation of 'reverse_order'.

On the revprop-caching-ng branch: Provide a rudimentary readme.

* BRANCH-README: New file.

    • ?