From: Brian King <brking@us.ibm.com>
To: Luka Renko <luka.renko@hermes.si>
Cc: linux-scsi@vger.kernel.org,
Steve McIntyre <smcintyre@software.plasmon.com>,
Damjan Lango <damjan.lango@hermes.si>
Subject: Re: SD driver and 8KB HW sector size
Date: Fri, 29 Oct 2004 13:27:58 -0500 [thread overview]
Message-ID: <41828BAE.1070308@us.ibm.com> (raw)
In-Reply-To: <33829B7061BDB84FAD9EB9EA1F5371B4015AC3F0@tsc.hermes.si>
Please try a 2.6.10-rc1 kernel. There was a fix that went in recently
for a problem I ran into that should fix your problem as well.
-Brian
Luka Renko wrote:
> Hello,
>
> SCSI Disk Driver in Linux 2.6 on i386 supports only devices with up-to 4KB
> sector size. Large sector size is not supported by block layer as it is
> expected that sector size is smaller or equal than page size (4KB).
>
> We have a device (magneto-optical disk) that has 8 KB HW sector size. We
> would like to use it from user space via SCSI Generic driver. The problem is
> that SCSI Disk Driver claims this device and registers it as /dev/sd device.
> This is not a big problem per-se (as raw CDB can be sent over SD driver
> too), but causes problems to Linux partitioning code. In some cases (first
> open() after disk change?), Linux partitioning code gets executed, which
> causes Oops (FC2 kernel 2.6.5-1.358):
>
> sda : READ CAPACITY failed.
> sda : status=0, message=00, host=1, driver=00
> sda : sense not available.
> sda: Write Protect is off
> sda: Mode Sense: 00 00 00 00
> sda: asking for cache data failed
> sda: assuming drive cache: write through
> sda : READ CAPACITY failed.
> sda : status=0, message=00, host=1, driver=00
> sda : sense not available.
> sda: Write Protect is off
> sda: Mode Sense: 00 00 00 00
> sda: asking for cache data failed
> sda: assuming drive cache: write through
> sda:<1>Unable to handle kernel NULL pointer dereference at virtual address
> 00000000
> printing eip:
> 02143452
> *pde = 00000000
> Oops: 0002 [#1]
> CPU: 0
> EIP: 0060:[<02143452>] Not tainted
> EFLAGS: 00010287 (2.6.5-1.358)
> EIP is at create_empty_buffers+0x14/0x54
> eax: 00000000 ebx: 030adb20 ecx: 00000000 edx: 00000000
> esi: 00000000 edi: 030adb20 ebp: 030adb20 esp: 06d42d24
> ds: 007b es: 007b ss: 0068
> Process udomkfs (pid: 8150, threadinfo=06d42000 task=05236eb0)
> Stack: 00000000 030adb20 02143be1 00000046 09f8b77c 00000001 09f8b784
> 00002000
> 00000001 0218f700 030adb20 00000000 09f8b77c 09f8b6e0 021467f1
> 09f8b778
> 00000000 0212b9a7 00000000 030adb20 030adb20 09f8b778 0212b9de
> 00000000
>
> Call Trace:
> [<02143be1>] block_read_full_page+0x4f/0x26e
> [<0218f700>] radix_tree_insert+0x6d/0xe2
> [<021467f1>] blkdev_get_block+0x0/0x47
> [<0212b9a7>] add_to_page_cache+0x3a/0x64
> [<0212b9de>] add_to_page_cache_lru+0xd/0x20
> [<0212cb5a>] read_cache_page+0x81/0x110
> [<021468e0>] blkdev_readpage+0x0/0xc
> [<02169bb1>] read_dev_sector+0x26/0x7c
> [<0216aca7>] read_lba+0x56/0x9b
> [<0216adb6>] alloc_read_gpt_header+0x4e/0x6b
> [<0216ae06>] is_gpt_valid+0x33/0x103
> [<0216b1fa>] find_valid_gpt+0x75/0x2de
> [<0216b48d>] efi_partition+0x2a/0x251
> [<0212ea1b>] __alloc_pages+0x9c/0x281
> [<02115ed2>] __wake_up_common+0x2f/0x50
> [<02115f01>] __wake_up+0xe/0x16
> [<021189cd>] printk+0x106/0x113
> [<021695ab>] disk_name+0x1f/0x60
> [<021696dd>] check_partition+0x8f/0xd1
> [<02169b06>] rescan_partitions+0x7d/0x102
> [<02146d95>] check_disk_change+0x3f/0x59
> [<0a8285e7>] sd_open+0xe3/0xf6 [sd_mod]
> [<0214706b>] do_open+0x24b/0x340
> [<021471e8>] blkdev_open+0x1a/0x46
> [<02140a6a>] dentry_open+0xc2/0x171
> [<021409a2>] filp_open+0x36/0x3c
> [<02140cde>] sys_open+0x31/0x7d
>
> I have looked through the code and it seems to me that partitioning code
> asumes in some places that sector size is 512 bytes. This might be OK on
> CD-ROM or similar as they emulate 512 byte IO even with larger HW sector
> sizes (if I remember correctly), however it does not work if we have a
> device with > 4KB HW sector size.
>
> I see two options to fix/workaround this problem:
> 1. Prevent partitioning code to be executed if block device does not support
> proper sector size
> 2. Prevent SCSI Disk driver to claim a device if sector size is not
> supported
> (in that case SCSI Generic driver should claim it)
>
> We would like to explore one of the above options, but I would need some
> advice from the mailing list which of the above would be a better way to
> support such devices.
>
> Regards,
> Luka
> -
> To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
--
Brian King
eServer Storage I/O
IBM Linux Technology Center
next prev parent reply other threads:[~2004-10-29 18:28 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-10-29 15:18 SD driver and 8KB HW sector size Luka Renko
2004-10-29 18:27 ` Brian King [this message]
-- strict thread matches above, loose matches on Subject: below --
2004-11-08 15:14 Luka Renko
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=41828BAE.1070308@us.ibm.com \
--to=brking@us.ibm.com \
--cc=damjan.lango@hermes.si \
--cc=linux-scsi@vger.kernel.org \
--cc=luka.renko@hermes.si \
--cc=smcintyre@software.plasmon.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).