diff options
-rw-r--r-- | src/lib/rib.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/lib/rib.c b/src/lib/rib.c index 684c5dcd..6aacb0be 100644 --- a/src/lib/rib.c +++ b/src/lib/rib.c @@ -271,6 +271,7 @@ int rib_init(const char * mountpt) { #ifdef HAVE_FUSE struct stat st; + struct stat prefix_st; char * argv[] = {"-f", "-o", "ro," @@ -280,7 +281,7 @@ int rib_init(const char * mountpt) NULL}; struct fuse_args args = FUSE_ARGS_INIT(3, argv); - if (stat(FUSE_PREFIX, &st) == -1) + if (stat(FUSE_PREFIX, &prefix_st) == -1) return -1; sprintf(rib.mnt, FUSE_PREFIX "/%s", mountpt); @@ -298,6 +299,14 @@ int rib_init(const char * mountpt) return -1; } + /* + * If parent directory is a different filesystem, + * then directory was already mounted in a previous + * Ouroboros instance that was killed. + */ + if (st.st_dev != prefix_st.st_dev) + fuse_unmount(rib.mnt, rib.ch); + fuse_opt_parse(&args, NULL, NULL, NULL); list_head_init(&rib.reg_comps); |