/* Some devices report a SCSI revision level above 2 but are * unable to handle the REPORT LUNS command (for which * support is mandatory at level 3).  Since we already have * a Get-Max-LUN request, we won't lose much by setting the * revision level down to 2.  The only devices that would be * affected are those with sparse LUNs. */ sdev->scsi_level = SCSI_2;  
static int slave_configure(struct scsi_device *sdev){	struct us_data *us = host_to_us(sdev->host);	/* Scatter-gather buffers (all but the last) must have a length	 * divisible by the bulk maxpacket size.  Otherwise a data packet	 * would end up being short, causing a premature end to the data	 * transfer.  Since high-speed bulk pipes have a maxpacket size	 * of 512, we'll use that as the scsi device queue's DMA alignment	 * mask.  Guaranteeing proper alignment of the first buffer will	 * have the desired effect because, except at the beginning and	 * the end, scatter-gather buffers follow page boundaries. */	blk_queue_dma_alignment(sdev->request_queue, (512 - 1));	/* Set the SCSI level to at least 2.  We'll leave it at 3 if that's	 * what is originally reported.  We need this to avoid confusing	 * the SCSI layer with devices that report 0 or 1, but need 10-byte	 * commands (ala ATAPI devices behind certain bridges, or devices	 * which simply have broken INQUIRY data).	 *	 * NOTE: This means /dev/sg programs (ala cdrecord) will get the	 * actual information.  This seems to be the preference for	 * programs like that.	 *	 * NOTE: This also means that /proc/scsi/scsi and sysfs may report	 * the actual value or the modified one, depending on where the	 * data comes from.	 */	if (sdev->scsi_level < SCSI_2)		sdev->scsi_level = SCSI_2;	/* According to the technical support people at Genesys Logic,	 * devices using their chips have problems transferring more than	 * 32 KB at a time.  In practice people have found that 64 KB	 * works okay and that's what Windows does.  But we'll be	 * conservative; people can always use the sysfs interface to	 * increase max_sectors. */	if (le16_to_cpu(us->pusb_dev->descriptor.idVendor) == USB_VENDOR_ID_GENESYS &&			sdev->request_queue->max_sectors > 64)		blk_queue_max_sectors(sdev->request_queue, 64);	/* We can't put these settings in slave_alloc() because that gets	 * called before the device type is known.  Consequently these	 * settings can't be overridden via the scsi devinfo mechanism. */	if (sdev->type == TYPE_DISK) {		/* Disk-type devices use MODE SENSE(6) if the protocol		 * (SubClass) is Transparent SCSI, otherwise they use		 * MODE SENSE(10). */		if (us->subclass != US_SC_SCSI)			sdev->use_10_for_ms = 1;		/* Many disks only accept MODE SENSE transfer lengths of		 * 192 bytes (that's what Windows uses). */		sdev->use_192_bytes_for_3f = 1;		/* Some devices don't like MODE SENSE with page=0x3f,		 * which is the command used for checking if a device		 * is write-protected.  Now that we tell the sd driver		 * to do a 192-byte transfer with this command the		 * majority of devices work fine, but a few still can't		 * handle it.  The sd driver will simply assume those		 * devices are write-enabled. */		if (us->flags & US_FL_NO_WP_DETECT)			sdev->skip_ms_page_3f = 1;		/* A number of devices have problems with MODE SENSE for		 * page x08, so we will skip it. */		sdev->skip_ms_page_8 = 1;		/* Some disks return the total number of blocks in response		 * to READ CAPACITY rather than the highest block number.		 * If this device makes that mistake, tell the sd driver. */		if (us->flags & US_FL_FIX_CAPACITY)			sdev->fix_capacity = 1;		/* USB-IDE bridges tend to report SK = 0x04 (Non-recoverable		 * Hardware Error) when any low-level error occurs,		 * recoverable or not.  Setting this flag tells the SCSI		 * midlayer to retry such commands, which frequently will		 * succeed and fix the error.  The worst this can lead to		 * is an occasional series of retries that will all fail. */		sdev->retry_hwerror = 1;	} else {		/* Non-disk-type devices don't need to blacklist any pages		 * or to force 192-byte transfer lengths for MODE SENSE.		 * But they do need to use MODE SENSE(10). */		sdev->use_10_for_ms = 1;	}	/* Some devices choke when they receive a PREVENT-ALLOW MEDIUM	 * REMOVAL command, so suppress those commands. */	if (us->flags & US_FL_NOT_LOCKABLE)		sdev->lockable = 0;	/* this is to satisfy the compiler, tho I don't think the 	 * return code is ever checked anywhere. */	return 0;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/a4e628328ec60873fec9d506d682155391f589ce/scsiglue.c/clean/drivers/usb/storage/scsiglue.c