2013-04-14 6 views
40

FUSEファイルシステムを実装しようとしています。このエラーが表示されます:FUSEエラー:トランスポートエンドポイントが接続されていません

cannot access MountDir: Transport endpoint is not connected

これはプログラムの関連部分です。 MirrorDirMountDirの2つのディレクトリがあり、すべてのコードと同じディレクトリに存在します。私はこのようなプログラムを呼び出しています:

./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

同様に、私のために働いたのは2番目の提案でした。 – otocan

5

私はsshファイルシステム(sshfsコマンドライン)をマウントし、それをマウントしたままにして、同じ問題を抱えていました。fusermount -uが私の問題を解決しました。ありがとう

+5

完全なコマンドは 'fusermount -u YOUR_MNT_DIR'でなければなりません。 – zhkzyth

0

親ディレクトリに移動して戻ってください。私のために働きました。

関連する問題