[U-Boot] [PATCH 01/11] DM: add block device core

Pavel Herrmann morpheus.ibis at gmail.com
Fri Sep 21 17:48:31 CEST 2012


On Friday 21 of September 2012 17:34:27 Marek Vasut wrote:
> Dear Pavel Herrmann,
> 
> [...]
> 
> > > > blockctrl = AHCI, PIIX... whichever chip you have between SATA and PCI
> > > > (or generally disk-bus and board-bus)
> > > 
> > > So this is for sata ? Or will it also by used for SD/USB flash discs?
> > 
> > no, blockctrl will be used for SATA, PATA, SCSI, and anything of the sort
> > (device with several ports, block devices on said ports, ability to send
> > read/write/query commands to devices on ports - definitely not USB,
> > possibly also SD, but you probably want more operations from SD)
> 
> Why not USB flash ? Why not SD, what other stuff do you need for that? Is
> the API not misdesigned then?

you should have a blockdev driver for USB flash and SD, but not blockctrl

> > > > blockdev = disk, partition, SD card
> > > 
> > > Uh, let's say I understand (even if I don't see the correlation between
> > > partition and SD card)
> > 
> > they are an ordered bunch of blocks with a "conventional" filesystem on
> > them
> 
> You might want to do RAW reads, so why do you put filesystem into this
> context?

yes, you can do raw reads, but in most cases you are using a filesystem. i put 
filesystem there to differentiate from nand devices (which have a special flash-
based filesystems in most cases).

> > > > - something that does basic checks
> > > > (range, possibility of operation) and submits operations to correct
> > > > parent (blockctrl, MMC controller, whatnot).
> > > 
> > > Ascii art might help here greatly (how these pieces fall together). I
> > > think I do understand it though.
> > 
> > current code
> > user -> FS -> offset calculation from partition info -> drivers/disk
> > 
> > new code
> > user -> FS -> blockdev -> blockctrl (or USB or SD controller)
> 
> So your "blockctrl" should do the USB/SD/whatever muxing.

no, blockdev shoud be the last common part, for SD/USB, you should have a 
different blockdev driver, that uses USB/SD API for the actual works

blockctrl is just an unified look at whatever now resides in drivers/block

> > partition blockdev does all the offset calculation and range check that
> > FSs
> > do now, and then submits the operation to the parent blockdev, which in
> > turn submits it to blockctrl (or an SD controller in case of a SD card, or
> > USB controller in case of a USB flash)
> 
> Make sure you document this in the next series.
> 
> > Pavel Herrmann
> 
> Best regards,
> Marek Vasut


More information about the U-Boot mailing list