Re: [patch/rfc 2.6.29 1/2] MTD: driver model updates

Kevin Cernekee
2009-04-01T04:49:11Z

On 3/31/09, David Brownell <david-b@pacbell.net> wrote:
>> 2) region_info_user fields? Not really sure how this would work.
>> Maybe a separate subdirectory for each region?
>
> I'm not sure I've ever had reason to care about a "region" (whatever
> that is!) with MTD hardware.

Erase Block Regions. From the CFI spec:

"x specifies the number of regions within the device containing one or
more contiguous Erase Blocks of the same size. For example, a 128KB
device (1Mb) having blocking of 16KB, 8KB, four 2KB, two 16KB, and one
64KB is considered to have 5 Erase Block Regions."

This is fairly common on parallel NOR devices. Probably less so on
huge NAND devices.

> I suspect that a lot of interesting questions could come up in
> the context of enhancing mtd-utils to work with sysfs and bigger
> NAND chips. Some might relate to "regions".

Right, this sysfs requirement raises a number of issues that need to
be fully thought out in order to make sure the new interface is a
suitable replacement for the "INFO" ioctls. For instance:

1) If each region is a subdirectory, are user programs supposed to use
readdir() to count them? Is ioctl(MEMGETREGIONCOUNT) still the
preferred method? Or do we make a new "regioncount" sysfs attribute?

(A somewhat related question is whether MEMGETREGIONCOUNT only exists
because it was impossible to expand the MEMGETINFO struct. After all,
it's just copying another field from the mtd_info struct.)

2) How are user programs expected to access MTD sysfs? Do we
introduce a new libsysfs dependency, or roll our own implementation?
Are there any past examples of ioctls being phased out in favor of
sysfs, particularly in subsystems that are popular on embedded
platforms?

3) What should the mtd-utils changes look like? Do we define
backward-compatibility wrapper functions that try to work the same way
the ioctls used to? New libraries and layers of abstraction? Or
something in the middle?