Set max_cmd_len correctly depending on the size of the field. In earlier

versions of Linux it was an unsigned char, and a value of 260 means 4 after a compiler warning. Added a comment to describe what is going on as well. Since 
this is done very infequently it should not cause performance problems and 
means that it will not silently fail to work if people try to use it on kernels
earlier than 2.6.26. If I figure out what kernel version the change was made
in we could use an ifdef.



git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@1852 d57e44dd-8a1f-0410-8b47-8ef2f437770f
This commit is contained in:
Richard Sharpe
2010-07-21 16:08:34 +00:00
parent ffd2803eca
commit 8668b22ae8

View File

@@ -988,7 +988,16 @@ static int scst_fake_lld_driver_probe(struct device *dev)
hpnt->max_id = scst_local_num_tgts;
hpnt->max_lun = scst_local_max_luns - 1;
hpnt->max_cmd_len = 260;
/*
* Because of a change in the size of this field around 2.6.26
* we use this check ... it allows us to work on earlier
* kernels. If we don't, the max_cmd_size gets set to 4 (and we get
* a compiler warning) so a scan never occurs.
*/
if (sizeof(hpnt->max_cmd_len) == sizeof(unsigned char))
hpnt->max_cmd_len = 16;
else
hpnt->max_cmd_len = 260;
ret = scsi_add_host(hpnt, &scst_lcl_host->dev);
if (ret) {