[PATCH] cciss: fix for 2TB support
authorMike Miller (OS Dev) <mikem@beardog.cca.cpqcorp.net>
Tue, 6 Mar 2007 09:42:14 +0000 (01:42 -0800)
committerLinus Torvalds <torvalds@woody.linux-foundation.org>
Tue, 6 Mar 2007 17:30:25 +0000 (09:30 -0800)
commit97c06978515ed6e071bfd4a5e858837dd2b0edcf
tree026ffd8a6ba185128d0e30842dd5a66468a3f82f
parentd6ad67112a78623025632865d716b2f7645874c5
[PATCH] cciss: fix for 2TB support

This patch changes the way we determine if a logical volume is larger than
2TB.

The original test looked for a total_size of 0.  Originally we added 1 to the
total_size.  That would make our read_capacity return size 0 for >2TB lv's.
We assumed that we could not have a lv size of 0 so it seemed OK until we were
in a clustered system.  The backup node would see a size of 0 due to the
reservation on the drive.  That caused the driver to switch to 16-byte CDB's
which are not supported on older controllers.  After that everything was
broken.

It may seem petty but I don't see the value in trying to determine if the LBA
is beyond the 2TB boundary.  That's why when we switch we use 16-byte CDB's
for all read/write operations.  Please consider this for inclusion.

Signed-off-by: Mike Miller <mike.miller@hp.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
drivers/block/cciss.c