[PATCH rtems6 - v1 00/16] Overwork flashdev - V1

Bernd Moessner berndmoessner80 at gmail.com
Thu Jan 4 20:44:41 UTC 2024


On 04.01.2024 20:40, Kinsey Moore wrote:
> On Thu, Jan 4, 2024 at 12:34 PM <berndmoessner80 at gmail.com> wrote:
>
>     From: Bernd Moessner <berndmoessner80 at gmail.com>
>
>     Dear all,
>
>     as outlined in https://devel.rtems.org/ticket/4981 I`d like to
>     overwork the flashdev API. The provided patch series should at
>     least serve as a fundament for the discussion.
>
>     It includes more, but h:
>
>     1) Bugfixes
>
>     1.1) missing c++ include guards
>
>     1.2) missing default cases
>
>     1.3) There are some false positive test cases. Ie. they fail,
>     are expected to fail, but fail for a different reason.
>     The test cases are not taking into account that fputs works
>     on buffered IO per default. The region mechanism is there to
>     protect reads / writes to an area outside the
>     currently active region. This part works fine, but due to
>     buffering newlib tries to read even more bytes than the user
>     requested - which in turn triggers the region mechanism and
>     causes the read to fail. In addtion to that, theres a bug in
>     the _update_and_return function due to which a wrong address
>     (the absolute address and not the relative address of the
>     region) is returned to newlib.
>
>     2) Refactoring / Style Changes:
>
>     2.1) Not sure if there are naming conventions for IOCTL defines
>     and functions, but I think it makes sense if an IOCTL is used
>     to "get" a value, that "get" is reflected by the macro and
>     function names.
>
>     2.2) Flashdev used the term "regions", but from my point of
>     view "partions" fits better
>
>     2.3) I'd like to call the minimum write block size simply
>     minimum write size. The point is that the term block is already
>     predefined for flash devices (Bytes => Pages => Sectors => Block
>     => Die => Chip). We should should also make sure that the
>     writes are aligned to the min write size and are carried out
>     with this size. I've added alignment checks, but the user
>     must set the buffering size for newlib using setvbuf.
>
>     3) API Extension
>
>     3.1) The API is missing a function to get the erase size.
>     Partions / Regions need to be aligned to the erase size of
>     the flash memory.
>
>     3.2) The region / partition mechnism works differently now.
>     There are IOCTL the create, delete, activate, deactivate
>     partitions, and one to get idx of the currently active
>     partion. I think the internal implementation becomes
>     much simpler if we reduce the number of allowed partitions
>     from 32 to 16.
>
>     The patch set addresses all issues I have found. I have
>     updated and extended the test cases. I must admit that I am
>     a bit insecure wrt. to the RTEMS style guide - I`d be very
>     happy if one could have a close look at that. Aaron Nyholm has
>     added the flashdev API last year. The changes within this
>     patch set are too large to contribute without his agreement
>
>
> Thanks for all the work that went into this!
>
> I see that there are 2 versions of this patch set on the list. It 
> seems that one doesn't have a version identifier and one has a v1 
> identifier. Either would be fine, but I wouldn't recommend using both 
> as it can get confusing as to which is the latest version of the patch 
> set.
>
> Hopefully, I've chosen the correct set to review (16 patches). 
> Unfortunately, it was made harder to distinguish because the mail 
> server was down for a few days and they both got delivered within a 
> few tens of minutes of each other.
>
> Kinsey

Thanks a lot for going through all the commits and commenting on them!

Yes, you've chosen the correct patch set. I`ll work in your comments and 
resubmit the patch set after we've clarified if it is "min_write_size", 
"min_write_block_size" or something entirely new ;). Therefore, the 
patch set will become smaller as two patches fix bugs I've introduced. 
Do I resubmit it using "[PATCH rtems6 - v1 00/16] Overwork flashdev - 
V1" or as V2?

Bernd

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rtems.org/pipermail/devel/attachments/20240104/0f9a89c6/attachment-0001.htm>


More information about the devel mailing list