Anyway to limit the amount of sectors the kernel tries to access?
Linux - HardwareThis forum is for Hardware issues.
Having trouble installing a piece of hardware? Want to know if that peripheral is compatible with Linux?
Notices
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Get a virtual cloud desktop with the Linux distro that you want in less than five minutes with Shells! With over 10 pre-installed distros to choose from, the worry-free installation life is here! Whether you are a digital nomad or just looking for flexibility, Shells can put your Linux machine on the device that you want to use.
Exclusive for LQ members, get up to 45% off per month. Click here for more info.
Anyway to limit the amount of sectors the kernel tries to access?
I have a flash drive that died on me.
The data was backed up already but I want it to live again.
What happened was it was in a (windows) computer that suddenly turned off, and when I plugged it back in to a functional computer, it said it was 4GB when it really was 1GB.
On windows, the FAT32 partition already on there shows up at about 1GB, and 3GB free space.
On linux, the partitions never show up. For some reason the kernel tries to access the "fake" sectors and then causes all sorts of IO errors, so it can't get to the MBR (I think).
the output of sfdisk:
Code:
sfdisk -l /dev/sdb
Disk /dev/sdb: 4064 cylinders, 64 heads, 32 sectors/track
read: Input/output error
sfdisk: read error on /dev/sdb - cannot read sector 0
/dev/sdb: unrecognized partition table type
No partitions found
I think I can fix this poor drive, by using sfdisk to fix the number of cylinders or something, but first I need the kernel to stop trying to access the higher sectors
dmesg:
Code:
usb 6-1: new high speed USB device using ehci_hcd and address 8
usb 6-1: configuration #1 chosen from 1 choice
scsi7 : SCSI emulation for USB Mass Storage devices
usb-storage: device found at 8
usb-storage: waiting for device to settle before scanning
usb 6-2: new high speed USB device using ehci_hcd and address 9
usb 6-2: configuration #1 chosen from 1 choice
scsi8 : SCSI emulation for USB Mass Storage devices
usb-storage: device found at 9
usb-storage: waiting for device to settle before scanning
usb 6-1: reset high speed USB device using ehci_hcd and address 8
scsi 7:0:0:0: Direct-Access I-Stick2 IntelligentStick 0.00 PQ: 0 ANSI: 2
sd 7:0:0:0: [sdb] 8323072 512-byte hardware sectors (4261 MB)
sd 7:0:0:0: [sdb] Write Protect is off
sd 7:0:0:0: [sdb] Mode Sense: 00 00 00 00
sd 7:0:0:0: [sdb] Assuming drive cache: write through
sd 7:0:0:0: [sdb] 8323072 512-byte hardware sectors (4261 MB)
sd 7:0:0:0: [sdb] Write Protect is off
sd 7:0:0:0: [sdb] Mode Sense: 00 00 00 00
sd 7:0:0:0: [sdb] Assuming drive cache: write through
sdb: sdb1 sdb2
sd 7:0:0:0: [sdb] Attached SCSI removable disk
sd 7:0:0:0: Attached scsi generic sg2 type 0
usb-storage: device scan complete
end_request: I/O error, dev sdb, sector 8321532
printk: 650 messages suppressed.
Buffer I/O error on device sdb2, logical block 3164736
Buffer I/O error on device sdb2, logical block 3164737
Buffer I/O error on device sdb2, logical block 3164738
Buffer I/O error on device sdb2, logical block 3164739
end_request: I/O error, dev sdb, sector 8321532
Buffer I/O error on device sdb2, logical block 3164736
end_request: I/O error, dev sdb, sector 8321534
Buffer I/O error on device sdb2, logical block 3164737
Buffer I/O error on device sdb2, logical block 3164738
Buffer I/O error on device sdb2, logical block 3164739
end_request: I/O error, dev sdb, sector 1991871
Buffer I/O error on device sdb1, logical block 1991808
Buffer I/O error on device sdb1, logical block 1991809
end_request: I/O error, dev sdb, sector 1991871
end_request: I/O error, dev sdb, sector 1991872
end_request: I/O error, dev sdb, sector 1991871
end_request: I/O error, dev sdb, sector 1991872
end_request: I/O error, dev sdb, sector 63
end_request: I/O error, dev sdb, sector 64
end_request: I/O error, dev sdb, sector 63
end_request: I/O error, dev sdb, sector 64
end_request: I/O error, dev sdb, sector 63
end_request: I/O error, dev sdb, sector 64
end_request: I/O error, dev sdb, sector 1992055
end_request: I/O error, dev sdb, sector 1992056
end_request: I/O error, dev sdb, sector 1992055
end_request: I/O error, dev sdb, sector 1992056
end_request: I/O error, dev sdb, sector 1992055
end_request: I/O error, dev sdb, sector 1992056
end_request: I/O error, dev sdb, sector 1992055
end_request: I/O error, dev sdb, sector 1992056
end_request: I/O error, dev sdb, sector 1992055
end_request: I/O error, dev sdb, sector 1992056
end_request: I/O error, dev sdb, sector 1992055
end_request: I/O error, dev sdb, sector 1992056
end_request: I/O error, dev sdb, sector 1991991
end_request: I/O error, dev sdb, sector 1991992
end_request: I/O error, dev sdb, sector 1992047
end_request: I/O error, dev sdb, sector 1992048
end_request: I/O error, dev sdb, sector 1992055
end_request: I/O error, dev sdb, sector 1992056
end_request: I/O error, dev sdb, sector 1992055
end_request: I/O error, dev sdb, sector 1992056
end_request: I/O error, dev sdb, sector 63
end_request: I/O error, dev sdb, sector 64
end_request: I/O error, dev sdb, sector 63
end_request: I/O error, dev sdb, sector 64
end_request: I/O error, dev sdb, sector 8321532
end_request: I/O error, dev sdb, sector 1992060
end_request: I/O error, dev sdb, sector 1992062
end_request: I/O error, dev sdb, sector 1992060
end_request: I/O error, dev sdb, sector 1992062
end_request: I/O error, dev sdb, sector 63
end_request: I/O error, dev sdb, sector 63
end_request: I/O error, dev sdb, sector 64
end_request: I/O error, dev sdb, sector 63
end_request: I/O error, dev sdb, sector 64
end_request: I/O error, dev sdb, sector 63
end_request: I/O error, dev sdb, sector 64
end_request: I/O error, dev sdb, sector 63
end_request: I/O error, dev sdb, sector 64
end_request: I/O error, dev sdb, sector 63
end_request: I/O error, dev sdb, sector 64
end_request: I/O error, dev sdb, sector 63
end_request: I/O error, dev sdb, sector 64
end_request: I/O error, dev sdb, sector 63
end_request: I/O error, dev sdb, sector 64
end_request: I/O error, dev sdb, sector 63
end_request: I/O error, dev sdb, sector 64
end_request: I/O error, dev sdb, sector 63
end_request: I/O error, dev sdb, sector 64
end_request: I/O error, dev sdb, sector 63
end_request: I/O error, dev sdb, sector 64
end_request: I/O error, dev sdb, sector 63
end_request: I/O error, dev sdb, sector 64
end_request: I/O error, dev sdb, sector 63
end_request: I/O error, dev sdb, sector 64
end_request: I/O error, dev sdb, sector 63
end_request: I/O error, dev sdb, sector 64
end_request: I/O error, dev sdb, sector 63
end_request: I/O error, dev sdb, sector 64
end_request: I/O error, dev sdb, sector 63
end_request: I/O error, dev sdb, sector 64
end_request: I/O error, dev sdb, sector 63
end_request: I/O error, dev sdb, sector 64
end_request: I/O error, dev sdb, sector 63
end_request: I/O error, dev sdb, sector 64
end_request: I/O error, dev sdb, sector 63
end_request: I/O error, dev sdb, sector 64
end_request: I/O error, dev sdb, sector 63
end_request: I/O error, dev sdb, sector 64
end_request: I/O error, dev sdb, sector 63
end_request: I/O error, dev sdb, sector 64
end_request: I/O error, dev sdb, sector 63
end_request: I/O error, dev sdb, sector 64
end_request: I/O error, dev sdb, sector 63
end_request: I/O error, dev sdb, sector 64
end_request: I/O error, dev sdb, sector 1992060
end_request: I/O error, dev sdb, sector 8321668
end_request: I/O error, dev sdb, sector 8321668
end_request: I/O error, dev sdb, sector 8321668
end_request: I/O error, dev sdb, sector 8321668
end_request: I/O error, dev sdb, sector 8321668
end_request: I/O error, dev sdb, sector 8321668
end_request: I/O error, dev sdb, sector 8321604
end_request: I/O error, dev sdb, sector 8321606
end_request: I/O error, dev sdb, sector 8321652
end_request: I/O error, dev sdb, sector 8321654
end_request: I/O error, dev sdb, sector 8321668
end_request: I/O error, dev sdb, sector 8321668
end_request: I/O error, dev sdb, sector 1992060
end_request: I/O error, dev sdb, sector 1992062
end_request: I/O error, dev sdb, sector 1992060
end_request: I/O error, dev sdb, sector 1992062
end_request: I/O error, dev sdb, sector 1992060
end_request: I/O error, dev sdb, sector 1992062
end_request: I/O error, dev sdb, sector 1992060
end_request: I/O error, dev sdb, sector 1992062
end_request: I/O error, dev sdb, sector 1992060
end_request: I/O error, dev sdb, sector 1992062
end_request: I/O error, dev sdb, sector 1992060
end_request: I/O error, dev sdb, sector 1992062
end_request: I/O error, dev sdb, sector 1992060
end_request: I/O error, dev sdb, sector 1992062
end_request: I/O error, dev sdb, sector 1992060
end_request: I/O error, dev sdb, sector 1992062
end_request: I/O error, dev sdb, sector 1992060
end_request: I/O error, dev sdb, sector 1992062
end_request: I/O error, dev sdb, sector 1992060
end_request: I/O error, dev sdb, sector 1992062
end_request: I/O error, dev sdb, sector 1992060
end_request: I/O error, dev sdb, sector 1992062
end_request: I/O error, dev sdb, sector 1992060
end_request: I/O error, dev sdb, sector 1992062
end_request: I/O error, dev sdb, sector 1992060
end_request: I/O error, dev sdb, sector 1992062
end_request: I/O error, dev sdb, sector 1992060
end_request: I/O error, dev sdb, sector 1992062
end_request: I/O error, dev sdb, sector 1992060
end_request: I/O error, dev sdb, sector 1992062
end_request: I/O error, dev sdb, sector 1992060
end_request: I/O error, dev sdb, sector 1992062
end_request: I/O error, dev sdb, sector 1992060
end_request: I/O error, dev sdb, sector 1992062
end_request: I/O error, dev sdb, sector 1992060
end_request: I/O error, dev sdb, sector 1992062
end_request: I/O error, dev sdb, sector 1992060
end_request: I/O error, dev sdb, sector 1992062
end_request: I/O error, dev sdb, sector 1992060
end_request: I/O error, dev sdb, sector 1992062
end_request: I/O error, dev sdb, sector 1992060
end_request: I/O error, dev sdb, sector 1992062
end_request: I/O error, dev sdb, sector 1992060
end_request: I/O error, dev sdb, sector 1992062
end_request: I/O error, dev sdb, sector 1992060
end_request: I/O error, dev sdb, sector 1992062
end_request: I/O error, dev sdb, sector 1992060
end_request: I/O error, dev sdb, sector 1992062
end_request: I/O error, dev sdb, sector 1992060
end_request: I/O error, dev sdb, sector 1992062
end_request: I/O error, dev sdb, sector 8321532
end_request: I/O error, dev sdb, sector 8321532
end_request: I/O error, dev sdb, sector 8321534
end_request: I/O error, dev sdb, sector 8321532
end_request: I/O error, dev sdb, sector 8321534
end_request: I/O error, dev sdb, sector 1992060
end_request: I/O error, dev sdb, sector 1992062
end_request: I/O error, dev sdb, sector 1992060
end_request: I/O error, dev sdb, sector 1992062
end_request: I/O error, dev sdb, sector 1992060
end_request: I/O error, dev sdb, sector 1992062
end_request: I/O error, dev sdb, sector 8321668
end_request: I/O error, dev sdb, sector 8321668
end_request: I/O error, dev sdb, sector 8321668
end_request: I/O error, dev sdb, sector 8321668
end_request: I/O error, dev sdb, sector 8321668
end_request: I/O error, dev sdb, sector 8321668
end_request: I/O error, dev sdb, sector 8321604
end_request: I/O error, dev sdb, sector 8321606
end_request: I/O error, dev sdb, sector 8321652
end_request: I/O error, dev sdb, sector 8321654
end_request: I/O error, dev sdb, sector 8321668
end_request: I/O error, dev sdb, sector 8321668
end_request: I/O error, dev sdb, sector 1992060
end_request: I/O error, dev sdb, sector 1992062
end_request: I/O error, dev sdb, sector 1992060
end_request: I/O error, dev sdb, sector 1992062
end_request: I/O error, dev sdb, sector 1992060
end_request: I/O error, dev sdb, sector 1992062
end_request: I/O error, dev sdb, sector 1992060
end_request: I/O error, dev sdb, sector 1992062
end_request: I/O error, dev sdb, sector 1992060
end_request: I/O error, dev sdb, sector 1992062
end_request: I/O error, dev sdb, sector 1992060
end_request: I/O error, dev sdb, sector 1992062
end_request: I/O error, dev sdb, sector 1992060
end_request: I/O error, dev sdb, sector 1992062
end_request: I/O error, dev sdb, sector 1992060
end_request: I/O error, dev sdb, sector 1992062
end_request: I/O error, dev sdb, sector 1992060
end_request: I/O error, dev sdb, sector 1992062
end_request: I/O error, dev sdb, sector 1992060
end_request: I/O error, dev sdb, sector 1992062
end_request: I/O error, dev sdb, sector 1992060
end_request: I/O error, dev sdb, sector 1992062
end_request: I/O error, dev sdb, sector 1992060
end_request: I/O error, dev sdb, sector 1992062
end_request: I/O error, dev sdb, sector 1992060
end_request: I/O error, dev sdb, sector 1992062
end_request: I/O error, dev sdb, sector 1992060
end_request: I/O error, dev sdb, sector 1992062
end_request: I/O error, dev sdb, sector 1992060
end_request: I/O error, dev sdb, sector 1992062
end_request: I/O error, dev sdb, sector 1992060
end_request: I/O error, dev sdb, sector 1992062
end_request: I/O error, dev sdb, sector 1992060
end_request: I/O error, dev sdb, sector 1992060
end_request: I/O error, dev sdb, sector 1992062
end_request: I/O error, dev sdb, sector 1992060
end_request: I/O error, dev sdb, sector 1992062
end_request: I/O error, dev sdb, sector 1992060
end_request: I/O error, dev sdb, sector 1992062
end_request: I/O error, dev sdb, sector 1992060
end_request: I/O error, dev sdb, sector 1992062
end_request: I/O error, dev sdb, sector 1992060
end_request: I/O error, dev sdb, sector 1992062
end_request: I/O error, dev sdb, sector 1992060
end_request: I/O error, dev sdb, sector 1992062
end_request: I/O error, dev sdb, sector 1992060
end_request: I/O error, dev sdb, sector 1992062
end_request: I/O error, dev sdb, sector 1992060
end_request: I/O error, dev sdb, sector 1992062
end_request: I/O error, dev sdb, sector 0
end_request: I/O error, dev sdb, sector 8
end_request: I/O error, dev sdb, sector 0
end_request: I/O error, dev sdb, sector 0
end_request: I/O error, dev sdb, sector 0
end_request: I/O error, dev sdb, sector 0
end_request: I/O error, dev sdb, sector 0
Last edited by lambchops468; 05-15-2008 at 05:24 PM.
'dd if=/dev/zero of=/dev/sticklocation', then partitioning and formatting it should get your stick working again. If there's no malfunction then, yes, you should get full usable size.
'dd if=/dev/zero of=/dev/sticklocation', then partitioning and formatting it should get your stick working again. If there's no malfunction then, yes, you should get full usable size.
I can't write (IO errors)
however, bad blocks works...]
perhaps I should add more information I forgot to include.
Windows XP can write/read the drive just like normal, the parititon is 1 Gig, but it still sees 3Gigs extra.
Linux however, cannot write or read, leading me to think that if I prevented the kernel from accessing the higher up sectors, everything would be a-ok and I could reset the partition table and use dd, etc.
Last edited by lambchops468; 05-16-2008 at 05:17 PM.
Hmm. AFAIK you can not deny the kernel from "accessing the higher up sectors" because that's not how things work. (Well you can, but that's HPA/DCO territory and that should not apply here.)
For fixed disks the Cylinder, Head Sector standard describes how a disk should be addressed in terms of hardware. Of course a Flash or USB stick device doesn't posess any physical CHS characteristics so partitioning software kind of wiggles values in a way that maximises but not exceeds the expected maximum storage capacity. Depending on the disks characteristics and formatting you end up with a device that has a Master Boot Record, a Partition Table (also containing Logical Block Addressing values if applicable) and a FAT(32) partition (which holds a Boot Record (which holds a Disk Parameter Block) one or two File Allocation Tables and the Root Directory). The PT holds the records for each partition: start "cylinder", end "cylinder", size in sectors, active flag and filesystem type ("/dev/sdb: unrecognized partition table type").
On device activation Linux (the kernel) looks for suitable block device drivers and does the low level handshaking with the device. This starts with looking at the block device itself ("usb-storage: device scan complete"), the MBR (if it needs to do something with it) then scanning the PT ("I/O error, dev sdb, sector n") to present available partitions to higher level kernel layers ("Buffer I/O error on device sdb2"). In terms of standards, protocols, compliance, Mcrsft Wndws is far more lenient, forgiving, than GNU/Linux ever will become (which definately is a Good Thing), and so Mcrsft Wndws being able to read slightly wonky disk layouts does not come as a surprise at all. Linux will not accept out of bounds values so if for instance in the PT a partitions amount of sectors exceeds what is "logical" for that partition given the start and end "cylinder" it will not accept add_disk() to proceed. Proceeding regardless would be comparable with trying to move a disks "head" beyond the partitions or even physical boundaries. AFAIK the same I/O errors show with read() or writes on already mounted filesystems where corruption makes one block point to a phantom block beyond the disks capacity. (Anyone want to correct me: BMG.)
Heh. All of this probably wasn't necessary to tell you the PT is corrupted, and maybe I should just revisit the OP and ask about the circumstances the disk died in in the first place. Maybe sloppy Mcrsft Wndws even has its purpose if it does allow you to delete PT records from there...
I've given up
I've bought a new 2GB flash drive.
I did erase the flash drive in windows using the windows dd port, but that didn't fix the hardware sector problems.
There is no sfdisk port for windows, so I've given up, and I can't find a windows tool that changes hardware geometry (Windows feels like a straitjacket...)
The problem is in the drive's actual hardware or whatever CHS numbers, not in the partition table (that doesn't exist anymore since the drive has been zeroed out up to its limit). It still reads the incorrect number of cylinders.
Last edited by lambchops468; 05-17-2008 at 03:52 PM.
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.