[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 03/17] libdiskfs: track file name in struct peropen
From: |
Justus Winter |
Subject: |
[PATCH 03/17] libdiskfs: track file name in struct peropen |
Date: |
Thu, 11 Jul 2013 18:09:06 +0200 |
---
libdiskfs/dir-lookup.c | 5 +++++
libdiskfs/diskfs.h | 3 +++
libdiskfs/fsys-getroot.c | 3 ++-
libdiskfs/peropen-make.c | 8 ++++++++
libdiskfs/peropen-rele.c | 1 +
5 files changed, 19 insertions(+), 1 deletion(-)
diff --git a/libdiskfs/dir-lookup.c b/libdiskfs/dir-lookup.c
index 923be03..4532d40 100644
--- a/libdiskfs/dir-lookup.c
+++ b/libdiskfs/dir-lookup.c
@@ -82,6 +82,11 @@ diskfs_S_dir_lookup (struct protid *dircred,
goto gotit;
}
+ free (dircred->po->path);
+ dircred->po->path = strdup (path); /* XXX is this the right place? */
+ if (! dircred->po->path)
+ return ENOMEM;
+
dnp = dircred->po->np;
pthread_mutex_lock (&dnp->lock);
diff --git a/libdiskfs/diskfs.h b/libdiskfs/diskfs.h
index 0f9c1d3..2489517 100644
--- a/libdiskfs/diskfs.h
+++ b/libdiskfs/diskfs.h
@@ -69,6 +69,9 @@ struct peropen
mach_port_t shadow_root_parent;
/* If in a shadow tree, its root node in this translator. */
struct node *shadow_root;
+
+ /* Path relative to the root of the translator. */
+ char *path;
};
/* A unique one of these exists for each node currently in use (and
diff --git a/libdiskfs/fsys-getroot.c b/libdiskfs/fsys-getroot.c
index 2e11da4..39973a8 100644
--- a/libdiskfs/fsys-getroot.c
+++ b/libdiskfs/fsys-getroot.c
@@ -51,7 +51,8 @@ diskfs_S_fsys_getroot (fsys_t controlport,
{
root_parent: dotdot,
shadow_root_parent: MACH_PORT_NULL,
- shadow_root: _diskfs_chroot_directory ? diskfs_root_node : NULL /* XXX */
+ shadow_root: _diskfs_chroot_directory ? diskfs_root_node : NULL, /* XXX */
+ path: NULL,
};
if (!pt)
diff --git a/libdiskfs/peropen-make.c b/libdiskfs/peropen-make.c
index d37516c..d0ac698 100644
--- a/libdiskfs/peropen-make.c
+++ b/libdiskfs/peropen-make.c
@@ -34,6 +34,7 @@ diskfs_make_peropen (struct node *np, int flags, struct
peropen *context,
po->refcnt = 0;
po->openstat = flags;
po->np = np;
+ po->path = NULL;
if (context)
{
@@ -50,6 +51,13 @@ diskfs_make_peropen (struct node *np, int flags, struct
peropen *context,
if (po->shadow_root_parent != MACH_PORT_NULL)
mach_port_mod_refs (mach_task_self (), po->shadow_root_parent,
MACH_PORT_RIGHT_SEND, 1);
+
+ if (context->path)
+ {
+ po->path = strdup (context->path);
+ if (! po->path)
+ return ENOMEM;
+ }
}
else
{
diff --git a/libdiskfs/peropen-rele.c b/libdiskfs/peropen-rele.c
index 08276ec..d3f7492 100644
--- a/libdiskfs/peropen-rele.c
+++ b/libdiskfs/peropen-rele.c
@@ -45,5 +45,6 @@ diskfs_release_peropen (struct peropen *po)
diskfs_nput (po->np);
+ free (po->path);
free (po);
}
--
1.7.10.4
- RFC: get_translator_info, needed for a mtab translator, Justus Winter, 2013/07/03
- [PATCH] get_translator_info wip, Justus Winter, 2013/07/03
- Re: [PATCH] get_translator_info wip, Samuel Thibault, 2013/07/08
- [PATCH 02/17] libnetfs: fix consistency check, Justus Winter, 2013/07/11
- [PATCH 03/17] libdiskfs: track file name in struct peropen,
Justus Winter <=
- [PATCH 04/17] libnetfs: track file name in struct peropen, Justus Winter, 2013/07/11
- [PATCH 08/17] libtrivfs: add fsys_get_children, Justus Winter, 2013/07/11
- [PATCH 09/17] trans/symlink.c: add fsys_get_children, Justus Winter, 2013/07/11
- [PATCH 05/17] libfshelp: add translator-list.c, Justus Winter, 2013/07/11
- [PATCH 06/17] libdiskfs: add fsys_get_children, Justus Winter, 2013/07/11
- [PATCH 07/17] libnetfs: add fsys_get_children, Justus Winter, 2013/07/11
- [PATCH 10/17] hurd: add fsys_get_children, Justus Winter, 2013/07/11
- Re: [PATCH 10/17] hurd: add fsys_get_children, Neal H. Walfield, 2013/07/12
- Re: [PATCH 10/17] hurd: add fsys_get_children, Samuel Thibault, 2013/07/12
- Re: [PATCH 10/17] hurd: add fsys_get_children, Justus Winter, 2013/07/12