Author: kotkov
Date: Sat Jan  9 18:58:48 2016
New Revision: 1723876

URL: http://svn.apache.org/viewvc?rev=1723876&view=rev
Log:
On 'fs-node-api' branch: Allow getting the filesystem to which a particular
filesystem node belongs.  This is a prerequisite for switching the remaining
parts of svn_ra_local__get_dir() to the new FS node API.

* subversion/include/svn_fs.h
  (svn_fs_node_fs): New function.

* subversion/libsvn_fs/fs-loader.h
  (struct svn_fs_node_t): Add 'fs' member to this structure.

* subversion/libsvn_fs/fs-loader.c
  (svn_fs_node_fs): Implement this new function.

* subversion/libsvn_fs/node_compat.c
  (svn_fs__create_node_shim): Fill in node->fs member.

* subversion/libsvn_fs_fs/node.c
  (svn_fs_fs__node_create): Fill in node->fs member.

Modified:
    subversion/branches/fs-node-api/subversion/include/svn_fs.h
    subversion/branches/fs-node-api/subversion/libsvn_fs/fs-loader.c
    subversion/branches/fs-node-api/subversion/libsvn_fs/fs-loader.h
    subversion/branches/fs-node-api/subversion/libsvn_fs/node_compat.c
    subversion/branches/fs-node-api/subversion/libsvn_fs_fs/node.c

Modified: subversion/branches/fs-node-api/subversion/include/svn_fs.h
URL: 
http://svn.apache.org/viewvc/subversion/branches/fs-node-api/subversion/include/svn_fs.h?rev=1723876&r1=1723875&r2=1723876&view=diff
==============================================================================
--- subversion/branches/fs-node-api/subversion/include/svn_fs.h (original)
+++ subversion/branches/fs-node-api/subversion/include/svn_fs.h Sat Jan  9 
18:58:48 2016
@@ -1633,6 +1633,10 @@ svn_fs_paths_changed(apr_hash_t **change
  */
 typedef struct svn_fs_node_t svn_fs_node_t;
 
+/** Return the filesystem to which @a node belongs.  */
+svn_fs_t *
+svn_fs_node_fs(svn_fs_node_t *node);
+
 /** Open the node present at @a path under @a root. Set @a *node_p to the node
  * Sets @a *node_p to NULL if @a path does not exist under @a root
  * and @a ignore_enoent is non-zero. Returns error otherwise.

Modified: subversion/branches/fs-node-api/subversion/libsvn_fs/fs-loader.c
URL: 
http://svn.apache.org/viewvc/subversion/branches/fs-node-api/subversion/libsvn_fs/fs-loader.c?rev=1723876&r1=1723875&r2=1723876&view=diff
==============================================================================
--- subversion/branches/fs-node-api/subversion/libsvn_fs/fs-loader.c (original)
+++ subversion/branches/fs-node-api/subversion/libsvn_fs/fs-loader.c Sat Jan  9 
18:58:48 2016
@@ -1054,6 +1054,12 @@ svn_fs_check_path(svn_node_kind_t *kind_
   return svn_error_trace(root->vtable->check_path(kind_p, root, path, pool));
 }
 
+svn_fs_t *
+svn_fs_node_fs(svn_fs_node_t *node)
+{
+  return node->fs;
+}
+
 svn_error_t *
 svn_fs_open_node(svn_fs_node_t **node_p,
                  svn_fs_root_t *root,

Modified: subversion/branches/fs-node-api/subversion/libsvn_fs/fs-loader.h
URL: 
http://svn.apache.org/viewvc/subversion/branches/fs-node-api/subversion/libsvn_fs/fs-loader.h?rev=1723876&r1=1723875&r2=1723876&view=diff
==============================================================================
--- subversion/branches/fs-node-api/subversion/libsvn_fs/fs-loader.h (original)
+++ subversion/branches/fs-node-api/subversion/libsvn_fs/fs-loader.h Sat Jan  9 
18:58:48 2016
@@ -591,6 +591,9 @@ struct svn_fs_lock_target_t
 
 struct svn_fs_node_t
 {
+  /* The filesystem to which this node belongs */
+  svn_fs_t *fs;
+
   /* FSAP-specific vtable and private data */
   const node_vtable_t *vtable;
   void *fsap_data;

Modified: subversion/branches/fs-node-api/subversion/libsvn_fs/node_compat.c
URL: 
http://svn.apache.org/viewvc/subversion/branches/fs-node-api/subversion/libsvn_fs/node_compat.c?rev=1723876&r1=1723875&r2=1723876&view=diff
==============================================================================
--- subversion/branches/fs-node-api/subversion/libsvn_fs/node_compat.c 
(original)
+++ subversion/branches/fs-node-api/subversion/libsvn_fs/node_compat.c Sat Jan  
9 18:58:48 2016
@@ -164,6 +164,7 @@ svn_fs__create_node_shim(svn_fs_root_t *
   fnd->path = apr_pstrdup(result_pool, path);
   fnd->node_kind = kind;
 
+  node->fs = svn_fs_root_fs(root);
   node->vtable = &compat_node_vtable;
   node->fsap_data = fnd;
 

Modified: subversion/branches/fs-node-api/subversion/libsvn_fs_fs/node.c
URL: 
http://svn.apache.org/viewvc/subversion/branches/fs-node-api/subversion/libsvn_fs_fs/node.c?rev=1723876&r1=1723875&r2=1723876&view=diff
==============================================================================
--- subversion/branches/fs-node-api/subversion/libsvn_fs_fs/node.c (original)
+++ subversion/branches/fs-node-api/subversion/libsvn_fs_fs/node.c Sat Jan  9 
18:58:48 2016
@@ -112,6 +112,7 @@ svn_fs_fs__node_create(dag_node_t *dag_n
   fs_node_data_t *fnd = apr_palloc(result_pool, sizeof(*fnd));
   svn_fs_node_t *node = apr_palloc(result_pool, sizeof(*node));
   fnd->dag_node = dag_node;
+  node->fs = svn_fs_fs__dag_get_fs(dag_node);
   node->vtable = &fs_node_vtable;
   node->fsap_data = fnd;
 


Reply via email to