Re: file system question

From: kapil a
Date: Thu Feb 09 2006 - 12:55:20 EST


I am only sending the relevant stuff.

My strace output :

fstat64(3, {st_mode=S_IFDIR|0755, st_size=48, ...}) = 0
fcntl64(3, F_SETFD, FD_CLOEXEC) = 0
getdents64(3, /* 3 entries */, 4096) = 80
getdents64(3, /* 0 entries */, 4096) = 0
close(3) = 0
exit_group(0)

strace output on a partition under ext2

fstat64(3, {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
fcntl64(3, F_SETFD, FD_CLOEXEC) = 0
getdents64(3, /* 4 entries */, 4096) = 104
getdents64(3, /* 0 entries */, 4096) = 0
close(3) = 0
fstat64(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 0), ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
0) = 0xb7ddc000
write(1, "kapil out\n", 11) = 11
munmap(0xb7ddc000, 4096) = 0
exit_group(0)

We can see that my strace does not call the fstat, mmap, write and
munmap calls. It directly calls the exit_group call. This is what i
fail to understand. The getdents seems to be returning data correctly.
And filldir() called by the readdir() seems to be working
correctly(am not sure).
So i fail to understand why the other calls are not performed.

I would like to remind you that i have not written all the calls. For
example i dont have my file systems implementation of the write call.
But atleast i shd be able to call the default.

any help would be appreciated. And can anybody think of an other way i
can test my filesystem with a smaller call. "ls" seems to be calling
way too many system calls. My filesystem is a disk based file system
with my superblock in a floppy.

kapil




On 2/8/06, Avishay Traeger <atraeger@xxxxxxxxxxxxx> wrote:
> On Wed, 2006-02-08 at 19:11 -0500, kapil a wrote:
> > thanks for the reply and sorry for the unclear question.
> >
> > What i meant was when i do an "ls" in a directory that is part of the
> > ext2 filesystem, i can see a "write" call in the strace output at the
> > end and it writes the directory contents to stdout. However when i
> > issue "ls" in the mount point of my file system, i dont have the
> > "write" call. The strace ends with the getdents64 call.
> >
> > When i did some debugging i found that filldir which is suppose to
> > fill the dirent with the directory entries does its job. My filesystem
> > currently has only one inode with one block of data where i have a
> > ".", ".." and "test" written into it.
> >
> > The problem is it does not go further to do some of the other calls as
> > in a mountpoint in ext2 file system.
> >
> > Hope i am clear now.
> >
> > kaps
>
> Can you send the strace output?
>
>
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/