Dosfs question..?
Daniel Gustafsson
daniel.gustafsson at space.se
Thu Nov 18 16:04:22 UTC 2004
-- In unlink()
Rtems_filesystem_evaluate_path() returns fine.
Rtems_filesystem_evaluate_parent() returns -1.
-- In Rtems_filesystem_evaluate_parent()
msdos_eval_path() (with ".." as path) here we go through MSDOS_UP_DIR.
Returns an error (se below).
/DANIEL
>-----Original Message-----
>From: Eugeny S. Mints [mailto:emints at ru.mvista.com]
>Sent: Thursday, November 18, 2004 4:17 PM
>To: Daniel Gustafsson
>Cc: 'Thomas Doerfler'; rtems-users at rtems.com
>Subject: Re: Dosfs question..?
>
>Daniel Gustafsson wrote:
>>
>> Hi.
>>
>> I have debugged the unlink() and the error occurs in
>msdos_eval_path().
>>
>> -- in msdos_eval_path(), line 114
>> ...
>> switch(type)
>> {
>> case MSDOS_UP_DIR:
>>
>> if (fat_fd->fat_file_type != FAT_DIRECTORY) -->
>> fat_fd->fat_file_type = 5 = RTEMS_FILESYSTEM_MEMORY_FILE = FAT_FILE
>> errno = ENOTDIR;
> -->
>> ERROR!!!
>> ...
>> --
>
>Well, the unlink(file) should not go through case
>MSDOS_UP_DIR. Please,
>try to
>debug why msdos_get_token() returns MSDOS_UP_DIR type for your file1.
>
>> Steps to mount and create file:
>>
>> 1. msdos_format("/dev/ramdisk0", NULL);
>> 2. ide_part_table_initialize("/dev/ramdisk0");
>> 3. rtems_fs_mount(fs_table, sizeof(...), NULL);
>>
>> fs_table ~ { "/dev/ramdisk0", "/mnt/ramdisk0" , msdos_ops,
>> RTEMS_FILESYSTEM_READ_WRITE, flags, 0 } --> example
>>
>> 4. creat("/mnt/ramdisk0/file1", S_IREAD | S_IWRITE);
>> 5. write to file 1
>> 6. close file 1
>> 7. unlink("/mnt/ramdisk0/file1");
> -->
>> Returns "NOT A DIRECTORY"
>>
>>
>> Everything is OK but the unlink.
>>
>> NOTIS: The /mnt/ramdisk0/ doesn't contain "." or "..". If I
>make a sub
>> directory in /mnt/ramdisk0/ it will contain "." and "..".
>>
>>
>> //DANIEL
>>
>>
>>
>>>-----Original Message-----
>>>From: Eugeny S. Mints [mailto:emints at ru.mvista.com]
>>>Sent: Thursday, November 18, 2004 3:08 PM
>>>To: Thomas Doerfler
>>>Cc: Daniel Gustafsson; rtems-users at rtems.com
>>>Subject: Re: Dosfs question..?
>>>
>>>Hi All,
>>>
>>>Really strange return code. unlink() call should transform into
>>>msdos_file_rmnod() routine call. Check whether the msdos routine is
>>>reached if not - the issue somewhere in non-msdos related
>code (start
>>
>>>from unlink() routine in libcsupport dir).
>>
>>>How do you mount your msdos volume? I suppose you mount to some IMFS
>>>directory (mnt?). My suggestion that the issue is somehow
>connected to
>>>the mount point.
>>>
>>> Eugeny
>>>
>>>Thomas Doerfler wrote:
>>>
>>>>Daniel,
>>>>
>>>>I did a quick check of source codes, I really don't
>>>>know what is going on in your system.
>>>>
>>>>My idea, what you might do:
>>>>- Either step into the unlink call and find out
>>>>where the error code is set.
>>>>
>>>>- Or: perform a grep over the libfs source code:
>>>>grep ENOTDIR cpukit/libfs/src/*/*.c
>>>>
>>>>You will get about 10 results. Set a breakpoint on
>>>>every of these lines. Start your code. And look
>>>>where the breakpoint is hit.
>>>>
>>>>The rest is analysis then.
>>>>
>>>>By the way: which string do you pass to the unlink
>>>>call?
>>>>
>>>>wkr,
>>>>Thomas.
>>>>
>>>>
>>>>
>>>>
>>>>>Hello.
>>>>>
>>>>>I am running rtems 4.6.2 on a ERC32 using TSIM as simulator
>>>
>>>enviroment. Am
>>>
>>>>>using dosfs on the ramdisk. Everything works fine, as it
>>>
>>>should, except the
>>>
>>>>>removal of files. I try to use the unlink() but it won't
>>>
>>>accept the file
>>>
>>>>>(returns "NOT A DIRECTORY"???). What am I doing wrong. Is maybe the
>>>>>permissions is f**kt up (does dosfs support permissions
>>>
>>>because I can't
>>>
>>>>>change them).
>>>>>
>>>>>Please help me someone or direct me to some documentation
>>>
>>>about rtems dosfs.
>>>
>>>>>
>>>>>Many thanks to Thomas Doerfler for providing to the Rtems
>>>
>>>community with a
>>>
>>>>>functional format function for dosfs.
>>>>>
>>>>>Regards
>>>>>Daniel Gustavsson
>>>>
>>>>
>>>>--------------------------------------------
>>>>IMD Ingenieurbuero fuer Microcomputertechnik
>>>>Thomas Doerfler Herbststrasse 8
>>>>D-82178 Puchheim Germany
>>>>email: Thomas.Doerfler at imd-systems.de
>>>>PGP public key available at: http://www.imd-
>>>>systems.de/pgp_keys.htm
>>>>
>>>>
>>>>
>>>
>>>
>>>
>>
>>
>>
>
>
>
More information about the users
mailing list