[S390] dcssblk: prevent early access without own make_request function

When loading a dcss segment with the dcssblk driver, sometimes the
following kind of message appears:

bio too big device dcssblk0 (8 > 0)
Buffer I/O error on device dcssblk0, logical block 172016
..

The fix is to move the disk registration after setting the
make_request function, to avoid calls into generic_make_request
for dcssblock without having the make_request function set up
properly.

Cc: Gerald Schaefer <gerald.schaefer@de.ibm.com>
Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
This commit is contained in:
Christian Borntraeger 2007-12-04 16:09:03 +01:00 коммит произвёл Martin Schwidefsky
Родитель 671756162c
Коммит 436d1bc7fe
1 изменённых файлов: 2 добавлений и 2 удалений

Просмотреть файл

@ -472,11 +472,11 @@ dcssblk_add_store(struct device *dev, struct device_attribute *attr, const char
if (rc) if (rc)
goto unregister_dev; goto unregister_dev;
add_disk(dev_info->gd);
blk_queue_make_request(dev_info->dcssblk_queue, dcssblk_make_request); blk_queue_make_request(dev_info->dcssblk_queue, dcssblk_make_request);
blk_queue_hardsect_size(dev_info->dcssblk_queue, 4096); blk_queue_hardsect_size(dev_info->dcssblk_queue, 4096);
add_disk(dev_info->gd);
switch (dev_info->segment_type) { switch (dev_info->segment_type) {
case SEG_TYPE_SR: case SEG_TYPE_SR:
case SEG_TYPE_ER: case SEG_TYPE_ER: