2013-04-14 2 views
40

Я пытаюсь реализовать файловую систему FUSE. Я получаю эту ошибку:Ошибка FUSE: Конечная точка транспорта не подключена

cannot access MountDir: Transport endpoint is not connected

Это соответствующие части программы. Существует два каталога: MirrorDir и MountDir, которые существуют с тем же каталогом, что и весь код. Я звоню в программу следующим образом:

./myFS -o nonempty -o allow_other MirrorDir MountDir 

Может ли кто-нибудь увидеть, что я делаю неправильно?

static struct fuse_operations xmp_oper = { 
    .getattr = xmp_getattr, 
    .readdir = xmp_readdir, 
    .open  = xmp_open, 
    .read  = xmp_read, 
}; 

int main(int argc, char *argv[]) { 
    int fuse_stat; 
    char* mirrorDir; 

    mirrorDir = malloc(sizeof(strlen(argv[argc-2]+1))); 
    if (mirrorDir == NULL) { 
     perror("main calloc"); 
     abort(); 
    } 

    // Pull the rootdir out of the argument list and save it in my internal data 
    mirrorDir = realpath(argv[argc-2], NULL); 

    argv[argc-2] = argv[argc-1]; 
    argv[argc-1] = NULL; 
    argc--; 

    // turn over control to fuse 
    fprintf(stderr, "about to call fuse_main\n"); 
    fuse_stat = fuse_main(argc, argv, &xmp_oper, mirrorDir); 
    fprintf(stderr, "fuse_main returned %d\n", fuse_stat); 
    return fuse_stat; 
} 

ответ

73

Обычно это связано с тем, что каталог монтирования остается установленным из-за сбоя файловой системы. Перейдите в родительский каталог точки монтирования и введите fusermount -u YOUR_MNT_DIR.

Если это не делает трюк, сделайте sudo umount -l YOUR_MNT_DIR.

+2

Мне пришлось sudo umount заставить его работать. fusermount дал мне: запись для не найдена в/etc/mtab –

+0

'fusermount -u' не работает в моем случае, поэтому я попробовал' sudo umount -l', но я получаю это сообщение об ошибке: 'umount: MOUNT_DIR: блокировать устройства не разрешено на fs' Любые идеи? –

+1

Аналогичным образом это было второе предложение, которое сработало для меня. – otocan

5

Я установил файловую систему ssh (командная строка sshfs) и оставил ее установленной, и у меня была та же проблема, fusermount -u решил мою проблему. Спасибо

+5

полная команда должна быть 'fusermount -u YOUR_MNT_DIR', как показал ответ Тэннера. =) – zhkzyth

0

Перейдите в родительский каталог и обратно. Работал для меня.

Смежные вопросы