spi_dv_device_internal(sreq, buffer); 
spi_dv_device_internal(sdev, buffer); 
spi_dv_device(struct scsi_device *sdev){	struct scsi_request *sreq = scsi_allocate_request(sdev, GFP_KERNEL);	struct scsi_target *starget = sdev->sdev_target;	u8 *buffer;	const int len = SPI_MAX_ECHO_BUFFER_SIZE*2;	if (unlikely(!sreq))		return;	if (unlikely(scsi_device_get(sdev)))		goto out_free_req;	buffer = kmalloc(len, GFP_KERNEL);	if (unlikely(!buffer))		goto out_put;	memset(buffer, 0, len);	/* We need to verify that the actual device will quiesce; the	 * later target quiesce is just a nice to have */	if (unlikely(scsi_device_quiesce(sdev)))		goto out_free;	scsi_target_quiesce(starget);	spi_dv_pending(starget) = 1;	down(&spi_dv_sem(starget));	SPI_PRINTK(starget, KERN_INFO, "Beginning Domain Validation\n");	spi_dv_device_internal(sreq, buffer);	SPI_PRINTK(starget, KERN_INFO, "Ending Domain Validation\n");	up(&spi_dv_sem(starget));	spi_dv_pending(starget) = 0;	scsi_target_resume(starget);	spi_initial_dv(starget) = 1; out_free:	kfree(buffer); out_put:	scsi_device_put(sdev); out_free_req:	scsi_release_request(sreq);}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/33aa687db90dd8541bd5e9a762eebf880eaee767/scsi_transport_spi.c/clean/drivers/scsi/scsi_transport_spi.c