summaryrefslogtreecommitdiffstats
path: root/firmware/include/dircache_redirect.h
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/include/dircache_redirect.h')
-rw-r--r--firmware/include/dircache_redirect.h16
1 files changed, 15 insertions, 1 deletions
diff --git a/firmware/include/dircache_redirect.h b/firmware/include/dircache_redirect.h
index 9fae16b551..9a8de2fecd 100644
--- a/firmware/include/dircache_redirect.h
+++ b/firmware/include/dircache_redirect.h
@@ -20,7 +20,10 @@
****************************************************************************/
#ifndef _DIRCACHE_REDIRECT_H_
+#include "rbpaths.h"
+#include "pathfuncs.h"
#include "dir.h"
+#include "dircache.h"
/***
** Internal redirects that depend upon whether or not dircache is made
@@ -123,10 +126,20 @@ static inline void fileop_onsync_internal(struct filestr_base *stream)
static inline void volume_onmount_internal(IF_MV_NONVOID(int volume))
{
+#ifdef HAVE_MULTIVOLUME
+ char path[VOL_MAX_LEN+2];
+ make_volume_root(volume, path);
+#else
+ const char *path = PATH_ROOTSTR;
+#endif
+ root_mount_path(path, RB_ROOT_VOL_HIDDEN(volume) ? NSITEM_HIDDEN : 0);
+#ifdef HAVE_MULTIVOLUME
+ if (volume == path_strip_volume(RB_ROOT_CONTENTS_DIR, NULL, false))
+#endif
+ root_mount_path(RB_ROOT_CONTENTS_DIR, NSITEM_CONTENTS);
#ifdef HAVE_DIRCACHE
dircache_mount();
#endif
- IF_MV( (void)volume; )
}
static inline void volume_onunmount_internal(IF_MV_NONVOID(int volume))
@@ -135,6 +148,7 @@ static inline void volume_onunmount_internal(IF_MV_NONVOID(int volume))
/* First, to avoid update of something about to be destroyed anyway */
dircache_unmount(IF_MV(volume));
#endif
+ root_unmount_volume(IF_MV(volume));
fileobj_mgr_unmount(IF_MV(volume));
}