[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <ada1vpywpy7.fsf@cisco.com>
Date: Fri, 05 Jun 2009 10:28:00 -0700
From: Roland Dreier <rdreier@...co.com>
To: lkml@...eThan.org
Cc: linux-kernel@...r.kernel.org
Subject: Re: [Compile Warning] 2.6.30-rc8 build
> 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.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists