On Friday 07 September 2007 18:59, Phillip Liang wrote:
> 
> Hi,
> 
> I have the same issue.
> Here is the result as vda suggested.
> Thanks for your help.
> 
> (1)
> mount: mounting 192.168.10.33:/scratch on /mnt/test failed: Invalid argument
> 
> (2)
> # cat nfs.log
> execve("/bin/mount", ["mount", "-t", "nfs", "192.168.10.33:/scratch", 
> "/mnt/test"], [/* 16 vars */]) = 0
> ioctl(0, SNDCTL_TMR_TIMEBASE or TCGETS, {B115200 opost isig icanon echo ...}) 
> = 0
> ioctl(1, SNDCTL_TMR_TIMEBASE or TCGETS, {B115200 opost isig icanon echo ...}) 
> = 0
> getuid32()                              = 0
> brk(0)                                  = 0xe6000
> brk(0xe7000)                            = 0xe7000
> getuid32()                              = 0
> brk(0xe8000)                            = 0xe8000
> getcwd("/mnt", 4098)                    = 5
> brk(0xe9000)                            = 0xe9000
> ioctl(2147483647, SNDCTL_TMR_TIMEBASE or TCGETS, 0xbeaa7b5c) = -1 EBADF (Bad 
> file descriptor)
        ^^^^^^^^^^
This is indeed not a valid file descriptor.

ioctl call like the above is typically done by stdio.h functions
(like fopen, fprintf, etc).

I need your help in identifying the problem. Message is definitely coming from 
here:

 report_error:
        if (ENABLE_FEATURE_CLEAN_UP)
                free(filteropts);

        if (rc && errno == EBUSY && ignore_busy)
                rc = 0;
        if (rc < 0)
                bb_perror_msg("mounting %s on %s failed", mp->mnt_fsname, 
mp->mnt_dir);

at the end of singlemount() function.
Can you edit singlemount() and add debug prints approximately like this:


static int singlemount(struct mntent *mp, int ignore_busy)
{
        int rc = -1, vfsflags;
        char *loopFile = 0, *filteropts = 0;
        llist_t *fl = 0;
        struct stat st;
printf("HERE 1\n");

        vfsflags = parse_mount_options(mp->mnt_opts, &filteropts);
printf("HERE 2\n");

        // Treat fstype "auto" as unspecified.

        if (mp->mnt_type && strcmp(mp->mnt_type,"auto") == 0)
                mp->mnt_type = 0;

        // Might this be an CIFS filesystem?

        if (ENABLE_FEATURE_MOUNT_CIFS
         && (!mp->mnt_type || strcmp(mp->mnt_type,"cifs") == 0)
         && (mp->mnt_fsname[0]=='/' || mp->mnt_fsname[0]=='\\')
         && mp->mnt_fsname[0]==mp->mnt_fsname[1]
        ) {
                len_and_sockaddr *lsa;
                char *ip, *dotted;
                char *s;
printf("HERE 3\n");

                rc = 1;


and so on, then recompile busybox and rerun the same mount command?
--
vda
_______________________________________________
busybox mailing list
[email protected]
http://busybox.net/cgi-bin/mailman/listinfo/busybox

Reply via email to