[PATCH] mtd: mtdraw: drop ioctl callback for mtdraw device
Sascha Hauer
s.hauer at pengutronix.de
Wed Dec 4 11:32:51 EST 2013
On Tue, Dec 03, 2013 at 11:04:45PM +0100, Robert Jarzmik wrote:
> Sascha Hauer <s.hauer at pengutronix.de> writes:
>
> > Do not call mtd_ioctl for mtdraw devices. mtd_ioctl will derefence
> > the priv pointer to a struct mtd_info whereas with mtdraw devices it will be
> > a struct mtdraw pointer. We do not need ioctls for mtdraw devices, so drop
> > it instead of fixing it.
>
> Very true for the fix.
> As to whether we need ioctls for raw mtd devices, we're loosing bad block
> operations and memgetinfo.
>
> Unfortunately that's a flaw with my split of core.c/mtdraw.c. The complete fix
> would be to have mtd_ioctl split into :
> - mtd_ioctl : would call
> _mtd_ioctl(struct mtd_info *info, int request, void *buf)
> - _mtd_ioctl : current code of ioctl handling
> And add :
> - mtdraw_ioctl: would call _mtd_ioctl()
>
> For the time being your patch is perfectly fine. Do you want me to add the split
> + mtdraw_ioctl() ? That's not a too big amount of work.
For MEMGETINFO we can directly call into _mtd_ioctl(), but for
MEM[SG]ETBADBLOCK the offsets would have to be corrected first. Is this
worth the effort? Otherwise we could do something like:
int mtdraw_ioctl(struct cdev *cdev, int request, void *buf)
{
struct mtd_info *mtd = to_mtd(cdev);
switch (request) {
case MEMGETINFO:
return mtd_memgetinfo(mtd, buf);
default:
return -EINVAL;
}
}
Sascha
--
Pengutronix e.K. | |
Industrial Linux Solutions | http://www.pengutronix.de/ |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
More information about the barebox
mailing list