summaryrefslogtreecommitdiffstats
path: root/cpukit/libfs/src/imfs/imfs_fsunmount.c
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>1999-11-05 21:10:54 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>1999-11-05 21:10:54 +0000
commit94b357c2b31be20b51784dc6f2ae837d58777cbd (patch)
tree73e3ec3694451a65df6b0688e3e0e04175ea0528 /cpukit/libfs/src/imfs/imfs_fsunmount.c
parentRemoved. (diff)
downloadrtems-94b357c2b31be20b51784dc6f2ae837d58777cbd.tar.bz2
Unmount was failing as a side-effect of splitting the rmnod handler
and not handling every case properly.
Diffstat (limited to 'cpukit/libfs/src/imfs/imfs_fsunmount.c')
-rw-r--r--cpukit/libfs/src/imfs/imfs_fsunmount.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/cpukit/libfs/src/imfs/imfs_fsunmount.c b/cpukit/libfs/src/imfs/imfs_fsunmount.c
index 7a091c6fa3..9ca5f4c9fe 100644
--- a/cpukit/libfs/src/imfs/imfs_fsunmount.c
+++ b/cpukit/libfs/src/imfs/imfs_fsunmount.c
@@ -42,6 +42,11 @@
#define jnode_get_first_child( jnode ) \
((IMFS_jnode_t *)( Chain_Head( jnode_get_control( jnode ) )->next))
+/* XXX should be in a more public place */
+
+extern int IMFS_Set_handlers(
+ rtems_filesystem_location_info_t *loc
+);
int IMFS_fsunmount(
rtems_filesystem_mount_table_entry_t *temp_mt_entry
@@ -59,7 +64,6 @@ int IMFS_fsunmount(
jnode = (IMFS_jnode_t *)temp_mt_entry->mt_fs_root.node_access;
loc = temp_mt_entry->mt_fs_root;
-
/*
* Set this to null to indicate that it is being unmounted.
@@ -70,6 +74,7 @@ int IMFS_fsunmount(
do {
next = jnode->Parent;
loc.node_access = (void *)jnode;
+ IMFS_Set_handlers( &loc );
if ( jnode->type != IMFS_DIRECTORY ) {
result = IMFS_unlink( &loc );