summaryrefslogtreecommitdiffstats
path: root/src/drivers/block
Commit message (Collapse)AuthorAgeFilesLines
* [infiniband] Allow SRP reconnection attempts even after reporting failuresMichael Brown2009-08-101-12/+5Star
| | | | | | | | | With iSCSI, connection attempts are expensive; it may take many seconds to determine that a connection will fail. SRP connection attempts are much less expensive, so we may as well avoid the "optimisation" of declaring a state of permanent failure after a certain number of attempts. This allows a gPXE SRP initiator to resume operations after an arbitrary amount of SRP target downtime.
* [infiniband] Add support for SRP over InfinibandMichael Brown2009-08-101-0/+530
| | | | | | | | SRP is the SCSI RDMA Protocol. It allows for a method of SAN booting whereby the target is responsible for reading and writing data using Remote DMA directly to the initiator's memory. The software initiator merely sends and receives SCSI commands; it never has to touch the actual data.
* [scsi] Generalise iscsi_parse_lun() to scsi_parse_lun()Michael Brown2009-08-101-0/+30
|
* [scsi] Generalise iscsi_detached_command() to scsi_detached_command()Michael Brown2009-08-101-0/+12
|
* [ata] Make ATA command issuing partially asynchronousMichael Brown2009-07-181-1/+24
| | | | | | | | | Move the icky call to step() from aoe.c to ata.c; this takes it at least one step further away from where it really doesn't belong. Unfortunately, AoE has the ugly aoe_discover() mechanism which means that we still have a step() loop in aoe.c for now; this needs to be replaced at some future point.
* [scsi] Improve SCSI debuggingMichael Brown2009-07-181-9/+26
|
* [scsi] Make SCSI command issuing partially asynchronousMichael Brown2009-07-181-3/+15
| | | | | Move the icky call to step() from iscsi.c to scsi.c; this takes it at least one step further away from where it really doesn't belong.
* [legal] Add a selection of FILE_LICENCE declarationsMichael Brown2009-05-183-0/+6
| | | | | Add FILE_LICENCE declarations to almost all files that make up the various standard builds of gPXE.
* [scsi] Fix DBG() message reporting of error numberMichael Brown2009-02-191-2/+2
|
* [scsi] Cope with targets that send multiple CHECK CONDITIONS at power-onMichael Brown2009-01-301-5/+19
| | | | | | | | | | | | | | | Some targets send a spurious CHECK CONDITION message in response to the first SCSI command. We issue (and ignore the status of) an arbitary harmless SCSI command (a READ CAPACITY (10)) in order to draw out this response. The Solaris Comstar target seems to send more than one spurious CHECK CONDITION response. Attempt up to SCSI_MAX_DUMMY_READ_CAP dummy READ CAPACITY (10) commands before assuming that error responses are meaningful. Problem reported by Kristof Van Doorsselaere <kvandoor@aserver.com> and Shiva Shankar <802.11e@gmail.com>.
* [blockdev] Move block device operations to structure block_device_operationsLaurent Vivier2008-11-193-8/+24
| | | | Signed-off-by: Laurent Vivier <Laurent.Vivier@bull.net>
* Split bootsector execution code out into bootsector.c.Michael Brown2007-01-291-0/+91
| | | | Added basic El Torito ISO image boot capability
* Automatically select between the "10" and "16" variants of command set,Michael Brown2006-12-121-31/+72
| | | | based on the device size.
* Catch SCSI errors, and work around the start-of-day CHECK CONDITIONMichael Brown2006-12-121-1/+32
| | | | that some targets send.
* We don't actually have a stdio.h header file. Our printf() functions areMichael Brown2006-09-271-1/+0Star
| | | | | | | | defined in vsprintf.h. (This may change, since vsprintf.h is a non-standard name, but for now it's the one to use.) There should be no need to include vsprintf.h just for DBG() statements, since include/compiler.h forces it in for a debug build anyway.
* added stdio.h to includes for DBG compilationMarty Connor2006-09-271-0/+1
|
* Updated debug message to reflect change in data structure.Michael Brown2006-06-121-2/+3
|
* Backing out last change; no immediate plans to make the whole block-deviceMichael Brown2006-06-011-2/+1Star
| | | | | layer asynchronous, so keeping the sync/async boundary within aoedev.c seems cleanest for now.
* ATA devices are now asynchronous. The ATA layer itself now performs theMichael Brown2006-05-311-1/+2
| | | | | | | | async_wait(), though we may wish to move this higher up the stack, and consider making the block device model asynchronous. (There is only a marginal cost for synchronous devices, since they can simply call async_done() before returning; async_wait() will work seamlessly in this situation).
* Added generic asynchronous operations code.Michael Brown2006-05-311-5/+4Star
| | | | | | | | | Removed data_in_len and data_out_len from ata_command structure; the lengths are implied by the sector count and the presence of the data_in or data_out pointers. Changed AoE code to use subcommands by default, and made aoe_issue() nonblocking (with completion via async_wait()).
* Use separate data-in and data-out buffers.Michael Brown2006-05-291-40/+30Star
| | | | Increase code simplicity at the expense of around 64 bytes.
* Fixed debug codeMichael Brown2006-05-211-3/+3
|
* Added (untested) support for ATA devices. This code should be genericMichael Brown2006-05-211-0/+169
| | | | enough to support both real IDE chipsets and AoE.
* READ CAPACITY (16) turns out to be an optional command (even thoughMichael Brown2006-05-191-2/+57
| | | | | READ(16) is mandatory); we must use READ CAPACITY (10) first and then use READ CAPACITY (16) if the READ CAPACITY (10) returns "out of range".
* Add the concept of a "user pointer" (similar to the void __user * inMichael Brown2006-05-191-7/+9
| | | | | | | | | | | | | | | | | | | | the kernel), which encapsulates the information needed to refer to an external buffer. Under normal operation, this can just be a void * equivalent, but under -DKEEP_IT_REAL it would be a segoff_t equivalent. Use this concept to avoid the need for bounce buffers in int13.c, which reduces memory usage and opens up the possibility of using multi-sector reads. Extend the block-device API and the SCSI block device implementation to support multi-sector reads. Update iscsi.c to use user buffers. Move the obsolete portions of realmode.h to old_realmode.h. MS-DOS now boots an order of magnitude faster over iSCSI (~10 seconds from power-up to C:> prompt in bochs).
* Defined SCSI device interface, and added SCSI block deviceMichael Brown2006-05-131-0/+142
implementation.