Hi, Eli, Thanks very much.
I added the following code in function dfs_readdir in
src/contrib/fuse-dfs/src/fuse_dfs.c:
fprintf(stderr,"numEntries: %d\n",numEntries);
I can print it correctly.

Finally, I found the following code in function dfs_readdir in
fuse_dfs.c maybe errous.
const char *const str = info[i].mName + dfs->dfs_uri_len + path_len +
((path_len == 1 && *path == '/') ? 0 : 1);

so I modified it as: const char* const str = info[i].mName;

and then, I recompiled and remount ...
when I "ls /mnt/dfs", the output is :
l...@lwm10:~$ ls /mnt/dfs
ls: cannot access /mnt/dfs/hdfs://lwm1:54310/hbase: No such file or directory
ls: cannot access /mnt/dfs/hdfs://lwm1:54310/home: No such file or directory
ls: cannot access /mnt/dfs/hdfs://lwm1:54310/movies: No such file or directory
ls: cannot access /mnt/dfs/hdfs://lwm1:54310/system: No such file or directory
ls: cannot access /mnt/dfs/hdfs://lwm1:54310/user: No such file or directory
hdfs://lwm1:54310/hbase  hdfs://lwm1:54310/movies  hdfs://lwm1:54310/user
hdfs://lwm1:54310/home   hdfs://lwm1:54310/system


Fortunately, we can access the subdir by "cd /mnt/dfs/user". And,
"cannot access /mnt/dfs/hdfs://lwm1:......" maybe caused by my
modification.

The debug message is:
port=54310,server=10.15.62.4
fuse-dfs didn't recognize /mnt/dfs,-2
fuse-dfs ignoring option -d
FUSE library version: 2.8.1
nullpath_ok: 0
unique: 1, opcode: INIT (26), nodeid: 0, insize: 56
INIT: 7.9
flags=0x0000000b
max_readahead=0x00020000
   INIT: 7.12
   flags=0x00000011
   max_readahead=0x00020000
   max_write=0x00020000
   unique: 1, success, outsize: 40
unique: 2, opcode: GETATTR (3), nodeid: 1, insize: 56
getattr /
fuse_dfs TRACE - getattr /
   unique: 2, success, outsize: 120
unique: 3, opcode: OPENDIR (27), nodeid: 1, insize: 48
   unique: 3, success, outsize: 32
unique: 4, opcode: READDIR (28), nodeid: 1, insize: 80
readdir[0] from 0
fuse_dfs TRACE - readdir /
numEntries: 5
info[0].mName = hdfs://lwm1:54310/hbase
dfs->dfs_uri_len = 23
path_len = 1
stat string: hdfs://cadal:54310/hbase
info[1].mName = hdfs://lwm1:54310/home
dfs->dfs_uri_len = 23
path_len = 1
stat string: hdfs://cadal:54310/home
info[2].mName = hdfs://lwm1:54310/movies
dfs->dfs_uri_len = 23
path_len = 1
stat string: hdfs://cadal:54310/movies
info[3].mName = hdfs://lwm1:54310/system
dfs->dfs_uri_len = 23
path_len = 1
stat string: hdfs://cadal:54310/system
info[4].mName = hdfs://lwm1:54310/user
dfs->dfs_uri_len = 23
path_len = 1
stat string: hdfs://lwm1:54310/user
   unique: 4, success, outsize: 336
unique: 5, opcode: GETATTR (3), nodeid: 1, insize: 56
getattr /
fuse_dfs TRACE - getattr /
   unique: 5, success, outsize: 120
unique: 6, opcode: LOOKUP (1), nodeid: 1, insize: 46
LOOKUP /hdfs:
getattr /hdfs:
fuse_dfs TRACE - getattr /hdfs:
Exception in thread "main" java.lang.IllegalArgumentException:
Pathname /hdfs: from /hdfs: is not a valid DFS filename.
        at 
org.apache.hadoop.dfs.DistributedFileSystem.getPathName(DistributedFileSystem.java:125)
        at 
org.apache.hadoop.dfs.DistributedFileSystem.getFileStatus(DistributedFileSystem.java:390)
        at org.apache.hadoop.fs.FileSystem.exists(FileSystem.java:667)
Call to org.apache.hadoop.fs.FileSystem::exists failed!
   unique: 6, error: -2 (No such file or directory), outsize: 16
