Linux-2.4.15-pre9
Subsystems (10)
David Mosberger noticed that SCHED_FIFO has been broken for a while, and obviously very few people really cared, but it should be fixed now.
The USB update that I had originally documented as being part of pre8 was actually in my in-file, and is _really_ there in pre9, along with a bonus usbnet update.
I think I'm ready to hand this over to Marcelo.
Linus
-----
pre9:
- David Brownell: usbnet update
- Greg KH: USB and PCI hotplug update
- Ingo/me: fix SCHED_FIFO for UP/SMP for good (flw).
- Add back direct_IO now that it works again.
pre8:
- Richard Henderson: alpha update
- Andrew Morton: fix ext3/minix/sysv fsync behaviour.
pre7:
- Jeff Garzik: network driver updates
- Christoph Hellwig: UFS filesystem byteorder cleanups
- me: modified Andrea VM page allocator tuning
pre6:
- Russell King: /proc/cpuinfo for ARM
- Paul Mackerras: PPC update (cpuinfo etc)
- Nicolas Aspert: fix Intel 8xx agptlb flush
- Marko Myllynen: "Lindent" doesn't really need bash ;)
- Alexander Viro: /proc/cpuinfo for s390/s390x/sh, /proc/pci cleanup
- Alexander Viro: make lseek work on seqfiles
pre5:
- Greg KH: enable hotplug driver support
- Andrea Arcangeli: remove bogus sanity check
- David Mosberger: /proc/cpuinfo and scsi scatter-gather for ia64
- David Hinds: 16-bit pcmcia network driver updates/cleanups
- Hugh Dickins: remove some stale code from VM
- David Miller: /proc/cpuinfo for sparc, sparc fork bug fix, network fixes, warning fixes
- Peter Braam: intermezzo update
- Greg KH: USB updates
- Ivan Kokshaysky: /proc/cpuinfo for alpha
- David Woodhouse: jffs2 - remove dead code, remove gcc3 warning
- Hugh Dickins: fix kiobuf page allocation/deallocation
pre4:
- Mikael Pettersson: make proc_misc happy without modules
- Arjan van de Ven: clean up acpitable implementation ("micro-acpi")
- Anton Altaparmakov: LDM partition code update
- Alan Cox: final (yeah, sure) small missing pieces
- Andrey Savochkin/Andrew Morton: eepro100 config space save/restore over suspend
- Arjan van de Ven: remove power from pcmcia socket on card remove
- Greg KH: USB updates
- Neil Brown: multipath updates
- Martin Dalecki: fix up some "asmlinkage" routine markings
pre3:
- Alan Cox: more driver merging
- Al Viro: make ext2 group allocation more readable
pre2:
- Ivan Kokshaysky: fix alpha dec_and_lock with modules, for alpha config entry
- Kai Germaschewski: ISDN updates
- Jeff Garzik: network driver updates, sysv fs update
- Kai Mäkisara: SCSI tape update
- Alan Cox: large drivers merge
- Nikita Danilov: reiserfs procfs information
- Andrew Morton: ext3 merge
- Christoph Hellwig: vxfs livelock fix
- Trond Myklebust: NFS updates
- Jens Axboe: cpqarray + cciss dequeue fix
- Tim Waugh: parport_serial base_baud setting
- Matthew Dharm: usb-storage Freecom driver fixes
- Dave McCracken: wait4() thread group race fix
pre1:
- me: fix page flags race condition Andrea found
- David Miller: sparc and network updates
- various: fix loop driver that thought it was part of the VM system
- me: teach DRM about VM_RESERVED
- Alan Cox: more merging
Quoted 2 lines · Linus Torvalds
I think I'm ready to hand this over to Marcelo.
Aren't you going to include Tim Schmielau's patch to handle uptime larger than 497 days? It is a cool feature we always liked to have.
Cheers,
Anuradha
Signature · 4 lines
Debian GNU/Linux (kernel 2.4.13) Unix is a Registered Bell of AT&T Trademark Laboratories. -- Donn Seeley
Quoted 7 lines · Anuradha Ratnaweera
Quoted 2 lines · Linus Torvalds
I think I'm ready to hand this over to Marcelo.
Aren't you going to include Tim Schmielau's patch to handle uptime larger than 497 days? It is a cool feature we always liked to have.
Quite frankly, right now I'm in "handle only bugs that can crash the system mode". Anything that takes 497 days to see is fairly low on my priority list. My highest priority, in fact, is to get 2.4.15 out without any embarrassment.
Because it's not as if time stops when Marcelo takes over. I've suggested to him that he wait for a while just to see what the real problem spots are, but he'll have a full-time job integrating patches.
Note that I'll probably do the same thing: when I release 2.4.15, I'll at the same time release a 2.5.0 that is identical except for version number (that makes synchronization easier later on). And I'll probably _not_ start accepting all the big waiting patches immediately, I'd rather wait for at least a week or two to see that there aren't any other issues.
It's much easier doing some of the IO patches in particular knowing that the base you start out from is stable.
Linus
Quoted 4 lines · Linus Torvalds
Quite frankly, right now I'm in "handle only bugs that can crash the system mode". Anything that takes 497 days to see is fairly low on my priority list. My highest priority, in fact, is to get 2.4.15 out without any embarrassment.
Umm...
a) /proc/interrupts has buffer overflows.
b) I have a patch that should fix them (conversion to seq_file,
done for all architectures)
c) while completely straightforward, it's large (every subarchitecture
of m68k and mips seems to have its own get_irq_list()) and may contain typos in architectures I've no access to.
d) holes had been there for quite a while and it's either
"cat /proc/interrupts always causes memory corruption" or "everything OK"
I'm not quite sure where it is - if we were in -pre<small> I'd definitely say that it's worth merging, so that trivial typos could be caught before the release; the hole obviously deserves fixing. OTOH, merging that in -final means that we are risking "2.4.15 doesn't compile on <architecture>"...
Comments?
Quoted 19 lines · Alexander Viro
Quoted 4 lines · Linus Torvalds
Quite frankly, right now I'm in "handle only bugs that can crash the system mode". Anything that takes 497 days to see is fairly low on my priority list. My highest priority, in fact, is to get 2.4.15 out without any embarrassment.
Umm...
a)/proc/interruptshas buffer overflows.
b) I have a patch that should fix them (conversion toseq_file,
done for all architectures)
c) while completely straightforward, it's large (every subarchitecture
of m68k and mips seems to have its ownget_irq_list()) and may contain typos in architectures I've no access to.
d) holes had been there for quite a while and it's either
"cat/proc/interruptsalways causes memory corruption" or "everything OK"
Quoted 4 lines
I'm not quite sure where it is - if we were in -pre<small> I'd definitely say that it's worth merging, so that trivial typos could be caught before the release; the hole obviously deserves fixing. OTOH, merging that in -final means that we are risking "2.4.15 doesn't compile on <architecture>"...
If I understand things right, at least a few arches (PPC, MIPS, m68k, others) needs to implement show_trace_task anyhow, so we're already at 2.4.15 doesn't compile on <architecture>. I'd vote for a quick typo check and submit. :)
Signature · 2 lines
Tom Rini (TR1265) http://gate.crashing.org/~trini/
PATCH 2.5.0 kill read_ahead array.
In reply to Linus TorvaldsThe subject says it all...
This is removing the "write only" read_ahead sparse array from all the places where it's "used" by now.
This is just saving some memmory.
drivers/acorn/block/mfmhd.c +0 -1
@@ -1444,7 +1444,6 @@ hdc63463_irqpollmask = irqmask;blk_init_queue (BLK_DEFAULT_QUEUE (MAJOR_NR ),DEVICE_REQUEST ); - read_ahead[MAJOR_NR ] =8 ;/* 8 sector (4kB?) read ahread */ add_gendisk (&mfm_gendisk);
drivers/block/DAC960.c +0 -6
@@ -2033,10 +2033,6 @@ blksize_size[MajorNumber] = Controller->BlockSizes; max_sectors[MajorNumber] = Controller->MaxSectorsPerRequest;/* -Initialize Read Ahead to 128 sectors. -*/ - read_ahead[MajorNumber] =128 ; -/* Complete initialization of the Generic Disk Information structure. */ Controller->GenericDiskInfo.major = MajorNumber;
@@ -5481,8 +5477,6 @@ .part[MINOR(Inode->i_rdev)] .nr_sects <<9 , (u64 *) Argument); -case BLKRAGET : -case BLKRASET :case BLKFLSBUF :case BLKBSZGET :case BLKBSZSET :
drivers/block/acsi.c +0 -1
@@ -1786,7 +1786,6 @@ STramMask =ATARIHW_PRESENT (EXTD_DMA ) ?0x00000000 :0xff000000 ;blk_init_queue (BLK_DEFAULT_QUEUE (MAJOR_NR ),DEVICE_REQUEST ); - read_ahead[MAJOR_NR ] =8 ;/* 8 sector (4kB) read-ahead */ add_gendisk (&acsi_gendisk);#ifdef CONFIG_ATARI_SLM
drivers/block/blkpg.c +1 -12
@@ -210,22 +210,11 @@return -EFAULT ;set_device_ro (dev, intval);return 0 ; +case BLKROGET : intval = (is_read_only (dev) !=0 );return put_user (intval, (int *)(arg)); -case BLKRASET : -if (!capable (CAP_SYS_ADMIN )) -return -EACCES ; -if (arg >0xff ) -return -EINVAL ; - read_ahead[MAJOR (dev)] = arg; -return 0 ; -case BLKRAGET : -if (!arg) -return -EINVAL ; -return put_user (read_ahead[MAJOR (dev)], (long *) arg); -case BLKFLSBUF :if (!capable (CAP_SYS_ADMIN ))return -EACCES ;
drivers/block/cciss.c +0 -3
@@ -412,8 +412,6 @@case BLKBSZGET :case BLKROSET :case BLKROGET : -case BLKRASET : -case BLKRAGET :case BLKPG :case BLKELVGET :case BLKELVSET :
@@ -1948,7 +1946,6 @@/* fill in the other Kernel structs */ blksize_size[MAJOR_NR +i] = hba[i]->blocksizes; hardsect_size[MAJOR_NR +i] = hba[i]->hardsizes; - read_ahead[MAJOR_NR +i] =READ_AHEAD ;/* Set the pointers to queue functions */ q->back_merge_fn = cpq_back_merge_fn;
drivers/block/cpqarray.c +0 -3
@@ -527,7 +527,6 @@blk_queue_headactive (q,0 ); blksize_size[MAJOR_NR +i] = ida_blocksizes + (i*256 ); hardsect_size[MAJOR_NR +i] = ida_hardsizes + (i*256 ); - read_ahead[MAJOR_NR +i] =READ_AHEAD ; q->back_merge_fn = cpq_back_merge_fn; q->front_merge_fn = cpq_front_merge_fn;
@@ -1249,8 +1248,6 @@case BLKBSZGET :case BLKROSET :case BLKROGET : -case BLKRASET : -case BLKRAGET :case BLKELVGET :case BLKELVSET :case BLKPG :
drivers/block/floppy.c +0 -2
@@ -3450,8 +3450,6 @@switch (cmd) {case BLKROSET :case BLKROGET : -case BLKRASET : -case BLKRAGET :case BLKFLSBUF :return blk_ioctl (device, cmd, param); }
drivers/block/ll_rw_blk.c +0 -4
@@ -64,10 +64,6 @@*/ spinlock_t io_request_lock =SPIN_LOCK_UNLOCKED ; -/* This specifies how many sectors to read ahead on the disk. */ - -int read_ahead[MAX_BLKDEV ]; -/* blk_dev_struct is: * *request_fn * *current_request
drivers/block/paride/pcd.c +0 -1
@@ -356,7 +356,6 @@ }blk_init_queue (BLK_DEFAULT_QUEUE (MAJOR_NR ),DEVICE_REQUEST ); - read_ahead[MAJOR_NR ] =8 ;/* 8 sector (4kB) read ahead */ for (i=0 ;i<PCD_UNITS ;i++) pcd_blocksizes[i] =1024 ; blksize_size[MAJOR_NR ] = pcd_blocksizes;
drivers/block/paride/pd.c +1 -4
@@ -397,8 +397,7 @@ } q =BLK_DEFAULT_QUEUE (MAJOR_NR );blk_init_queue (q,DEVICE_REQUEST ); - read_ahead[MAJOR_NR ] =8 ;/* 8 sector (4kB) read ahead */ - + pd_gendisk.major = major; pd_gendisk.major_name = name;add_gendisk (&pd_gendisk);
@@ -483,8 +482,6 @@case BLKGETSIZE64 :case BLKROSET :case BLKROGET : -case BLKRASET : -case BLKRAGET :case BLKFLSBUF :case BLKPG :return blk_ioctl (inode->i_rdev, cmd, arg);
drivers/block/paride/pf.c +1 -4
@@ -412,8 +412,7 @@ q->back_merge_fn = pf_back_merge_fn; q->front_merge_fn = pf_front_merge_fn; q->merge_requests_fn = pf_merge_requests_fn; - read_ahead[MAJOR_NR ] =8 ;/* 8 sector (4kB) read ahead */ - +for (i=0 ;i<PF_UNITS ;i++) pf_blocksizes[i] =1024 ; blksize_size[MAJOR_NR ] = pf_blocksizes;for (i=0 ;i<PF_UNITS ;i++)
@@ -482,8 +481,6 @@return put_user ((u64 )PF .capacity <<9 ,(u64 *)arg);case BLKROSET :case BLKROGET : -case BLKRASET : -case BLKRAGET :case BLKFLSBUF :return blk_ioctl (inode->i_rdev, cmd, arg);default :
drivers/block/ps2esdi.c +0 -3
@@ -181,7 +181,6 @@ }/* set up some global information - indicating device specific info */ blk_init_queue (BLK_DEFAULT_QUEUE (MAJOR_NR ),DEVICE_REQUEST ); - read_ahead[MAJOR_NR ] =8 ;/* 8 sector (4kB) read ahead */ /* some minor housekeeping - setup the global gendisk structure */ add_gendisk (&ps2esdi_gendisk);
@@ -1116,8 +1115,6 @@case BLKGETSIZE64 :case BLKROSET :case BLKROGET : -case BLKRASET : -case BLKRAGET :case BLKFLSBUF :case BLKBSZGET :case BLKBSZSET :
drivers/block/xd.c +0 -4
@@ -172,7 +172,6 @@ } devfs_handle =devfs_mk_dir (NULL , xd_gendisk.major_name,NULL );blk_init_queue (BLK_DEFAULT_QUEUE (MAJOR_NR ),DEVICE_REQUEST ); - read_ahead[MAJOR_NR ] =8 ;/* 8 sector (4kB) read ahead */ add_gendisk (&xd_gendisk);xd_geninit ();
@@ -355,8 +354,6 @@case BLKFLSBUF :case BLKROSET :case BLKROGET : -case BLKRASET : -case BLKRAGET :case BLKPG :return blk_ioctl (inode->i_rdev, cmd, arg);
@@ -1109,7 +1106,6 @@blk_cleanup_queue (BLK_DEFAULT_QUEUE (MAJOR_NR )); blk_size[MAJOR_NR ] =NULL ; hardsect_size[MAJOR_NR ] =NULL ; - read_ahead[MAJOR_NR ] =0 ;del_gendisk (&xd_gendisk);release_region (xd_iobase,4 ); }
drivers/cdrom/aztcd.c +0 -1
@@ -1929,7 +1929,6 @@ }blk_init_queue (BLK_DEFAULT_QUEUE (MAJOR_NR ),DEVICE_REQUEST ); blksize_size[MAJOR_NR ] = aztcd_blocksizes; - read_ahead[MAJOR_NR ] =4 ;register_disk (NULL ,MKDEV (MAJOR_NR ,0 ),1 , &azt_fops,0 );if ((azt_port ==0x1f0 ) || (azt_port ==0x170 ))
drivers/cdrom/cdu31a.c +0 -1
@@ -3454,7 +3454,6 @@blk_init_queue (BLK_DEFAULT_QUEUE (MAJOR_NR ),DEVICE_REQUEST ); - read_ahead[MAJOR_NR ] =CDU31A_READAHEAD ; cdu31a_block_size =1024 ;/* 1kB default block size */ /* use 'mount -o block=2048' */ blksize_size[MAJOR_NR ] = &cdu31a_block_size;
drivers/cdrom/cm206.c +0 -1
@@ -1501,7 +1501,6 @@devfs_plain_cdrom (&cm206_info, &cm206_bdops);blk_init_queue (BLK_DEFAULT_QUEUE (MAJOR_NR ),DEVICE_REQUEST ); blksize_size[MAJOR_NR ] = cm206_blocksizes; - read_ahead[MAJOR_NR ] =16 ;/* reads ahead what? */ init_bh (CM206_BH , cm206_bh);memset (cd,0 ,sizeof (*cd));/* give'm some reasonable value */
drivers/cdrom/gscd.c +0 -1
@@ -1021,7 +1021,6 @@blk_init_queue (BLK_DEFAULT_QUEUE (MAJOR_NR ),DEVICE_REQUEST ); blksize_size[MAJOR_NR ] = gscd_blocksizes; - read_ahead[MAJOR_NR ] =4 ; disk_state =0 ; gscdPresent =1 ;
drivers/cdrom/mcd.c +0 -1
@@ -1077,7 +1077,6 @@ blksize_size[MAJOR_NR ] = mcd_blocksizes;blk_init_queue (BLK_DEFAULT_QUEUE (MAJOR_NR ),DEVICE_REQUEST ); - read_ahead[MAJOR_NR ] =4 ;/* check for card */
drivers/cdrom/mcdx.c +0 -1
@@ -1188,7 +1188,6 @@ }blk_init_queue (BLK_DEFAULT_QUEUE (MAJOR_NR ),DEVICE_REQUEST ); - read_ahead[MAJOR_NR ] =READ_AHEAD ; blksize_size[MAJOR_NR ] = mcdx_blocksizes;xtrace (INIT ,"init() subscribe irq and i/o\n" );
drivers/cdrom/optcd.c +0 -1
@@ -2066,7 +2066,6 @@ hardsect_size[MAJOR_NR ] = &hsecsize; blksize_size[MAJOR_NR ] = &blksize;blk_init_queue (BLK_DEFAULT_QUEUE (MAJOR_NR ),DEVICE_REQUEST ); - read_ahead[MAJOR_NR ] =4 ;request_region (optcd_port,4 ,"optcd" );register_disk (NULL ,MKDEV (MAJOR_NR ,0 ),1 , &opt_fops,0 );
drivers/cdrom/sbpcd.c +2 -9
@@ -4531,12 +4531,6 @@RETURN_UP (0 ); }/* end of CDROMREADAUDIO */ -case BLKRASET : -if (!capable (CAP_SYS_ADMIN ))RETURN_UP (-EACCES ); -if (!(cdi->dev))RETURN_UP (-EINVAL ); -if (arg >0xff )RETURN_UP (-EINVAL ); - read_ahead[MAJOR (cdi->dev)] = arg; -RETURN_UP (0 );default :msg (DBG_IOC ,"ioctl: unknown function request %04X\n" , cmd);RETURN_UP (-EINVAL );
@@ -5871,10 +5865,9 @@ (BLK_DEFAULT_QUEUE (MAJOR_NR ))->merge_requests_fn = dont_merge_requests_fn;#endif blk_queue_headactive (BLK_DEFAULT_QUEUE (MAJOR_NR ),0 ); - read_ahead[MAJOR_NR ] = buffers * (CD_FRAMESIZE /512 ); - +request_region (CDo_command,4 ,major_name); - + devfs_handle =devfs_mk_dir (NULL ,"sbp" ,NULL );for (j=0 ;j<NR_SBPCD ;j++) {
drivers/cdrom/sjcd.c +0 -1
@@ -1702,7 +1702,6 @@ }blk_init_queue (BLK_DEFAULT_QUEUE (MAJOR_NR ),DEVICE_REQUEST ); - read_ahead[MAJOR_NR ] =4 ;register_disk (NULL ,MKDEV (MAJOR_NR ,0 ),1 , &sjcd_fops,0 );if (check_region (sjcd_base,4 )) {
drivers/cdrom/sonycd535.c +0 -1
@@ -1595,7 +1595,6 @@ }blk_init_queue (BLK_DEFAULT_QUEUE (MAJOR_NR ),DEVICE_REQUEST ); blksize_size[MAJOR_NR ] = &sonycd535_block_size; - read_ahead[MAJOR_NR ] =8 ;/* 8 sector (4kB) read-ahead */ sony_toc = (struct s535_sony_toc *)kmalloc (sizeof *sony_toc,GFP_KERNEL );
drivers/ide/hd.c +0 -3
@@ -652,8 +652,6 @@case BLKROSET :case BLKROGET : -case BLKRASET : -case BLKRAGET :case BLKFLSBUF :case BLKPG :return blk_ioctl (inode->i_rdev, cmd, arg);
@@ -840,7 +838,6 @@return -1 ; }blk_init_queue (BLK_DEFAULT_QUEUE (MAJOR_NR ),DEVICE_REQUEST ); - read_ahead[MAJOR_NR ] =8 ;/* 8 sector (4kB) read-ahead */ add_gendisk (&hd_gendisk);init_timer (&device_timer); device_timer.function = hd_times_out;
drivers/ide/ide-cd.c +0 -1
@@ -2709,7 +2709,6 @@int major =HWIF (drive)->major;int minor = drive->select.b.unit <<PARTN_BITS ; -ide_add_setting (drive,"breada_readahead" ,SETTING_RW ,BLKRAGET ,BLKRASET ,TYPE_INT ,0 ,255 ,1 ,2 , &read_ahead[major],NULL );ide_add_setting (drive,"file_readahead" ,SETTING_RW ,BLKFRAGET ,BLKFRASET ,TYPE_INTA ,0 ,INT_MAX ,1 ,1024 , &max_readahead[major][minor],NULL );ide_add_setting (drive,"max_kb_per_request" ,SETTING_RW ,BLKSECTGET ,BLKSECTSET ,TYPE_INTA ,1 ,255 ,1 ,2 , &max_sectors[major][minor],NULL );ide_add_setting (drive,"dsc_overlap" ,SETTING_RW ,-1 ,-1 ,TYPE_BYTE ,0 ,1 ,1 ,1 , &drive->dsc_overlap,NULL );
drivers/ide/ide-disk.c +0 -1
@@ -689,7 +689,6 @@ide_add_setting (drive,"bswap" ,SETTING_READ ,-1 ,-1 ,TYPE_BYTE ,0 ,1 ,1 ,1 , &drive->bswap,NULL );ide_add_setting (drive,"multcount" , id ?SETTING_RW :SETTING_READ ,HDIO_GET_MULTCOUNT ,HDIO_SET_MULTCOUNT ,TYPE_BYTE ,0 , id ? id->max_multsect :0 ,1 ,2 , &drive->mult_count, set_multcount);ide_add_setting (drive,"nowerr" ,SETTING_RW ,HDIO_GET_NOWERR ,HDIO_SET_NOWERR ,TYPE_BYTE ,0 ,1 ,1 ,1 , &drive->nowerr, set_nowerr); -ide_add_setting (drive,"breada_readahead" ,SETTING_RW ,BLKRAGET ,BLKRASET ,TYPE_INT ,0 ,255 ,1 ,2 , &read_ahead[major],NULL );ide_add_setting (drive,"file_readahead" ,SETTING_RW ,BLKFRAGET ,BLKFRASET ,TYPE_INTA ,0 ,4096 ,PAGE_SIZE ,1024 , &max_readahead[major][minor],NULL );ide_add_setting (drive,"max_kb_per_request" ,SETTING_RW ,BLKSECTGET ,BLKSECTSET ,TYPE_INTA ,1 ,255 ,1 ,2 , &max_sectors[major][minor],NULL );ide_add_setting (drive,"lun" ,SETTING_RW ,-1 ,-1 ,TYPE_INT ,0 ,7 ,1 ,1 , &drive->lun,NULL );
drivers/ide/ide-floppy.c +0 -1
@@ -1918,7 +1918,6 @@ide_add_setting (drive,"bios_cyl" ,SETTING_RW ,-1 ,-1 ,TYPE_INT ,0 ,1023 ,1 ,1 , &drive->bios_cyl,NULL );ide_add_setting (drive,"bios_head" ,SETTING_RW ,-1 ,-1 ,TYPE_BYTE ,0 ,255 ,1 ,1 , &drive->bios_head,NULL );ide_add_setting (drive,"bios_sect" ,SETTING_RW ,-1 ,-1 ,TYPE_BYTE ,0 ,63 ,1 ,1 , &drive->bios_sect,NULL ); -ide_add_setting (drive,"breada_readahead" ,SETTING_RW ,BLKRAGET ,BLKRASET ,TYPE_INT ,0 ,255 ,1 ,2 , &read_ahead[major],NULL );ide_add_setting (drive,"file_readahead" ,SETTING_RW ,BLKFRAGET ,BLKFRASET ,TYPE_INTA ,0 ,INT_MAX ,1 ,1024 , &max_readahead[major][minor],NULL );ide_add_setting (drive,"max_kb_per_request" ,SETTING_RW ,BLKSECTGET ,BLKSECTSET ,TYPE_INTA ,1 ,255 ,1 ,2 , &max_sectors[major][minor],NULL );
drivers/ide/ide-probe.c +1 -2
@@ -863,11 +863,10 @@printk ("%s: probed IRQ %d failed, using default.\n" , hwif->name, hwif->irq); } - +init_gendisk (hwif); blk_dev[hwif->major].data = hwif; blk_dev[hwif->major].queue = ide_get_queue; - read_ahead[hwif->major] =8 ;/* (4kB) */ hwif->present =1 ;/* success */ #if (DEBUG_SPINLOCK >0 )
drivers/md/lvm.c +0 -23
@@ -885,29 +885,6 @@invalidate_buffers (inode->i_rdev);break ; - -case BLKRASET : -/* set read ahead for block device */ -if (!capable (CAP_SYS_ADMIN ))return -EACCES ; - -P_IOCTL ("BLKRASET: %ld sectors for %s\n" , - (long ) arg,kdevname (inode->i_rdev)); - -if ((long ) arg <LVM_MIN_READ_AHEAD || - (long ) arg >LVM_MAX_READ_AHEAD ) -return -EINVAL ; - lv_ptr->lv_read_ahead = (long ) arg; -break ; - - -case BLKRAGET : -/* get current read ahead setting */ -P_IOCTL ("BLKRAGET %d\n" , lv_ptr->lv_read_ahead); -if (put_user (lv_ptr->lv_read_ahead, (long *)arg)) -return -EFAULT ; -break ; - -case HDIO_GETGEO :/* get disk geometry */ P_IOCTL ("%s -- lvm_blk_ioctl -- HDIO_GETGEO\n" , lvm_name);
drivers/md/md.c +0 -13
@@ -1734,7 +1734,6 @@register_disk (&md_gendisk,MKDEV (MAJOR_NR ,mdidx (mddev)),1 , &md_fops, md_size[mdidx (mddev)]<<1 ); - read_ahead[MD_MAJOR ] =1024 ;return (0 ); }
@@ -2619,8 +2618,6 @@ (u64 *) arg); goto done; -case BLKRAGET : -case BLKRASET :case BLKFLSBUF :case BLKBSZGET :case BLKBSZSET :
@@ -3167,13 +3164,6 @@ sz +=sprintf (page+sz,"\n" ); - - sz +=sprintf (page+sz,"read_ahead " ); -if (read_ahead[MD_MAJOR ] ==INT_MAX ) - sz +=sprintf (page+sz,"not set\n" ); -else - sz +=sprintf (page+sz,"%d sectors\n" , read_ahead[MD_MAJOR ]); - ITERATE_MDDEV(mddev,tmp) { sz +=sprintf (page + sz,"md%d : %sactive" ,mdidx (mddev), mddev->pers ?"" :"in" );
@@ -3663,9 +3653,6 @@/* forward all md request to md_make_request */ blk_queue_make_request (BLK_DEFAULT_QUEUE (MAJOR_NR ), md_make_request); - - read_ahead[MAJOR_NR ] =INT_MAX ; -add_gendisk (&md_gendisk); md_recovery_thread =md_register_thread (md_do_recovery,NULL , name);
drivers/message/i2o/i2o_block.c +1 -3
@@ -1170,11 +1170,9 @@case BLKFLSBUF :case BLKROSET :case BLKROGET : -case BLKRASET : -case BLKRAGET :case BLKPG :return blk_ioctl (inode->i_rdev, cmd, arg); - +default :return -EINVAL ; }
drivers/s390/block/xpram.c +0 -19
@@ -659,22 +659,6 @@if (capable (CAP_SYS_ADMIN ) )invalidate_buffers (inode->i_rdev);return 0 ; -case BLKRAGET :/* return the readahead value, 0x1263 */ -if (!arg)return -EINVAL ; - err =0 ;/* verify_area_20(VERIFY_WRITE, (long *) arg, sizeof(long)); -* if (err) return err; -*/ -put_user (read_ahead[MAJOR (inode->i_rdev)], (long *)arg); - -return 0 ; - -case BLKRASET :/* set the readahead value, 0x1262 */ -if (!capable (CAP_SYS_ADMIN ))return -EACCES ; -if (arg >0xff )return -EINVAL ;/* limit it */ - read_ahead[MAJOR (inode->i_rdev)] = arg; -atomic_eieio (); -return 0 ; -case BLKRRPART :/* re-read partition table: can't do it, 0x1259 */ return -EINVAL ;
@@ -1043,7 +1027,6 @@blk_init_queue (q, xpram_request);blk_queue_headactive (BLK_DEFAULT_QUEUE (major),0 );#endif /* V22/V24 */ - read_ahead[major] = xpram_rahead;/* we want to have XPRAM_UNUSED blocks security buffer between devices */ mem_usable=xpram_mem_avail-(XPRAM_UNUSED *(xpram_devs-1 ));
@@ -1182,7 +1165,6 @@kfree (xpram_hardsects); hardsect_size[major] =NULL ; fail_malloc: - read_ahead[major] =0 ;#if (XPRAM_VERSION ==22 ) blk_dev[major].request_fn =NULL ;#endif /* V22 */
@@ -1222,7 +1204,6 @@#if (XPRAM_VERSION ==22 ) blk_dev[major].request_fn =NULL ;#endif /* V22 */ - read_ahead[major] =0 ; blk_size[major] =NULL ;kfree (blksize_size[major]); blksize_size[major] =NULL ;
drivers/s390/char/tapeblock.c +0 -1
@@ -102,7 +102,6 @@ }if (tapeblock_major ==0 ) tapeblock_major = result;/* accept dynamic major number*/ INIT_BLK_DEV (tapeblock_major,tape_request_fn,tapeblock_getqueue,NULL ); - read_ahead[tapeblock_major]=TAPEBLOCK_READAHEAD ;PRINT_WARN (KERN_ERR " tape gets major %d for block device\n" , result); blk_size[tapeblock_major] = (int *)kmalloc (256 *sizeof (int ),GFP_ATOMIC );memset (blk_size[tapeblock_major],0 ,256 *sizeof (int ));
drivers/scsi/sd.c +7 -14
@@ -234,8 +234,6 @@case BLKGETSIZE64 :case BLKROSET :case BLKROGET : -case BLKRASET : -case BLKRAGET :case BLKFLSBUF :case BLKSSZGET :case BLKPG :
@@ -1217,18 +1215,14 @@ rscsi_disks[i].has_part_table =1 ; } } -/* If our host adapter is capable of scatter-gather, then we increase -* the read-ahead to 60 blocks (120 sectors). If not, we use -* a two block (4 sector) read ahead. We can only respect this with the -* granularity of every 16 disks (one device major). + +/* FIXME: If our host adapter is capable of scatter-gather, then we +* should increase the number of blocks we read at once to 60 (120 +* sectors). However there is currently no such kind of mechanism +* there... Please have a look at the corresponding comment in sr.c +* +* --dalecki */ -for (i =0 ; i <N_USED_SD_MAJORS ; i++) { - read_ahead[SD_MAJOR (i)] = - (rscsi_disks[i *SCSI_DISKS_PER_MAJOR ].device - && rscsi_disks[i *SCSI_DISKS_PER_MAJOR ].device->host->sg_tablesize) - ?120 /* 120 sector read-ahead */ - :4 ;/* 4 sector read-ahead */ - }return ; }
@@ -1405,7 +1399,6 @@del_gendisk (&sd_gendisks[i]); blk_size[SD_MAJOR (i)] =NULL ; hardsect_size[SD_MAJOR (i)] =NULL ; - read_ahead[SD_MAJOR (i)] =0 ; } sd_template.dev_max =0 ;if (sd_gendisks != &sd_gendisk)
drivers/scsi/sr.c +6 -9
@@ -888,14 +888,12 @@register_cdrom (&scsi_CDs[i].cdi); } - -/* If our host adapter is capable of scatter-gather, then we increase -* the read-ahead to 16 blocks (32 sectors). If not, we use -* a two block (4 sector) read ahead. */ -if (scsi_CDs[0 ].device && scsi_CDs[0 ].device->host->sg_tablesize) - read_ahead[MAJOR_NR ] =32 ;/* 32 sector read-ahead. Always removable. */ -else - read_ahead[MAJOR_NR ] =4 ;/* 4 sector read-ahead */ +/* FIXME: There should be a way to increase some kind of driver read +* ahead value for the device here. Plase have a look at the +* corresponding note in sd.c. +* +* --dalecki +*/ return ; }
@@ -954,7 +952,6 @@ blksize_size[MAJOR_NR ] =NULL ; hardsect_size[MAJOR_NR ] =NULL ; blk_size[MAJOR_NR ] =NULL ; - read_ahead[MAJOR_NR ] =0 ; sr_template.dev_max =0 ; }
drivers/scsi/sr_ioctl.c +0 -2
@@ -550,8 +550,6 @@return put_user ((u64 )scsi_CDs[target].capacity <<9 , (u64 *)arg);case BLKROSET :case BLKROGET : -case BLKRASET : -case BLKRAGET :case BLKFLSBUF :case BLKSSZGET :return blk_ioctl (cdi->dev, cmd, arg);
dump +2 -0
@@ -0,0 +1,2 @@ +BLKRASET +BLKRAGET
fs/hfs/file.c +2 -2
@@ -313,8 +313,8 @@ bhb = bhe = buflist;if (reada) { -if (blocks < read_ahead[MAJOR (dev)] / (HFS_SECTOR_SIZE >>9 )) { - blocks = read_ahead[MAJOR (dev)] / (HFS_SECTOR_SIZE >>9 ); +if (blocks < reada / (HFS_SECTOR_SIZE >>9 )) { + blocks = reada / (HFS_SECTOR_SIZE >>9 ); }if (block + blocks > size) { blocks = size - block;
include/linux/fs.h +2 -1
@@ -170,8 +170,10 @@#define BLKRRPART _IO(0x12,95)/* re-read partition table */ #define BLKGETSIZE _IO(0x12,96)/* return device size /512 (long *arg) */ #define BLKFLSBUF _IO(0x12,97)/* flush buffer cache */ +#if 0 #define BLKRASET _IO(0x12,98)/* Set read ahead for block device */ #define BLKRAGET _IO(0x12,99)/* get current read ahead setting */ +#endif #define BLKFRASET _IO(0x12,100)/* set filesystem (mm/filemap.c) read-ahead */ #define BLKFRAGET _IO(0x12,101)/* get filesystem (mm/filemap.c) read-ahead */ #define BLKSECTSET _IO(0x12,102)/* set max sectors per request (ll_rw_blk.c) */
@@ -1438,7 +1440,6 @@extern ssize_t char_read (struct file *,char *,size_t ,loff_t *);extern ssize_t block_read (struct file *,char *,size_t ,loff_t *); -extern int read_ahead[];extern ssize_t char_write (struct file *,const char *,size_t ,loff_t *);extern ssize_t block_write (struct file *,const char *,size_t ,loff_t *);
kernel/ksyms.c +0 -1
@@ -496,7 +496,6 @@EXPORT_SYMBOL (clear_inode);EXPORT_SYMBOL (___strtok);EXPORT_SYMBOL (init_special_inode); -EXPORT_SYMBOL (read_ahead);EXPORT_SYMBOL (get_hash_table);EXPORT_SYMBOL (get_empty_inode);EXPORT_SYMBOL (insert_inode_hash);
In article <[email protected]>
[email protected] claimed this objective:
Quoted 7 lines · Anuradha Ratnaweera
Quoted 5 lines · Linus Torvalds
Quoted 2 lines
I think I'm ready to hand this over to Marcelo.
Quoted 7 lines
Quoted 2 lines
Aren't you going to include Tim Schmielau's patch to handle uptime larger than 497 days? It is a cool feature we always liked to have.
Quite frankly, right now I'm in "handle only bugs that can crash the system mode". Anything that takes 497 days to see is fairly low on my priority list. My highest priority, in fact, is to get 2.4.15 out without any embarrassment.
Back in the 60's when GE was still a mainframe manufacturer they had a counter which rolled over at about 35 days. When it started failing their competitors had good time with "GECOS fails to fail as expected." That *is* an embarrassment.
con06:news> uptime
9:56am up 427 days, 19:00, 2 users, load average: 0.87, 0.88, 0.83
Signature · 3 lines
bill davidsen <[email protected]> His first management concern is not solving the problem, but covering his ass. If he lived in the middle ages he'd wear his codpiece backward.
Re: PATCH 2.5.0 kill read_ahead array.
In reply to Linus TorvaldsQuoted 3 lines · Martin Dalecki
This is removing the "write only"
read_aheadsparse array from all the places where it's "used" by now.
This is just saving some memmory.
Is this a case of the "read_ahead" array is redundant and read ahead is done at a different level (not using this array), or is it a case of read ahead not being done at all? If it is not being done at all, then removing the unused array is the wrong thing to do - we should fix read ahead, and start using the array.
Cheers, Andreas
--
Andreas Dilger
http://sourceforge.net/projects/ext2resize/
http://www-mddsp.enel.ucalgary.ca/People/adilger/
Re: PATCH 2.5.0 kill read_ahead array.
In reply to Linus TorvaldsQuoted 11 lines · Andreas Dilger
Quoted 3 lines · Martin Dalecki
This is removing the "write only"
read_aheadsparse array from all the places where it's "used" by now.
This is just saving some memmory.Is this a case of the "
read_ahead" array is redundant and read ahead is done at a different level (not using this array), or is it a case of read ahead not being done at all? If it is not being done at all, then removing the unused array is the wrong thing to do - we should fix read ahead, and start using the array.
No we shouldn't.
There are the following problems with the read_ahead array as it currently
stands:
1. It isn't used at all at any level!
Even the AS390 people finally cleaned aparently theyr code up.
REALY REALY Please look at the the patch.
There is only one bogous place in hfs, where this array was used at all. Literally all other places are just writing some values into it. This is what I'm calling a "write only" variable.
2. It is bound to the major number, which is the wrong granularity, since linux doesn't preserve the device type on this level and is slicing up
the minor numbers. This is the most severe brain damage of it.
3. We have anyway a filesystem read ahead layer there.
4. We have a block device driver read ahead layer there too (it's called blksize there...).
5. We have blk_dev_t and block_device structs, which are supposed to replace the current static global array, since they are the more logical place where such information should be placed. This is unevitable if we are ever willing to provide support for real kernel scalability in terms of numbers of attached devices...
Regard's.
Quoted 7 lines · Anuradha Ratnaweera
Quoted 2 lines · Linus Torvalds
I think I'm ready to hand this over to Marcelo.
Aren't you going to include Tim Schmielau's patch to handle uptime larger than 497 days? It is a cool feature we always liked to have.
Seeing the differences between pre-patches getting smaller and smaller, I guess I finished the patch just too late in the release cycle.
I will keep an eye on it and eventually resubmit it to Marcelo when it needs rediffing.
Tim
Quoted 6 lines · Linus Torvalds
Quoted 5 lines · Anuradha Ratnaweera
Quoted 2 lines · Linus Torvalds
I think I'm ready to hand this over to Marcelo.
Quoted 7 lines
Quoted 2 lines
Aren't you going to include Tim Schmielau's patch to handle uptime larger than 497 days? It is a cool feature we always liked to have.
Quite frankly, right now I'm in "handle only bugs that can crash the system mode". Anything that takes 497 days to see is fairly low on my priority list. My highest priority, in fact, is to get 2.4.15 out without any embarrassment.
Embarrasments like having the modules install into directories
like /lib/modules/2.4.15-greased-turkey or vmlinuz installed to an image /boot/vmlinuz-2.4.15-greased-turkey? Those sorts of embarrasments? Or was that just a last shot to see if we were still awake in 2.4?
[...]
Quoted 1 line
Linus
Mike
Signature · 4 lines
Michael H. Warfield | (770) 985-6132 | [email protected] /\/\|=mhw=|\/\/ | (678) 463-0932 | http://www.wittsend.com/mhw/ NIC whois: MHW9 | An optimist believes we live in the best of all PGP Key: 0xDF1DD471 | possible worlds. A pessimist is sure of it!
PATCH 1/1 fix SCSI non-blocksize reads
In reply to Linus TorvaldsQuoted 9 lines · Linus Torvalds
David Mosberger noticed that
SCHED_FIFOhas been broken for a while, and obviously very few people really cared, but it should be fixed now.The USB update that I had originally documented as being part of pre8 was actually in my in-file, and is _really_ there in pre9, along with a bonus usbnet update.
I think I'm ready to hand this over to Marcelo.
Several SCSI drivers blindly do reads of size 1024 when trying to read
the partition table. This fails on Magneto Optical drives and similar
odd devices with 2048 byte native sector sizes. This patch fixes that so I can have partitions on my MO drive again (it lives on an Adaptec card at present and has 2048 byte sectors),
Please apply,
-Erik
--
Erik B. Andersen http://codepoet-consulting.com/
--This message was written using 73% post-consumer electrons--
drivers/scsi/BusLogic.c renamed from drivers/scsi.orig/BusLogic.c +11 -4
@@ -4103,10 +4103,16 @@int BusLogic_BIOSDiskParameters (SCSI_Disk_T *Disk,KernelDevice_T Device,int *Parameters) { -BusLogic_HostAdapter_T *HostAdapter = - (BusLogic_HostAdapter_T *) Disk->device->host->hostdata; +BusLogic_HostAdapter_T *HostAdapter = (BusLogic_HostAdapter_T *) Disk->device->host->hostdata;BIOS_DiskParameters_T *DiskParameters = (BIOS_DiskParameters_T *) Parameters;struct buffer_head *BufferHead; +int ma =MAJOR (Device); +int mi = (MINOR (Device) & ~0xf ); +int block =1024 ; + +if (blksize_size[ma]) + block = blksize_size[ma][mi]; +if (HostAdapter->ExtendedTranslationEnabled && Disk->capacity >=2 *1024 *1024 /* 1 GB in 512 byte sectors */ ) {
@@ -4131,8 +4137,9 @@/* Attempt to read the first 1024 bytes from the disk device. */ - BufferHead =bread (MKDEV (MAJOR (Device),MINOR (Device) & ~0x0F ),0 ,1024 ); -if (BufferHead ==NULL )return 0 ; +if (!(BufferHead =bread (MKDEV (ma,mi),0 , block))) +return 0 ; +/* If the boot sector partition table flag is valid, search for a partition table entry whose end_head matches one of the standard BusLogic geometry
drivers/scsi/aic7xxx/aic7xxx_linux.c renamed from drivers/scsi.orig/aic7xxx/aic7xxx_linux.c +8 -4
@@ -2740,13 +2740,17 @@int extended;struct ahc_softc *ahc;struct buffer_head *bh; - +int ma =MAJOR (dev); +int mi = (MINOR (dev) & ~0xf ); +int block =1024 ; ahc = *((struct ahc_softc **)disk->device->host->hostdata); - bh =bread (MKDEV (MAJOR (dev),MINOR (dev) & ~0xf ),0 ,1024 ); +if (blksize_size[ma]) + block = blksize_size[ma][mi]; + + bh =bread (MKDEV (ma,mi),0 , block);if (bh) { - ret =scsi_partsize (bh, disk->capacity, - &geom[2 ], &geom[0 ], &geom[1 ]); + ret =scsi_partsize (bh, disk->capacity, &geom[2 ], &geom[0 ], &geom[1 ]);brelse (bh);if (ret !=-1 )return (ret);
drivers/scsi/aic7xxx_old.c renamed from drivers/scsi.orig/aic7xxx_old.c +7 -2
@@ -11737,10 +11737,15 @@int heads, sectors, cylinders, ret;struct aic7xxx_host *p;struct buffer_head *bh; - +int ma =MAJOR (dev); +int mi = (MINOR (dev) & ~0xf ); +int block =1024 ; p = (struct aic7xxx_host *) disk->device->host->hostdata; - bh =bread (MKDEV (MAJOR (dev),MINOR (dev)&~0xf ),0 ,1024 ); +if (blksize_size[ma]) + block = blksize_size[ma][mi]; + + bh =bread (MKDEV (ma,mi),0 , block);if ( bh ) { ret =scsi_partsize (bh, disk->capacity, &geom[2 ], &geom[0 ], &geom[1 ]);
drivers/scsi/tmscsim.c renamed from drivers/scsi.orig/tmscsim.c +8 -1
@@ -1449,8 +1449,15 @@struct buffer_head *bh;int ret_code =-1 ;int size = disk->capacity; +int ma =MAJOR (devno); +int mi = (MINOR (devno) & ~0xf ); +int block =1024 ; -if ((bh =bread (MKDEV (MAJOR (devno),MINOR (devno)&~0xf ),0 ,1024 ))) +if (blksize_size[ma]) + block = blksize_size[ma][mi]; + + bh =bread (MKDEV (ma,mi),0 , block); +if (bh) {/* try to infer mapping from partition table */ ret_code = partsize (bh, (unsigned long) size, (unsigned int *) geom + 2,
Re: [PATCH] fix SCSI non-blocksize reads
Quoted 6 lines · Erik Andersen
Several SCSI drivers blindly do reads of size 1024 when trying to read
the partition table. This fails on Magneto Optical drives and similar
odd devices with 2048 byte native sector sizes. This patch fixes that so I can have partitions on my MO drive again (it lives on an Adaptec card at present and has 2048 byte sectors),
Please use the "block_size()" function instead of doing it by hand..
Linus
Re: [PATCH] fix SCSI non-blocksize reads
In reply to Erik AndersenQuoted 10 lines · Linus Torvalds
Quoted 6 lines · Erik Andersen
Several SCSI drivers blindly do reads of size 1024 when trying to read
the partition table. This fails on Magneto Optical drives and similar
odd devices with 2048 byte native sector sizes. This patch fixes that so I can have partitions on my MO drive again (it lives on an Adaptec card at present and has 2048 byte sectors),Please use the "
block_size()" function instead of doing it by hand..
Ok. I just did it the same way most of the other SCSI drivers do this...
Would you like a patch that also fixes all the other SCSI drivers to use block_size() then, so they will be consistent?
-Erik
--
Erik B. Andersen http://codepoet-consulting.com/
--This message was written using 73% post-consumer electrons--
Re: [PATCH] fix SCSI non-blocksize reads
Quoted 3 lines · Erik Andersen
Would you like a patch that also fixes all the other SCSI drivers to use
block_size()then, so they will be consistent?
Eventually yes, although right now I'd like to have the minimal fix.
Linus
PATCH 1/1 fix SCSI non-blocksize reads
In reply to Erik AndersenQuoted 8 lines · Linus Torvalds
Quoted 3 lines · Erik Andersen
Would you like a patch that also fixes all the other SCSI drivers to use
block_size()then, so they will be consistent?Eventually yes, although right now I'd like to have the minimal fix.
Thanks for getting the aic7xx fix into 2.4.125-greased-turkey. Here is the rest of the SCSI non-blocksize read clean up patch to fix up the other SCSI drivers so they also do the right thing. I think this one easily passes the "obviously correct" test. Please apply (to 2.4.x and to 2.5.x),
-Erik
--
Erik B. Andersen http://codepoet-consulting.com/
--This message was written using 73% post-consumer electrons--
drivers/scsi/BusLogic.c renamed from drivers/scsi.virgin/BusLogic.c +1 -1
@@ -4131,7 +4131,7 @@/* Attempt to read the first 1024 bytes from the disk device. */ - BufferHead =bread (MKDEV (MAJOR (Device),MINOR (Device) & ~0x0F ),0 ,1024 ); + BufferHead =bread (MKDEV (MAJOR (Device),MINOR (Device) & ~0x0F ),0 ,block_size (Device));if (BufferHead ==NULL )return 0 ;/* If the boot sector partition table flag is valid, search for a partition
drivers/scsi/megaraid.c renamed from drivers/scsi.virgin/megaraid.c +1 -9
@@ -4296,15 +4296,7 @@int heads, cyls, sectors;int capacity = disk->capacity; -int ma =MAJOR (dev); -int mi = (MINOR (dev) & ~0xf ); - -int block =1024 ; - -if (blksize_size[ma]) - block = blksize_size[ma][mi]; - -if (!(bh =bread (MKDEV (ma,mi),0 , block))) +if (!(bh =bread (MKDEV (MAJOR (dev),MINOR (dev)&~0xf ),0 ,block_size (dev))))return -1 ;if ( *(unsigned short *)(bh->b_data +510 ) ==0xAA55 ) {
drivers/scsi/scsicam.c renamed from drivers/scsi.virgin/scsicam.c +1 -9
@@ -47,15 +47,7 @@int size = disk->capacity;unsigned long temp_cyl; -int ma =MAJOR (dev); -int mi = (MINOR (dev) & ~0xf ); - -int block =1024 ; - -if (blksize_size[ma]) - block = blksize_size[ma][mi]; - -if (!(bh =bread (MKDEV (ma,mi),0 , block))) +if (!(bh =bread (MKDEV (MAJOR (dev),MINOR (dev)&~0xf ),0 ,block_size (dev))))return -1 ;/* try to infer mapping from partition table */
drivers/scsi/tmscsim.c renamed from drivers/scsi.virgin/tmscsim.c +1 -1
@@ -1450,7 +1450,7 @@int ret_code =-1 ;int size = disk->capacity; -if ((bh =bread (MKDEV (MAJOR (devno),MINOR (devno)&~0xf ),0 ,1024 ))) +if ((bh =bread (MKDEV (MAJOR (devno),MINOR (devno)&~0xf ),0 ,block_size (devno)))) {/* try to infer mapping from partition table */ ret_code = partsize (bh, (unsigned long) size, (unsigned int *) geom + 2,