Dosfs question..?
Eugeny S. Mints
emints at ru.mvista.com
Thu Nov 18 15:17:05 UTC 2004
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