Re: ./fs/partitions/check.c: off-by-one error ?

From: Randy Dunlap
Date: Tue Apr 22 2008 - 11:34:22 EST


On Tue, 22 Apr 2008 12:38:29 +0200 Jan Kara wrote:

> > Inserting an 2 GB SD Card into my digikam and mounting it as an USB drive I've
> > in my system log :
> >
> > Apr 20 12:27:54 n22 usb 2-2: new full speed USB device using uhci_hcd and address 4
> > Apr 20 12:27:54 n22 usb 2-2: configuration #1 chosen from 1 choice
> > Apr 20 12:27:54 n22 SCSI subsystem initialized
> > Apr 20 12:27:54 n22 Initializing USB Mass Storage driver...
> > Apr 20 12:27:54 n22 scsi0 : SCSI emulation for USB Mass Storage devices
> > Apr 20 12:27:54 n22 usbcore: registered new interface driver usb-storage
> > Apr 20 12:27:54 n22 USB Mass Storage support registered.
> > Apr 20 12:27:54 n22 usb-storage: device found at 4
> > Apr 20 12:27:54 n22 usb-storage: waiting for device to settle before scanning
> > Apr 20 12:27:59 n22 scsi 0:0:0:0: Direct-Access MATSHITA DMC-TZ3 0100 PQ: 0 ANSI: 2
> > Apr 20 12:27:59 n22 usb-storage: device scan complete
> > Apr 20 12:27:59 n22 Driver 'sd' needs updating - please use bus_type methods
> > Apr 20 12:27:59 n22 sd 0:0:0:0: [sda] 3902463 512-byte hardware sectors (1998 MB)
> > Apr 20 12:27:59 n22 sd 0:0:0:0: [sda] Write Protect is off
> > Apr 20 12:27:59 n22 sd 0:0:0:0: [sda] Mode Sense: 04 00 00 00
> > Apr 20 12:27:59 n22 sd 0:0:0:0: [sda] Assuming drive cache: write through
> > Apr 20 12:27:59 n22 sd 0:0:0:0: [sda] 3902463 512-byte hardware sectors (1998 MB)
> > Apr 20 12:27:59 n22 sd 0:0:0:0: [sda] Write Protect is off
> > Apr 20 12:27:59 n22 sd 0:0:0:0: [sda] Mode Sense: 04 00 00 00
> > Apr 20 12:27:59 n22 sd 0:0:0:0: [sda] Assuming drive cache: write through
> > Apr 20 12:27:59 n22 sda: sda1
> > Apr 20 12:27:59 n22 sda: p1 exceeds device capacity
> > Apr 20 12:27:59 n22 sd 0:0:0:0: [sda] Attached SCSI removable disk
> > Apr 20 12:27:59 n22 attempt to access beyond end of device
> > Apr 20 12:27:59 n22 sda: rw=0, want=3902464, limit=3902463
> > Apr 20 12:27:59 n22 Buffer I/O error on device sda1, logical block 3902334
> > Apr 20 12:27:59 n22 attempt to access beyond end of device
> > Apr 20 12:27:59 n22 sda: rw=0, want=3902464, limit=3902463
> > Apr 20 12:27:59 n22 Buffer I/O error on device sda1, logical block 3902334
> > Apr 20 12:27:59 n22 attempt to access beyond end of device
> > Apr 20 12:27:59 n22 sda: rw=0, want=3902464, limit=3902463
> > Apr 20 12:27:59 n22 Buffer I/O error on device sda1, logical block 3902334
> > Apr 20 12:27:59 n22 attempt to access beyond end of device
> > Apr 20 12:27:59 n22 sda: rw=0, want=3902464, limit=3902463
> > Apr 20 12:27:59 n22 Buffer I/O error on device sda1, logical block 3902334
> > Apr 20 12:27:59 n22 attempt to access beyond end of device
> > Apr 20 12:27:59 n22 sda: rw=0, want=3902464, limit=3902463
> > Apr 20 12:27:59 n22 Buffer I/O error on device sda1, logical block 3902334
> > Apr 20 12:27:59 n22 attempt to access beyond end of device
> > Apr 20 12:27:59 n22 sda: rw=0, want=3902464, limit=3902463
> > Apr 20 12:27:59 n22 Buffer I/O error on device sda1, logical block 3902334
> > Apr 20 12:27:59 n22 attempt to access beyond end of device
> > Apr 20 12:27:59 n22 sda: rw=0, want=3902464, limit=3902463
> > Apr 20 12:27:59 n22 Buffer I/O error on device sda1, logical block 3902334
> > Apr 20 12:27:59 n22 attempt to access beyond end of device
> > Apr 20 12:27:59 n22 sda: rw=0, want=3902464, limit=3902463
> > Apr 20 12:27:59 n22 Buffer I/O error on device sda1, logical block 3902334
> > Apr 20 12:27:59 n22 attempt to access beyond end of device
> > Apr 20 12:27:59 n22 sda: rw=0, want=3902464, limit=3902463
> > Apr 20 12:27:59 n22 Buffer I/O error on device sda1, logical block 3902334
> >
> > My system is a :
> >
> > tfoerste@n22 ~/devel/linux-2.6/fs/partitions $ uname -a
> > Linux n22 2.6.24-gentoo-r4 #4 Sun Apr 20 12:16:18 CEST 2008 i686 Intel(R)
> > Pentium(R) M processor 1700MHz GenuineIntel GNU/Linux
> >
> > I already re-formatted the card under Linux as well as under Windows XP and got
> > always the same behaviour.
> This looks more like a strange interaction of your device size (it
> claims to have 3902463 sectors) and your partitioning programs which
> create partition ending at sector 3902464. Can you send the partition
> table you have on the device? E.g:
> fdisk /dev/sda
> x
> p
>
> will print detailed information about the partition table.

Is this something that using US_FL_FIX_CAPACITY will fix?

US_FL_FIX_CAPACITY -> sets ->fix_capacity, then:

/* Some devices return the total number of sectors, not the
* highest sector number. Make the necessary adjustment. */
if (sdp->fix_capacity) {
--sdkp->capacity;


---
~Randy
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/