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

Pavel Herrmann morpheus.ibis at gmail.com
Fri Sep 21 16:57:41 CEST 2012


On Friday 21 of September 2012 15:53:26 Marek Vasut wrote:
> Dear Pavel Herrmann,
> 
> > On Friday 21 of September 2012 14:39:14 Marek Vasut wrote:
> > > Dear Pavel Herrmann,
> > > 
> > > > On Thursday 20 of September 2012 21:58:17 Marek Vasut wrote:
> > > > > Dear Pavel Herrmann,
> > > > > 
> > > > > > This core will register all block devices (disk, cards, partitons)
> > > > > > and provide unfied access to them, instead of current method with
> > > > > > device + partition offset
> > > > > > 
> > > > > > Signed-off-by: Pavel Herrmann <morpheus.ibis at gmail.com>
> > > > > > ---
> > > > > > 
> > > > > >  Makefile                  |   1 +
> > > > > >  drivers/blockdev/Makefile |  42 ++++++++++++++++
> > > > > >  include/dm/blockdev.h     | 121
> > > > > > 
> > > > > > ++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed,
> > > > > > 164
> > > > > > insertions(+)
> > > > > > 
> > > > > >  create mode 100644 drivers/blockdev/Makefile
> > > > > >  create mode 100644 include/dm/blockdev.h
> > > > > 
> > > > > Why not use drivers/block/ ?
> > > > 
> > > > Because the drivers in drivers/block have a different purpose than
> > > > blockdev.
> > > 
> > > Different, ok. Can you elaborate how is it different?
> > 
> > blockctrl is equivalent in purpose to drivers/block, just a new approach
> > 
> > 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)

> > 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

> > - 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)

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)

Pavel Herrmann


More information about the U-Boot mailing list