Improvements to DOSFS

Eugeny Mints eugeny.mints at auriga.ru
Thu Jul 31 10:15:57 UTC 2003


Hi, 

> -----Original Message-----
> From: Chris Johns [mailto:cjohns at cybertec.com.au]
> Sent: Thursday, July 31, 2003 4:09 AM
> To: Thomas Doerfler
> Cc: rtems-users at oarcorp.com
> Subject: Re: Improvements to DOSFS
> 
> Thomas Doerfler wrote:
> >
> > today I have added three PRs (439-441) to RTEMS gnatsweb.
> > These PR have patches for the following issues:
> >
> > 1. Adding rename functionality to DOSFS
> >
> > 2. Improvment of data write speed
> >
> > 3. Flush of temporary data buffer when closing a file to make
> > removing of media or poweroff of system without "unmount" more
> > reliable
> >
> 
> I have the disk performance test program Bonnie running on RTEMS.
> 
>    http://www.textuality.com/bonnie/intro.html
> 
> I could place a copy on the RTEMS ftp incoming directory if you are
> interested in
> running it with your changes. Let me know and I will upload it.
> 
> >
> > 2. Improvement of write data speed
> >
> 
> On the subject of performance, I noticed in the ATA driver:
> 
>
http://www.rtems.com/cgi-bin/cvsweb.cgi/rtems/c/src/libchip/ide/ata.c
> 
> in function:
> 
>   ata_io_data_request ()
> 
> the following code:
> 
>      areq = malloc(sizeof(ata_req_t));
>      if (areq == NULL)
>      {
>          return RTEMS_NO_MEMORY;
>      }
> 
> Does this mean each ATA request is performing a malloc ?


Unfortunately, yes. Of course, I had understood (and understand:) how it
is ugly:(. Of course, it was temporary stub which I was going to improve
as soon as possible - but you know: there are no more constant things
than temporary:) So, of course it is necessary to implement some
extendible (at run time) pool of buffers "for ata requests" with
predefined initial size: then

areq = malloc(sizeof(ata_req_t));

will look like:

areq = get_buf_from_ata_req_pool();

Bw,
				Eugeny



More information about the users mailing list