else 
/* restore last sg */ sg[qc->orig_n_elem - 1].length += qc->pad_len; if (pad_buf) { struct scatterlist *psg = &qc->pad_sgent; void *addr = kmap_atomic(psg->page, KM_IRQ0); memcpy(addr + psg->offset, pad_buf, qc->pad_len); kunmap_atomic(psg->page, KM_IRQ0); } } else { 
static void ata_sg_clean(struct ata_queued_cmd *qc){	struct ata_port *ap = qc->ap;	struct scatterlist *sg = qc->sg;	int dir = qc->dma_dir;	assert(qc->flags & ATA_QCFLAG_DMAMAP);	assert(sg != NULL);	if (qc->flags & ATA_QCFLAG_SINGLE)		assert(qc->n_elem == 1);	DPRINTK("unmapping %u sg elements\n", qc->n_elem);	if (qc->flags & ATA_QCFLAG_SG)		dma_unmap_sg(ap->host_set->dev, sg, qc->n_elem, dir);	else		dma_unmap_single(ap->host_set->dev, sg_dma_address(&sg[0]),				 sg_dma_len(&sg[0]), dir);	qc->flags &= ~ATA_QCFLAG_DMAMAP;	qc->sg = NULL;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/cedc9a478d8c6265879dc3839ef3d4849a709184/libata-core.c/clean/drivers/scsi/libata-core.c