Extracting Dosfs
Joel Sherrill <joel@OARcorp.com>
joel.sherrill at OARcorp.com
Fri Oct 15 15:28:50 UTC 2004
Victor,
I don't know where that picture and explanation needs to be
capture but it really needs to be placed in the documentation
somewhere. :)
--joel
Victor V. Vengerov wrote:
> Daniel, Bogdan,
>
> I would like to provide little more detailed drawing:
>
> USER
> *
> |
> LIBCSUPPORT
> | |
> | DOSFS (MSDOS*PREFIX)
> | |
> | DOSFS (FAT*PREFIX)
> | |
> LIBBLOCK
> |
> PROTOCOL DRIVER
> (currently it is IDE only,
> in the future it will be SCSI etc)
> |
> HARDWARE DRIVER
> (i.e. driver of specific
> IDE controller)
> |
> *
> SPECIFIC HARDWARE
>
> "Protocol driver" layer remains the same for, let say, IDE hard disks,
> compact flash etc. Hardware driver is a libchip-style driver which is
> totally hardware dependent (although many IDE controllers are very
> similar, it is not mandatory; particularly in device we are working
> with, IDE controller were implemented in FPGA and has it's own interface.
>
> In theory, Daniel may re-design LIBBLOCK interface, removing everything
> about concurrency, semaphores etc, and making write to/read from the
> media immediately (assuming he is interested in single-threaded design).
> But I'm not completely sure...
>
> Victor
>
> Bogdan Vacaliuc wrote:
>
>> Hi Daniel,
>>
>> I would draw the diagram more like this:
>>
>> USER
>> *
>> |
>> LIBCSUPPORT
>> | |
>> | DOSFS (MSDOS*PREFIX)
>> | |
>> | DOSFS (FAT*PREFIX)
>> | |
>> LIBBLOCK
>> |
>> DRIVER
>> |
>> *
>> SPECIFIC HARDWARE
>>
>>
>> This is why Victor was alerting you to the fact that 'libblock' uses
>> RTEMS synchronization mechanisms (such as semaphores). I draw
>> the parallel line from LIBCSUPPORT to LIBBLOCK since it is possible to
>> open/read/write devices directly (such as you would do when
>> 'formatting').
>>
>>
>>
>>> What are the constraints of the FS (max partitions etc.). I want to
>>> run on a system with approx eigth partitons with 1GB each.
>>>
>>
>>
>> Each FS is mounted on a region of the block device. The FS code
>> itself does not interface with the partition table directly; there
>> are some utilities in libblock for parsing partition tables. So there
>> is no constraint by the FS on partitions.
>>
>> The typical constraints we see with disks is that the MSDOS Master
>> Boot Record only defines 4 (primary) partitions, and a method to
>> specify one of those as an extended partition with any number of
>> logical partitions. [additional "reserved" sectors are used on the
>> disk to store these tables]. RTEMS has code to deal with this in
>> cpukit/libblock/src/ide_part_table.c, etc. However, I do see that
>> RTEMS does not have code to deal with non-MSDOS partition tables, so
>> keep that in mind.
>>
>> So you should not see any constraints related to max partitions even
>> if they are all on the same block device, and you certainly
>> will not have constraints if you have multiple devices.
>>
>> Eugeny has already said that "All constraints come from original
>> FAT12/16/32 design itself". I did not research deeper into the
>> long filename support in the current DOSFS implementation.
>>
>>
>> Good Luck!
>>
>> -bogdan
>>
>>
>> On Friday, October 15, 2004 2:48 AM, Daniel Gustafsson wrote:
>>
>>
>>
>>> Thanks for the answer...
>>> What are the constraints of the FS (max partitions etc.). I want to
>>> run on a system with approx eigth partitons with 1GB each.
>>> I am going to try to extract dosfs for Rtems for a couple of days. If
>>> I understand correctly the file system structure are as follows:
>>> USER
>>> *
>>> |
>>> LIBSUPPORT
>>> |
>>> DOSFS (MSDOS*PREFIX)
>>> |
>>> DOSFS (FAT*PREFIX)
>>> |
>>> DRIVER
>>> |
>>> *
>>> SPECIFIC HARDWARE
>>>
>>>
>>> If I am totally wrong, please correct me.
>>>
>>>
>>> Regards
>>> Daniel
>>>
>>>
>>>
>>>
>>>
>>>> -----Original Message-----
>>>> From: Bogdan Vacaliuc [mailto:bvacaliuc at ngit.com]
>>>> Sent: Friday, October 15, 2004 3:02 AM
>>>> To: 'Daniel Gustafsson'
>>>> Cc: rtems-users at rtems.com
>>>> Subject: RE: Extracting Dosfs
>>>>
>>>> Ugh.
>>>>
>>>>
>>>>
>>>>> inside an RTEMS environment. The code is stand-alone and compiles
>>>>> readily under GNU/Linux, Cygwin, etc.
>>>>>
>>>>
>>>> I lied when I said it compiles readily. Two years ago was
>>>> when I started with it... Funny, I remember whipping it together and
>>>> demonstrating its functionality quite quickly. Sigh. I guess
>>>> it will just take a little more time and coddling that I expected.
>>>>
>>>> -bogdan
>>>>
>>>>
>>>> On Thursday, October 14, 2004 10:52 AM, Bogdan Vacaliuc wrote:
>>>>
>>>>
>>>>
>>>>> Hi Daniel,
>>>>>
>>>>> You may want to follow the ongoing "Formatting DOSFS volume" thread
>>>>> in RTEMS:
>>>>> http://www.rtems.com/ml/rtems-users/2004/october/msg00086.html
>>>>>
>>>>> The RDCF2 code (http://alumnus.caltech.edu/~pje/rdcf2.txt) may be
>>>>> just what you are looking for if you are not interested in running
>>>>> inside an RTEMS environment. The code is stand-alone and compiles
>>>>> readily under GNU/Linux, Cygwin, etc.
>>>>>
>>>>> Best Regards,
>>>>>
>>>>> -bogdan
>>>>>
>>>>>
>>>>> On Thursday, October 14, 2004 9:37 AM, Victor V. Vengerov wrote:
>>>>>
>>>>>
>>>>>
>>>>>> Daniel,
>>>>>>
>>>>>> Have in mind that libblock depends on some RTEMS synchnorisation
>>>>>> mechanisms, and run the thread writing blocks to the disk. Also,
>>>>>> ms-dos file system and libblock has been designed with
>>>>>> mulithreading in mind, which may be overhead for you. More free
>>>>>> open-source MS-DOS implementations are exists (I remember freedos
>>>>>> name, although I'm not sure) - may be it is better appropriate for
>>>>>> you.
>>>>>> I don't know what are you going to implement, but it will be
>>>>>> definitievly simpler to link your application with RTEMS,
>>>>>> considering it as a library providing some services, particularly
>>>>>> DOS file system. Nothing prevent you to implement single-threaded
>>>>>> application in RTEMS - just run it as a initialisation task.
>>>>>>
>>>>>> Victor
>>>>>> Daniel Gustafsson wrote:
>>>>>>
>>>>>>
>>>>>>
>>>>>>> I am interested in extracting Dosfs in Rtems 4.6.1 to a separate
>>>>>>> module that shall work stand-alone with a commandpromt. The module
>>>>>>> should use a block based ram driver like a simulated disk. Before
>>>>>>> I start I would like to ask if somebody has done the same thing or
>>>>>>> knows any good approaches? The main questions I would like to have
>>>>>>> an answer to is the following:
>>>>>>>
>>>>>>> 1. What does the file structure of dosfs look like? Which files
>>>>>>> are necessary for a stand-alone module? Which files are connected
>>>>>>> to the different layers (driver, upper interface etc.) of the
>>>>>>> file system?
>>>>>>> 2. Where should I start? Any tips is greatly accepted?
>>>>>>>
>>>>>>> 3. Can somebody tell me about any constraints or limitations of
>>>>>>> the fs (max partition size etc.)?
>>>>>>> 4. Does anyone know the footprint of dosfs in RAM during runtime?
>>>>>>>
>>>>>>> Best Regards
>>>>>>> Daniel Gustavsso
>>>>>>>
>> n
>>
>>
>
>
--
Joel Sherrill, Ph.D. Director of Research & Development
joel at OARcorp.com On-Line Applications Research
Ask me about RTEMS: a free RTOS Huntsville AL 35805
Support Available (256) 722-9985
More information about the users
mailing list