lkml.org 
[lkml]   [2009]   [Jun]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
From
SubjectRe: [Compile Warning] 2.6.30-rc8 build
Date

> I can't argue with gcc on this one either:
>
> drivers/scsi/sd.c: In function 'sd_read_capacity':
> drivers/scsi/sd.c:1451: warning: comparison is always false due to limited range of data type
>
> It reads to my eyes as if the function can never
> select read_capacity_16 for very large devices.

The code is:

if ((sizeof(sdkp->capacity) > 4) &&
(sdkp->capacity > 0xffffffffULL)) {

sdkp->capacity is a sector_t, and <linux/types.h> has:

#ifdef CONFIG_LBD
typedef u64 sector_t;
typedef u64 blkcnt_t;
#else
typedef unsigned long sector_t;
typedef unsigned long blkcnt_t;
#endif

so if you don't set CONFIG_LBD on a 32-bit architecture, then you are
correct that sd.c won't ever hit the READ_CAPACITY(16) case, and the
kernel won't be able to handle large SCSI disks.


\
 
 \ /
  Last update: 2009-06-05 19:31    [W:0.322 / U:0.044 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site