unique: 7, opcode: LOOKUP (1), nodeid: 1, insize: 46
LOOKUP /hdfs:
getattr /hdfs:
fuse_dfs TRACE - getattr /hdfs:
Exception in thread "Thread-7" java.lang.IllegalArgumentException:
Pathname /hdfs: from /hdfs: is not a valid DFS filename.
        at 
org.apache.hadoop.dfs.DistributedFileSystem.getPathName(DistributedFileSystem.java:125)
        at 
org.apache.hadoop.dfs.DistributedFileSystem.getFileStatus(DistributedFileSystem.java:390)
        at org.apache.hadoop.fs.FileSystem.exists(FileSystem.java:667)
Call to org.apache.hadoop.fs.FileSystem::exists failed!
   unique: 7, error: -2 (No such file or directory), outsize: 16
unique: 8, opcode: LOOKUP (1), nodeid: 1, insize: 46
LOOKUP /hdfs:
getattr /hdfs:
fuse_dfs TRACE - getattr /hdfs:
Exception in thread "Thread-8" java.lang.IllegalArgumentException:
Pathname /hdfs: from /hdfs: is not a valid DFS filename.
        at 
org.apache.hadoop.dfs.DistributedFileSystem.getPathName(DistributedFileSystem.java:125)
        at 
org.apache.hadoop.dfs.DistributedFileSystem.getFileStatus(DistributedFileSystem.java:390)
        at org.apache.hadoop.fs.FileSystem.exists(FileSystem.java:667)
Call to org.apache.hadoop.fs.FileSystem::exists failed!
   unique: 8, error: -2 (No such file or directory), outsize: 16
unique: 9, opcode: LOOKUP (1), nodeid: 1, insize: 46
LOOKUP /hdfs:
getattr /hdfs:
fuse_dfs TRACE - getattr /hdfs:
Exception in thread "main" java.lang.IllegalArgumentException:
Pathname /hdfs: from /hdfs: is not a valid DFS filename.
        at 
org.apache.hadoop.dfs.DistributedFileSystem.getPathName(DistributedFileSystem.java:125)
        at 
org.apache.hadoop.dfs.DistributedFileSystem.getFileStatus(DistributedFileSystem.java:390)
        at org.apache.hadoop.fs.FileSystem.exists(FileSystem.java:667)
Call to org.apache.hadoop.fs.FileSystem::exists failed!
   unique: 9, error: -2 (No such file or directory), outsize: 16
unique: 10, opcode: LOOKUP (1), nodeid: 1, insize: 46
LOOKUP /hdfs:
getattr /hdfs:
fuse_dfs TRACE - getattr /hdfs:
Exception in thread "Thread-8" java.lang.IllegalArgumentException:
Pathname /hdfs: from /hdfs: is not a valid DFS filename.
        at 
org.apache.hadoop.dfs.DistributedFileSystem.getPathName(DistributedFileSystem.java:125)
        at 
org.apache.hadoop.dfs.DistributedFileSystem.getFileStatus(DistributedFileSystem.java:390)
        at org.apache.hadoop.fs.FileSystem.exists(FileSystem.java:667)
Call to org.apache.hadoop.fs.FileSystem::exists failed!
   unique: 10, error: -2 (No such file or directory), outsize: 16
unique: 11, opcode: READDIR (28), nodeid: 1, insize: 80
   unique: 11, success, outsize: 16
unique: 12, opcode: RELEASEDIR (29), nodeid: 1, insize: 64
   unique: 12, success, outsize: 16




On Mon, Dec 21, 2009 at 12:53 PM, Eli Collins <[email protected]> wrote:
> By the way, feel free to send your response to just me
> ([email protected]) if you don't want to spam the list.
>
> Even if you use the list if you also include my email I'll see your
> responses faster.
>
> Thanks,
> Eli
>
>
> On Sun, Dec 20, 2009 at 8:51 PM, Eli Collins <[email protected]> wrote:
>>> fuse_dfs TRACE - readdir /
>>>   unique: 4, success, outsize: 200
>>> unique: 5, opcode: RELEASEDIR (29), nodeid: 1, insize: 64
>>>   unique: 5, success, outsize: 16
>>>
>>> Does It seem OK?
>>
>> Hm, seems like it's not finding any directory entries. Mind putting a
>> printf in dfs_readdir after hdfsListDirectories in
>> fuse_impls_readdir.c to see what numEntries is?
>>
>> Thanks,
>> Eli
>>
>

Reply via email to