+Patch from upcoming subversion 1.9.1:
+
+http://svn.apache.org/viewvc?view=revision&revision=1696695
+
+--- ../subversion/libsvn_fs_x/fs_id.c 2015/08/20 01:01:06 1696694
++++ ./subversion/libsvn_fs_x/fs_id.c 2015/08/20 01:10:22 1696695
+@@ -85,6 +85,13 @@
+ is not.*/
+ const char *fs_path;
+
++ /* If FS is NULL, this points to svn_fs_open() as passed to the library. */
++ svn_error_t *(*svn_fs_open_)(svn_fs_t **,
++ const char *,
++ apr_hash_t *,
++ apr_pool_t *,
++ apr_pool_t *);
++
+ /* Pool that this context struct got allocated in. */
+ apr_pool_t *owner;
+
+@@ -118,11 +125,14 @@
+ fs_cleanup(void *baton)
+ {
+ svn_fs_x__id_context_t *context = baton;
++ svn_fs_x__data_t *ffd = context->fs->fsap_data;
+
+ /* Remember the FS_PATH to potentially reopen and mark the FS as n/a. */
+ context->fs_path = apr_pstrdup(context->owner, context->fs->path);
++ context->svn_fs_open_ = ffd->svn_fs_open_;
+ context->fs = NULL;
+
++
+ /* No need for further notifications because from now on, everything is
+ allocated in OWNER. */
+ apr_pool_cleanup_kill(context->owner, context, owner_cleanup);
+@@ -137,8 +147,12 @@
+ {
+ if (!context->fs)
+ {
+- svn_error_t *err = svn_fs_open2(&context->fs, context->fs_path, NULL,
+- context->owner, context->owner);
++ svn_error_t *err;
++
++ SVN_ERR_ASSERT_NO_RETURN(context->svn_fs_open_);
++
++ err = context->svn_fs_open_(&context->fs, context->fs_path, NULL,
++ context->owner, context->owner);
+ if (err)
+ {
+ svn_error_clear(err);