/* ST-RAM device */
/* ------------------------------------------------------------------------ */
-static int stram_blocksizes[14] = {
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4096 };
static int stram_sizes[14] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
static int refcnt = 0;
}
blk_init_queue(BLK_DEFAULT_QUEUE(STRAM_MAJOR), do_stram_request);
- blksize_size[STRAM_MAJOR] = stram_blocksizes;
stram_sizes[STRAM_MINOR] = (swap_end - swap_start)/1024;
blk_size[STRAM_MAJOR] = stram_sizes;
register_disk(NULL, MKDEV(STRAM_MAJOR, STRAM_MINOR), 1, &stram_fops,
#define MAX_DISK_SIZE 720
static int floppy_sizes[256];
-static int floppy_blocksizes[256];
/* current info on each unit */
static struct archy_floppy_struct {
floppy_sizes[i] = MAX_DISK_SIZE;
blk_size[MAJOR_NR] = floppy_sizes;
- blksize_size[MAJOR_NR] = floppy_blocksizes;
blk_init_queue(BLK_DEFAULT_QUEUE(MAJOR_NR), do_fd_request);
config_types();
static struct hd_struct mfm[MFM_MAXDRIVES << 6];
static int mfm_sizes[MFM_MAXDRIVES << 6];
-static int mfm_blocksizes[MFM_MAXDRIVES << 6];
static DECLARE_WAIT_QUEUE_HEAD(mfm_wait_open);
/* Stuff from the assembly routines */
{
int i;
- for (i = 0; i < (MFM_MAXDRIVES << 6); i++) {
- /* Can't increase this - if you do all hell breaks loose */
- mfm_blocksizes[i] = 1024;
- }
- blksize_size[MAJOR_NR] = mfm_blocksizes;
-
mfm_drives = mfm_initdrives();
printk("mfm: detected %d hard drive%s\n", mfm_drives,
Controller->MaxBlocksPerCommand;
Controller->GenericDiskInfo.part = Controller->DiskPartitions;
Controller->GenericDiskInfo.sizes = Controller->PartitionSizes;
- blksize_size[MajorNumber] = Controller->BlockSizes;
/*
Complete initialization of the Generic Disk Information structure.
*/
LogicalDeviceInfo->ConfigurableDeviceSize;
else GenericDiskInfo->part[MinorNumber].nr_sects = 0;
}
- for (i = 0; i < DAC960_MaxPartitions; i++)
- if (GenericDiskInfo->part[MinorNumber].nr_sects > 0)
- Controller->BlockSizes[MinorNumber + i] = BLOCK_SIZE;
- else Controller->BlockSizes[MinorNumber + i] = 0;
}
}
} FW;
DiskPartition_T DiskPartitions[DAC960_MinorCount];
int PartitionSizes[DAC960_MinorCount];
- int BlockSizes[DAC960_MinorCount];
unsigned char ProgressBuffer[DAC960_ProgressBufferSize];
unsigned char UserStatusBuffer[DAC960_UserMessageSize];
}
static int NDevices = 0;
static int acsi_sizes[MAX_DEV<<4] = { 0, };
-static int acsi_blocksizes[MAX_DEV<<4] = { 0, };
static struct hd_struct acsi_part[MAX_DEV<<4] = { {0,0}, };
static int access_count[MAX_DEV] = { 0, };
static char busy[MAX_DEV] = { 0, };
NDevices, n_slm );
#endif
- for( i = 0; i < (MAX_DEV << 4); i++ )
- acsi_blocksizes[i] = 1024;
- blksize_size[MAJOR_NR] = acsi_blocksizes;
for( i = 0; i < NDevices; ++i )
register_disk(&acsi_gendisk, mk_kdev(MAJOR_NR,i<<4),
(acsi_info[i].type==HARDDISK)?1<<4:1,
/* defaults for 3 1/2" HD-Disks */
static int floppy_sizes[256]={880,880,880,880,720,720,720,720,};
-static int floppy_blocksizes[256];
/* hardsector size assumed to be 512 */
static int amiga_read(int), dos_read(int);
post_write_timer.function = post_write;
blk_init_queue(BLK_DEFAULT_QUEUE(MAJOR_NR), do_fd_request, &amiflop_lock);
- blksize_size[MAJOR_NR] = floppy_blocksizes;
blk_size[MAJOR_NR] = floppy_sizes;
for (i = 0; i < 128; i++)
static struct atari_disk_type default_params[FD_MAX_UNITS];
static int floppy_sizes[256];
-static int floppy_blocksizes[256];
/* current info on each unit */
static struct atari_floppy_struct {
floppy_sizes[i] = MAX_DISK_SIZE;
blk_size[MAJOR_NR] = floppy_sizes;
- blksize_size[MAJOR_NR] = floppy_blocksizes;
blk_init_queue(BLK_DEFAULT_QUEUE(MAJOR_NR), do_fd_request, &ataflop_lock);
printk(KERN_INFO "Atari floppy driver: max. %cD, %strack buffering\n",
continue;
hba[ctlr]->hd[i << NWD_SHIFT].nr_sects =
hba[ctlr]->sizes[i << NWD_SHIFT] = drv->nr_blocks;
-
- /* for each partition */
- for(j=0; j<MAX_PART; j++)
- hba[ctlr]->blocksizes[(i<<NWD_SHIFT) + j] = 1024;
-
//hba[ctlr]->gendisk.nr_real++;
(BLK_DEFAULT_QUEUE(MAJOR_NR + ctlr))->hardsect_size = drv->block_size;
}
*/
memset(hba[ctlr]->hd, 0, sizeof(struct hd_struct) * 256);
memset(hba[ctlr]->sizes, 0, sizeof(int) * 256);
- memset(hba[ctlr]->blocksizes, 0, sizeof(int) * 256);
memset(hba[ctlr]->drv, 0, sizeof(drive_info_struct)
* CISS_MAX_LUN);
hba[ctlr]->gendisk.nr_real = 0;
invalidate_device(kdev, 1);
gdev->part[minor].start_sect = 0;
gdev->part[minor].nr_sects = 0;
-
- /* reset the blocksize so we can read the partition table */
- blksize_size[MAJOR_NR+ctlr][minor] = 1024;
}
++hba[ctlr]->num_luns;
blk_queue_max_sectors(q, 512);
- /* fill in the other Kernel structs */
- blksize_size[MAJOR_NR+i] = hba[i]->blocksizes;
-
/* Fill in the gendisk data */
hba[i]->gendisk.major = MAJOR_NR + i;
hba[i]->gendisk.major_name = "cciss";
// indexed by minor numbers
struct hd_struct hd[256];
int sizes[256];
- int blocksizes[256];
#ifdef CONFIG_CISS_SCSI_TAPE
void *scsi_ctlr; /* ptr to structure containing scsi related stuff */
#endif
static struct hd_struct * ida;
static int * ida_sizes;
-static int * ida_blocksizes;
static struct gendisk ida_gendisk[MAX_CTLR];
static struct proc_dir_entry *proc_array;
ida_sizes[(ctlr<<CTLR_SHIFT) + (i<<NWD_SHIFT)] =
drv->nr_blks;
- for(j=0; j<16; j++)
- ida_blocksizes[(ctlr<<CTLR_SHIFT) + (i<<NWD_SHIFT)+j] =
- 1024;
-
(BLK_DEFAULT_QUEUE(MAJOR_NR + ctlr))->hardsect_size = drv->blk_size;
ida_gendisk[ctlr].nr_real++;
}
remove_proc_entry("cpqarray", proc_root_driver);
kfree(ida);
kfree(ida_sizes);
- kfree(ida_blocksizes);
}
#endif /* MODULE */
return(num_cntlrs_reg);
}
- ida_blocksizes = kmalloc(sizeof(int)*nr_ctlr*NWD*16, GFP_KERNEL);
- if(ida_blocksizes==NULL)
- {
- kfree(ida);
- kfree(ida_sizes);
- printk( KERN_ERR "cpqarray: out of memory");
- return(num_cntlrs_reg);
- }
-
memset(ida, 0, sizeof(struct hd_struct)*nr_ctlr*NWD*16);
memset(ida_sizes, 0, sizeof(int)*nr_ctlr*NWD*16);
- memset(ida_blocksizes, 0, sizeof(int)*nr_ctlr*NWD*16);
memset(ida_gendisk, 0, sizeof(struct gendisk)*MAX_CTLR);
/*
{
kfree(ida);
kfree(ida_sizes);
- kfree(ida_blocksizes);
}
return(num_cntlrs_reg);
/* This is a driver limit and could be eliminated. */
blk_queue_max_phys_segments(q, SG_MAX);
- blksize_size[MAJOR_NR+i] = ida_blocksizes + (i*256);
-
ida_gendisk[i].major = MAJOR_NR + i;
ida_gendisk[i].major_name = "ida";
ida_gendisk[i].minor_shift = NWD_SHIFT;
*/
memset(ida+(ctlr*256), 0, sizeof(struct hd_struct)*NWD*16);
memset(ida_sizes+(ctlr*256), 0, sizeof(int)*NWD*16);
- memset(ida_blocksizes+(ctlr*256), 0, sizeof(int)*NWD*16);
memset(hba[ctlr]->drv, 0, sizeof(drv_info_t)*NWD);
ida_gendisk[ctlr].nr_real = 0;
static struct floppy_struct user_params[N_DRIVE];
static int floppy_sizes[256];
-static int floppy_blocksizes[256];
/*
* The driver is trying to determine the correct media format
if (cf)
UDRS->generation++;
if (NO_GEOM){
+#if 0
+ /*
+ * What the devil is going on here? We are not guaranteed to do
+ * any IO and ENXIO case is nothing but ENOMEM in disguise - it
+ * happens if and only if buffer cache is out of memory. WTF?
+ */
/* auto-sensing */
int size = floppy_blocksizes[minor(dev)];
if (!size)
wait_on_buffer(bh);
brelse(bh);
return 0;
+#endif
+ process_fd_request();
+ return 0;
}
if (cf)
poll_drive(0, FD_RAW_NEED_DISK);
floppy_sizes[i] = MAX_DISK_SIZE;
blk_size[MAJOR_NR] = floppy_sizes;
- blksize_size[MAJOR_NR] = floppy_blocksizes;
blk_init_queue(BLK_DEFAULT_QUEUE(MAJOR_NR), do_fd_request, &floppy_lock);
reschedule_timeout(MAXTIMEOUT, "floppy init", MAXTIMEOUT);
config_types();
*/
int * blk_size[MAX_BLKDEV];
-/*
- * blksize_size contains the size of all block-devices:
- *
- * blksize_size[MAJOR][MINOR]
- *
- * if (!blksize_size[MAJOR]) then 1024 bytes is assumed.
- */
-int * blksize_size[MAX_BLKDEV];
-
/*
* How many reqeusts do we allocate per queue,
* and how many do we "batch" on freeing them?
static int max_loop = 8;
static struct loop_device *loop_dev;
static int *loop_sizes;
-static int *loop_blksizes;
static devfs_handle_t devfs_handle; /* For the directory */
/*
if (!loop_sizes)
goto out_mem;
- loop_blksizes = kmalloc(max_loop * sizeof(int), GFP_KERNEL);
- if (!loop_blksizes)
- goto out_mem;
-
blk_queue_make_request(BLK_DEFAULT_QUEUE(MAJOR_NR), loop_make_request);
blk_queue_bounce_limit(BLK_DEFAULT_QUEUE(MAJOR_NR), BLK_BOUNCE_HIGH);
}
memset(loop_sizes, 0, max_loop * sizeof(int));
- memset(loop_blksizes, 0, max_loop * sizeof(int));
blk_size[MAJOR_NR] = loop_sizes;
- blksize_size[MAJOR_NR] = loop_blksizes;
for (i = 0; i < max_loop; i++)
register_disk(NULL, mk_kdev(MAJOR_NR, i), 1, &lo_fops, 0);
kfree(loop_dev);
kfree(loop_sizes);
- kfree(loop_blksizes);
}
module_init(loop_init);
#ifdef MODULE
printk("nbd: registered device at major %d\n", MAJOR_NR);
#endif
- blksize_size[MAJOR_NR] = nbd_blksizes;
blk_size[MAJOR_NR] = nbd_sizes;
blk_init_queue(BLK_DEFAULT_QUEUE(MAJOR_NR), do_nbd_request, &nbd_lock);
for (i = 0; i < MAX_NBD; i++) {
static void do_pcd_request(request_queue_t * q);
static void do_pcd_read(void);
-static int pcd_blocksizes[PCD_UNITS];
-
struct pcd_unit {
struct pi_adapter pia; /* interface to paride layer */
struct pi_adapter *pi;
blk_init_queue(BLK_DEFAULT_QUEUE(MAJOR_NR), do_pcd_request, &pcd_lock);
- for (i=0;i<PCD_UNITS;i++) pcd_blocksizes[i] = 1024;
- blksize_size[MAJOR_NR] = pcd_blocksizes;
-
return 0;
}
static struct hd_struct pd_hd[PD_DEVS];
static int pd_sizes[PD_DEVS];
-static int pd_blocksizes[PD_DEVS];
#define PD_NAMELEN 8
pd_gendisk.major_name = name;
add_gendisk(&pd_gendisk);
- for(i=0;i<PD_DEVS;i++) pd_blocksizes[i] = 1024;
- blksize_size[MAJOR_NR] = pd_blocksizes;
-
printk("%s: %s version %s, major %d, cluster %d, nice %d\n",
name,name,PD_VERSION,major,cluster,nice);
pd_init_units();
static void pf_eject(int unit);
static int pf_check_media(kdev_t dev);
-static int pf_blocksizes[PF_UNITS];
-
#define PF_NM 0
#define PF_RO 1
#define PF_RW 2
blk_queue_max_phys_segments(q, cluster);
blk_queue_max_hw_segments(q, cluster);
- for (i=0;i<PF_UNITS;i++) pf_blocksizes[i] = 1024;
- blksize_size[MAJOR_NR] = pf_blocksizes;
for (i=0;i<PF_UNITS;i++)
register_disk(NULL, mk_kdev(MAJOR_NR, i), 1, &pf_fops, 0);
static int access_count[MAX_HD];
static char ps2esdi_valid[MAX_HD];
static int ps2esdi_sizes[MAX_HD << 6];
-static int ps2esdi_blocksizes[MAX_HD << 6];
static int ps2esdi_drives;
static struct hd_struct ps2esdi[MAX_HD << 6];
static u_short io_base;
ps2esdi_gendisk.nr_real = ps2esdi_drives;
- for (i = 0; i < (MAX_HD << 6); i++)
- ps2esdi_blocksizes[i] = 1024;
-
request_dma(dma_arb_level, "ed");
request_region(io_base, 4, "ed");
- blksize_size[MAJOR_NR] = ps2esdi_blocksizes;
blk_queue_max_sectors(BLK_DEFAULT_QUEUE(MAJOR_NR), 128);
for (i = 0; i < ps2esdi_drives; i++) {
*/
static unsigned long rd_length[NUM_RAMDISKS]; /* Size of RAM disks in bytes */
-static int rd_hardsec[NUM_RAMDISKS]; /* Size of real blocks in bytes */
-static int rd_blocksizes[NUM_RAMDISKS]; /* Size of 1024 byte blocks :) */
static int rd_kbsize[NUM_RAMDISKS]; /* Size in blocks of 1024 bytes */
static devfs_handle_t devfs_handle;
static struct block_device *rd_bdev[NUM_RAMDISKS];/* Protected device data */
for (i = 0; i < NUM_RAMDISKS; i++) {
/* rd_size is given in kB */
rd_length[i] = rd_size << 10;
- rd_hardsec[i] = rd_blocksize;
- rd_blocksizes[i] = rd_blocksize;
rd_kbsize[i] = rd_size;
}
devfs_handle = devfs_mk_dir (NULL, "rd", NULL);
INITRD_MINOR, S_IFBLK | S_IRUSR, &rd_bd_op, NULL);
#endif
- blksize_size[MAJOR_NR] = rd_blocksizes; /* Avoid set_blocksize() check */
blk_size[MAJOR_NR] = rd_kbsize; /* Size of the RAM disk in kB */
/* rd_size is given in kB */
#include <linux/blk.h>
#include <linux/devfs_fs_kernel.h>
-static int floppy_blocksizes[2] = {512,512};
static int floppy_sizes[2] = {2880,2880};
#define MAX_FLOPPIES 2
}
blk_init_queue(BLK_DEFAULT_QUEUE(MAJOR_NR), do_fd_request,
&swim3_lock);
- blksize_size[MAJOR_NR] = floppy_blocksizes;
blk_size[MAJOR_NR] = floppy_sizes;
}
static struct floppy_state floppy_states[MAX_FLOPPIES];
-static int floppy_blocksizes[2] = {512,512};
static int floppy_sizes[2] = {2880,2880};
static spinlock_t swim_iop_lock = SPIN_LOCK_UNLOCKED;
}
blk_init_queue(BLK_DEFAULT_QUEUE(MAJOR_NR), do_fd_request,
&swim_iop_lock);
- blksize_size[MAJOR_NR] = floppy_blocksizes;
blk_size[MAJOR_NR] = floppy_sizes;
printk("SWIM-IOP: %s by Joshua M. Thompson (funaho@jurai.org)\n",
static struct hd_struct xd_struct[XD_MAXDRIVES << 6];
static int xd_sizes[XD_MAXDRIVES << 6], xd_access[XD_MAXDRIVES];
-static int xd_blocksizes[XD_MAXDRIVES << 6];
static spinlock_t xd_lock = SPIN_LOCK_UNLOCKED;
u_char i,controller;
unsigned int address;
- for(i=0;i<(XD_MAXDRIVES << 6);i++) xd_blocksizes[i] = 1024;
- blksize_size[MAJOR_NR] = xd_blocksizes;
-
if (xd_detect(&controller,&address)) {
printk("Detected a%s controller (type %d) at address %06x\n",
static u_long *z2ram_map = NULL;
static u_long z2ram_size = 0;
-static int z2_blocksizes[Z2MINOR_COUNT];
static int z2_sizes[Z2MINOR_COUNT];
static int z2_count = 0;
static int chip_count = 0;
int i;
for (i = 0; i < Z2MINOR_COUNT; i++) {
- z2_blocksizes[ i ] = 1024;
z2_sizes[ i ] = 0;
}
}
blk_init_queue(BLK_DEFAULT_QUEUE(MAJOR_NR), DEVICE_REQUES, &z2ram_lock);
- blksize_size[ MAJOR_NR ] = z2_blocksizes;
blk_size[ MAJOR_NR ] = z2_sizes;
return 0;
#include <asm/io.h>
#include <asm/uaccess.h>
-static int aztcd_blocksizes[1] = { 2048 };
-
/*###########################################################################
Defines
return -EIO;
}
blk_init_queue(BLK_DEFAULT_QUEUE(MAJOR_NR), do_aztcd_request, &aztSpin);
- blksize_size[MAJOR_NR] = aztcd_blocksizes;
+ blk_queue_hardsect_size(BLK_DEFAULT_QUEUE(MAJOR_NR), 2048);
register_disk(NULL, mk_kdev(MAJOR_NR, 0), 1, &azt_fops, 0);
if ((azt_port == 0x1f0) || (azt_port == 0x170))
#endif
-static int cdu31a_block_size;
-
/*
* Initialize the driver.
*/
blk_init_queue(BLK_DEFAULT_QUEUE(MAJOR_NR),
do_cdu31a_request,
&cdu31a_lock);
- cdu31a_block_size = 1024; /* 1kB default block size */
- /* use 'mount -o block=2048' */
- blksize_size[MAJOR_NR] = &cdu31a_block_size;
init_timer(&cdu31a_abort_timer);
cdu31a_abort_timer.function = handle_abort_timeout;
uch track, fsm[3], q0;
};
-static int cm206_blocksizes[1] = { 2048 };
-
struct cm206_struct {
volatile ush intr_ds; /* data status read on last interrupt */
volatile ush intr_ls; /* uart line status read on last interrupt */
devfs_plain_cdrom(&cm206_info, &cm206_bdops);
blk_init_queue(BLK_DEFAULT_QUEUE(MAJOR_NR), do_cm206_request,
&cm206_lock);
- blksize_size[MAJOR_NR] = cm206_blocksizes;
+ blk_queue_hardsect_size(BLK_DEFAULT_QUEUE(MAJOR_NR), 2048);
init_bh(CM206_BH, cm206_bh);
memset(cd, 0, sizeof(*cd)); /* give'm some reasonable value */
#define gscd_port gscd /* for compatible parameter passing with "insmod" */
#include "gscd.h"
-static int gscd_blocksizes[1] = { 512 };
-
static int gscdPresent = 0;
static unsigned char gscd_buf[2048]; /* buffer for block size conversion */
S_IFBLK | S_IRUGO | S_IWUGO, &gscd_fops, NULL);
blk_init_queue(BLK_DEFAULT_QUEUE(MAJOR_NR), do_gscd_request, &gscd_lock);
- blksize_size[MAJOR_NR] = gscd_blocksizes;
disk_state = 0;
gscdPresent = 1;
#define mcd_port mcd /* for compatible parameter passing with "insmod" */
#include "mcd.h"
-static int mcd_blocksizes[1];
-
-
/* I added A flag to drop to 1x speed if too many errors 0 = 1X ; 1 = 2X */
static int mcdDouble;
return -EIO;
}
- blksize_size[MAJOR_NR] = mcd_blocksizes;
blk_init_queue(BLK_DEFAULT_QUEUE(MAJOR_NR), do_mcd_request,
&mcd_spinlock);
/* static variables ************************************************/
-static int mcdx_blocksizes[MCDX_NDRIVES];
static int mcdx_drive_map[][2] = MCDX_DRIVEMAP;
static struct s_drive_stuff *mcdx_stuffp[MCDX_NDRIVES];
static struct s_drive_stuff *mcdx_irq_map[16] = { 0, 0, 0, 0, 0, 0, 0, 0,
int size = sizeof(*stuffp);
char msg[80];
- mcdx_blocksizes[drive] = 0;
-
xtrace(INIT, "init() try drive %d\n", drive);
xtrace(INIT, "kmalloc space for stuffpt's\n");
blk_init_queue(BLK_DEFAULT_QUEUE(MAJOR_NR), do_mcdx_request,
&mcdx_lock);
- blksize_size[MAJOR_NR] = mcdx_blocksizes;
xtrace(INIT, "init() subscribe irq and i/o\n");
mcdx_irq_map[stuffp->irq] = stuffp;
#define DEBUG(x)
#endif
-static int blksize = 2048;
-
\f
/* Drive hardware/firmware characteristics
Identifiers in accordance with Optics Storage documentation */
}
devfs_register (NULL, "optcd", DEVFS_FL_DEFAULT, MAJOR_NR, 0,
S_IFBLK | S_IRUGO | S_IWUGO, &opt_fops, NULL);
- blksize_size[MAJOR_NR] = &blksize;
blk_init_queue(BLK_DEFAULT_QUEUE(MAJOR_NR), do_optcd_request,
&optcd_lock);
+ blk_queue_hardsect_size(BLK_DEFAULT_QUEUE(MAJOR_NR), 2048);
request_region(optcd_port, 4, "optcd");
register_disk(NULL, mk_kdev(MAJOR_NR,0), 1, &opt_fops, 0);
static int ndrives;
static u_char drv_pattern[NR_SBPCD]={speed_auto,speed_auto,speed_auto,speed_auto};
-static int sbpcd_blocksizes[NR_SBPCD];
/*==========================================================================*/
/*
{
printk(" sbpcd: Unable to register with Uniform CD-ROm driver\n");
}
- /*
- * set the block size
- */
- sbpcd_blocksizes[j]=CD_FRAMESIZE;
}
- blksize_size[MAJOR_NR]=sbpcd_blocksizes;
+ blk_queue_hardsect_size(BLK_DEFAULT_QUEUE(MAJOR_NR), CD_FRAMESIZE);
#ifndef MODULE
init_done:
check_media_change:sjcd_disk_change,
};
-static int blksize = 2048;
-
/*
* Following stuff is intended for initialization of the cdrom. It
* first looks for presence of device. If the device is present, it
printk("SJCD: sjcd=0x%x: ", sjcd_base);
#endif
- blksize_size[MAJOR_NR] = &blksize;
-
if (devfs_register_blkdev(MAJOR_NR, "sjcd", &sjcd_fops) != 0) {
printk("SJCD: Unable to get major %d for Sanyo CD-ROM\n",
MAJOR_NR);
}
blk_init_queue(BLK_DEFAULT_QUEUE(MAJOR_NR), do_sjcd_request, &sjcd_lock);
+ blk_queue_hardsect_size(BLK_DEFAULT_QUEUE(MAJOR_NR), 2048);
register_disk(NULL, mk_kdev(MAJOR_NR, 0), 1, &sjcd_fops, 0);
if (check_region(sjcd_base, 4)) {
check_media_change: cdu535_check_media_change,
};
-static int sonycd535_block_size = CDU535_BLOCK_SIZE;
-
/*
* Initialize the driver.
*/
blk_init_queue(BLK_DEFAULT_QUEUE(MAJOR_NR),
do_cdu535_request,
&sonycd535_lock);
- blksize_size[MAJOR_NR] = &sonycd535_block_size;
-
+ blk_queue_hardsect_size(BLK_DEFAULT_QUEUE(MAJOR_NR), CDU535_BLOCK_SIZE);
sony_toc = (struct s535_sony_toc *)
kmalloc(sizeof *sony_toc, GFP_KERNEL);
if (sony_toc == NULL) {
#include "ataraid.h"
-static int ataraid_blksize_size[256];
-
static struct raid_device_operations* ataraid_ops[16];
static int ataraid_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg);
{
int i;
for(i=0;i<256;i++)
- {
- ataraid_blksize_size[i] = 1024;
ataraid_readahead[i] = 1023;
- }
- if (blksize_size[ATAMAJOR]==NULL)
- blksize_size[ATAMAJOR] = ataraid_blksize_size;
-
/* setup the gendisk structure */
ataraid_gendisk.part = kmalloc(256 * sizeof(struct hd_struct),GFP_KERNEL);
if (ataraid_gendisk.part==NULL) {
{
unregister_blkdev(ATAMAJOR, "ataraid");
blk_size[ATAMAJOR] = NULL;
- blksize_size[ATAMAJOR] = NULL;
del_gendisk(&ataraid_gendisk);
static struct hd_struct hd[MAX_HD<<6];
static int hd_sizes[MAX_HD<<6];
-static int hd_blocksizes[MAX_HD<<6];
-
static struct timer_list device_timer;
{
int drive;
- for(drive=0; drive < (MAX_HD << 6); drive++)
- hd_blocksizes[drive] = 1024;
-
- blksize_size[MAJOR_NR] = hd_blocksizes;
blk_queue_hardsect_size(QUEUE, 512);
#ifdef __i386__
goto err_kmalloc_gd_part;
memset(gd->part, 0, minors * sizeof(struct hd_struct));
- blksize_size[hwif->major] = kmalloc (minors*sizeof(int), GFP_KERNEL);
- if (!blksize_size[hwif->major])
- goto err_kmalloc_bs;
- for (i = 0; i < minors; ++i)
- blksize_size[hwif->major][i] = BLOCK_SIZE;
-
for (unit = 0; unit < MAX_DRIVES; ++unit)
hwif->drives[unit].part = &gd->part[unit << PARTN_BITS];
* Remove us from the kernel's knowledge.
*/
unregister_blkdev(ch->major, ch->name);
- kfree(blksize_size[ch->major]);
blk_dev[ch->major].data = NULL;
blk_dev[ch->major].queue = NULL;
blk_clear(ch->major);
* subsystems want to have a pre-defined structure
*/
struct hd_struct md_hd_struct[MAX_MD_DEVS];
-static int md_blocksizes[MAX_MD_DEVS];
static int md_maxreadahead[MAX_MD_DEVS];
static mdk_thread_t *md_recovery_thread;
if (rdev->faulty)
continue;
invalidate_device(rdev->dev, 1);
+#if 0
+ /*
+ * Aside of obvious breakage (code below results in block size set
+ * according to the sector size of last component instead of the
+ * maximal sector size), we have more interesting problem here.
+ * Namely, we actually ought to set _sector_ size for the array
+ * and that requires per-array request queues. Disabled for now.
+ */
md_blocksizes[mdidx(mddev)] = 1024;
if (bdev_hardsect_size(rdev->bdev) > md_blocksizes[mdidx(mddev)])
md_blocksizes[mdidx(mddev)] = bdev_hardsect_size(rdev->bdev);
+#endif
}
mddev->pers = pers[pnum];
int i;
for(i = 0; i < MAX_MD_DEVS; i++) {
- md_blocksizes[i] = 1024;
md_size[i] = 0;
md_maxreadahead[i] = 32;
}
- blksize_size[MAJOR_NR] = md_blocksizes;
blk_size[MAJOR_NR] = md_size;
dprintk("md: sizeof(mdp_super_t) = %d\n", (int)sizeof(mdp_super_t));
* Some of these can be made smaller later
*/
-static int i2ob_blksizes[MAX_I2OB<<4];
static int i2ob_sizes[MAX_I2OB<<4];
static int i2ob_media_change_flag[MAX_I2OB];
* Now fill in the boiler plate
*/
- blksize_size[MAJOR_NR] = i2ob_blksizes;
blk_size[MAJOR_NR] = i2ob_sizes;
blk_dev[MAJOR_NR].queue = i2ob_get_queue;
i2ob_dev[i].head = NULL;
i2ob_dev[i].tail = NULL;
i2ob_dev[i].depth = MAX_I2OB_DEPTH;
- i2ob_blksizes[i] = 1024;
}
/*
static struct hd_struct ftl_hd[MINOR_NR(MAX_DEV, 0, 0)];
static int ftl_sizes[MINOR_NR(MAX_DEV, 0, 0)];
-static int ftl_blocksizes[MINOR_NR(MAX_DEV, 0, 0)];
static struct gendisk ftl_gendisk = {
major: FTL_MAJOR,
return -EAGAIN;
}
- for (i = 0; i < MINOR_NR(MAX_DEV, 0, 0); i++)
- ftl_blocksizes[i] = 1024;
for (i = 0; i < MAX_DEV*MAX_PART; i++) {
ftl_hd[i].nr_sects = 0;
ftl_hd[i].start_sect = 0;
}
- blksize_size[FTL_MAJOR] = ftl_blocksizes;
ftl_gendisk.major = FTL_MAJOR;
blk_init_queue(BLK_DEFAULT_QUEUE(FTL_MAJOR), &do_ftl_request);
add_gendisk(&ftl_gendisk);
static spinlock_t mtdblks_lock;
static int mtd_sizes[MAX_MTD_DEVICES];
-static int mtd_blksizes[MAX_MTD_DEVICES];
-
/*
* Cache stuff...
mtdblks[dev] = mtdblk;
mtd_sizes[dev] = mtdblk->mtd->size/1024;
- if (mtdblk->mtd->erasesize)
- mtd_blksizes[dev] = mtdblk->mtd->erasesize;
- if (mtd_blksizes[dev] > PAGE_SIZE)
- mtd_blksizes[dev] = PAGE_SIZE;
set_device_ro (inode->i_rdev, !(mtdblk->mtd->flags & MTD_WRITEABLE));
spin_unlock(&mtdblks_lock);
#endif
/* We fill it in at open() time. */
- for (i=0; i< MAX_MTD_DEVICES; i++) {
+ for (i=0; i< MAX_MTD_DEVICES; i++)
mtd_sizes[i] = 0;
- mtd_blksizes[i] = BLOCK_SIZE;
- }
init_waitqueue_head(&thr_wq);
- /* Allow the block size to default to BLOCK_SIZE. */
- blksize_size[MAJOR_NR] = mtd_blksizes;
blk_size[MAJOR_NR] = mtd_sizes;
blk_init_queue(BLK_DEFAULT_QUEUE(MAJOR_NR), &mtdblock_request, &mtddev_lock);
unregister_blkdev(MAJOR_NR,DEVICE_NAME);
#endif
blk_cleanup_queue(BLK_DEFAULT_QUEUE(MAJOR_NR));
- blksize_size[MAJOR_NR] = NULL;
blk_size[MAJOR_NR] = NULL;
}
}
/* Allow the block size to default to BLOCK_SIZE. */
- blksize_size[MAJOR_NR] = NULL;
blk_size[MAJOR_NR] = mtd_sizes;
blk_init_queue(BLK_DEFAULT_QUEUE(MAJOR_NR), &mtdblock_request);
static void __exit cleanup_mtdblock(void)
{
unregister_blkdev(MAJOR_NR,DEVICE_NAME);
- blksize_size[MAJOR_NR] = NULL;
blk_cleanup_queue(BLK_DEFAULT_QUEUE(MAJOR_NR));
}
*/
static int nftl_sizes[256];
-static int nftl_blocksizes[256];
/* .. for the Linux partition table handling. */
struct hd_struct part_table[256];
NFTLs[firstfree] = nftl;
/* Finally, set up the block device sizes */
nftl_sizes[firstfree * 16] = nftl->nr_sects;
- //nftl_blocksizes[firstfree*16] = 512;
part_table[firstfree * 16].nr_sects = nftl->nr_sects;
nftl_gendisk.nr_real++;
return -EBUSY;
} else {
blk_init_queue(BLK_DEFAULT_QUEUE(MAJOR_NR), &nftl_request);
-
- /* set block size to 1kB each */
- for (i = 0; i < 256; i++) {
- nftl_blocksizes[i] = 1024;
- }
- blksize_size[MAJOR_NR] = nftl_blocksizes;
-
add_gendisk(&nftl_gendisk);
}
goto out_blk_size;
memset (blk_size[major], 0, (1 << MINORBITS) * sizeof (int));
- /* init blksize_size */
- blksize_size[major] =
- (int *) kmalloc ((1 << MINORBITS) * sizeof (int), GFP_ATOMIC);
- if (!blksize_size[major])
- goto out_blksize_size;
- memset (blksize_size[major], 0, (1 << MINORBITS) * sizeof (int));
-
/* finally do the gendisk stuff */
major_info->gendisk.part = kmalloc ((1 << MINORBITS) *
sizeof (struct hd_struct),
/* error handling - free the prior allocated memory */
out_gendisk:
- kfree (blksize_size[major]);
- blksize_size[major] = NULL;
-
- out_blksize_size:
kfree (blk_size[major]);
blk_size[major] = NULL;
kfree (major_info->gendisk.part);
kfree (blk_size[major]);
- kfree (blksize_size[major]);
blk_clear(major);
sizes.s2b_shift) >> 1;
else
device->major_info->gendisk.sizes[minor + i] = 0;
- blksize_size[major][minor + i] = device->sizes.bp_block;
blk_queue_max_sectors(device->request_queue,
device->discipline->max_blocks << device->sizes.s2b_shift);
device->major_info->gendisk.part[minor+i].start_sect = 0;
for (i = 0; i < (1 << DASD_PARTN_BITS); i++) {
destroy_buffers(MKDEV(major,minor+i));
device->major_info->gendisk.sizes[minor + i] = 0;
- blksize_size[major][minor + i] = 0;
}
if (device->request_queue) {
blk_cleanup_queue (device->request_queue);
/* The following items are obtained through kmalloc() in init_module() */
Xpram_Dev *xpram_devices = NULL;
-int *xpram_blksizes = NULL;
int *xpram_offsets = NULL; /* partition offsets */
#define MIN(x,y) ((x) < (y) ? (x) : (y))
PRINT_DEBUG(" device(%d) offset = %d kB, size = %d kB\n",i, xpram_offsets[i], xpram_sizes[i]);
#endif
- xpram_blksizes = kmalloc(xpram_devs * sizeof(int), GFP_KERNEL);
- if (!xpram_blksizes) {
- PRINT_ERR("Not enough memory for xpram_blksizes\n");
- PRINT_ERR("Giving up xpram\n");
- goto fail_malloc_blksizes;
- }
- for (i=0; i < xpram_devs; i++) /* all the same blocksize */
- xpram_blksizes[i] = xpram_blksize;
- blksize_size[major]=xpram_blksizes;
-
/*
* allocate the devices -- we can't have them static, as the number
* can be specified at load time
}
kfree(xpram_devices);
#endif /* V24 */
- fail_malloc_blksizes:
kfree (xpram_offsets);
- kfree (xpram_blksizes);
- blksize_size[major] = NULL;
fail_malloc_devices:
fail_malloc:
#if (XPRAM_VERSION == 22)
#if (XPRAM_VERSION == 22)
blk_dev[major].request_fn = NULL;
#endif /* V22 */
- kfree(blksize_size[major]);
kfree(xpram_offsets);
blk_clear(major);
void
tapeblock_setup(tape_info_t* ti) {
blk_size[tapeblock_major][ti->blk_minor]=0; // this will be detected
- blksize_size[tapeblock_major][ti->blk_minor]=2048; // blocks are 2k by default.
blk_init_queue (&ti->request_queue, tape_request_fn);
+ blk_queue_hardsect_size(&ti->request_queue, 2048);
#ifdef CONFIG_DEVFS_FS
tapeblock_mkdevfstree(ti);
#endif
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));
- blksize_size[tapeblock_major] = (int*) kmalloc (256*sizeof(int),GFP_ATOMIC);
- memset(blksize_size[tapeblock_major],0,256*sizeof(int));
max_sectors[tapeblock_major] = (int*) kmalloc (256*sizeof(int),GFP_ATOMIC);
memset(max_sectors[tapeblock_major],0,256*sizeof(int));
blkfront = kmalloc(sizeof(tape_frontend_t),GFP_KERNEL);
s390irq_spin_unlock_irqrestore (ti->devinfo.irq, lockflags);
losize=(hisize+losize)/2+1;
}
- blk_size[tapeblock_major][ti->blk_minor]=(losize)*(blksize_size[tapeblock_major][ti->blk_minor]/1024);
+ blk_size[tapeblock_major][ti->blk_minor]=losize*2;
return 0;
}
/*
*/
-static int jsfd_blksizes[JSF_MAX];
static int jsfd_sizes[JSF_MAX];
static u64 jsfd_bytesizes[JSF_MAX];
return -EIO;
}
- blksize_size[JSFD_MAJOR] = jsfd_blksizes;
blk_size[JSFD_MAJOR] = jsfd_sizes;
blk_init_queue(BLK_DEFAULT_QUEUE(MAJOR_NR), DEVICE_REQUEST);
jdp->refcnt = 0;
- jsfd_blksizes[i] = 1024;
jsfd_bytesizes[i] = jdp->dsize;
jsfd_sizes[i] = jsfd_bytesizes[i] >> 10;
register_disk(NULL, MKDEV(JSFD_MAJOR, i), 1, &jsfd_fops,
static Scsi_Disk *rscsi_disks;
static int *sd_sizes;
-static int *sd_blocksizes;
static int *sd_max_sectors;
static int check_scsidisk_media_change(kdev_t);
*/
rscsi_disks[i].capacity = 0;
}
- if (sector_size > 1024) {
- int m;
-
- /*
- * We must fix the sd_blocksizes and sd_hardsizes
- * to allow us to read the partition tables.
- * The disk reading code does not allow for reading
- * of partial sectors.
- */
- for (m = i << 4; m < ((i + 1) << 4); m++) {
- sd_blocksizes[m] = sector_size;
- }
- } {
+ {
/*
* The msdos fs needs to know the hardware sector size
* So I have created this table. See ll_rw_blk.c
init_mem_lth(rscsi_disks, sd_template.dev_max);
init_mem_lth(sd_sizes, maxparts);
- init_mem_lth(sd_blocksizes, maxparts);
init_mem_lth(sd, maxparts);
init_mem_lth(sd_gendisks, N_USED_SD_MAJORS);
init_mem_lth(sd_max_sectors, sd_template.dev_max << 4);
- if (!rscsi_disks || !sd_sizes || !sd_blocksizes || !sd || !sd_gendisks)
+ if (!rscsi_disks || !sd_sizes || !sd || !sd_gendisks)
goto cleanup_mem;
zero_mem_lth(rscsi_disks, sd_template.dev_max);
zero_mem_lth(sd, maxparts);
for (i = 0; i < maxparts; i++) {
- sd_blocksizes[i] = 1024;
/*
* Allow lowlevel device drivers to generate 512k large scsi
* commands if they know what they're doing and they ask for it
for (i = 0; i < N_USED_SD_MAJORS; i++) {
request_queue_t *q = blk_get_queue(mk_kdev(SD_MAJOR(i), 0));
- int parts_per_major = (SCSI_DISKS_PER_MAJOR << 4);
-
- blksize_size[SD_MAJOR(i)] =
- sd_blocksizes + i * parts_per_major;
blk_queue_hardsect_size(q, 512);
}
cleanup_mem:
kfree(sd_gendisks);
kfree(sd);
- kfree(sd_blocksizes);
kfree(sd_sizes);
kfree(rscsi_disks);
for (i = 0; i < N_USED_SD_MAJORS; i++) {
if (rscsi_disks != NULL) {
kfree(rscsi_disks);
kfree(sd_sizes);
- kfree(sd_blocksizes);
kfree((char *) sd);
}
for (i = 0; i < N_USED_SD_MAJORS; i++) {
Scsi_CD *scsi_CDs;
static int *sr_sizes;
-static int *sr_blocksizes;
-
static int sr_open(struct cdrom_device_info *, int);
void get_sectorsize(int);
void get_capabilities(int);
if (!sr_sizes)
goto cleanup_cds;
memset(sr_sizes, 0, sr_template.dev_max * sizeof(int));
-
- sr_blocksizes = kmalloc(sr_template.dev_max * sizeof(int), GFP_ATOMIC);
- if (!sr_blocksizes)
- goto cleanup_sizes;
-
- /*
- * These are good guesses for the time being.
- */
- for (i = 0; i < sr_template.dev_max; i++)
- sr_blocksizes[i] = 2048;
-
- blksize_size[MAJOR_NR] = sr_blocksizes;
return 0;
cleanup_sizes:
kfree(sr_sizes);
kfree(sr_sizes);
sr_sizes = NULL;
-
- kfree(sr_blocksizes);
- sr_blocksizes = NULL;
}
blk_clear(MAJOR_NR);
if (size < get_hardsect_size(dev))
return -EINVAL;
- /* No blocksize array? Implies hardcoded BLOCK_SIZE */
- if (!blksize_size[major(dev)]) {
- if (size == BLOCK_SIZE)
- return 0;
- return -EINVAL;
- }
-
- oldsize = blksize_size[major(dev)][minor(dev)];
+ oldsize = bdev->bd_block_size;
if (oldsize == size)
return 0;
- if (!oldsize && size == BLOCK_SIZE) {
- blksize_size[major(dev)][minor(dev)] = size;
- return 0;
- }
-
/* Ok, we're actually changing the blocksize.. */
sync_blockdev(bdev);
- blksize_size[major(dev)][minor(dev)] = size;
+ bdev->bd_block_size = size;
bdev->bd_inode->i_blkbits = blksize_bits(size);
kill_bdev(bdev);
return 0;
if (ret)
goto out2;
}
- bdev->bd_openers++;
bdev->bd_inode->i_size = blkdev_size(dev);
- bdev->bd_inode->i_blkbits = blksize_bits(block_size(bdev));
+ if (!bdev->bd_openers) {
+ unsigned bsize = bdev_hardsect_size(bdev);
+ while (bsize < PAGE_CACHE_SIZE) {
+ if (bdev->bd_inode->i_size & bsize)
+ break;
+ bsize <<= 1;
+ }
+ bdev->bd_block_size = bsize;
+ bdev->bd_inode->i_blkbits = blksize_bits(bsize);
+ }
+ bdev->bd_openers++;
unlock_kernel();
up(&bdev->bd_sem);
return 0;
bdev = bdget(kdev_t_to_nr(dev));
bdev->bd_contains = bdev;
bdev->bd_inode->i_size = (loff_t)hd->part[minor(dev)].nr_sects << 9;
- bdev->bd_inode->i_blkbits = blksize_bits(block_size(bdev));
+ if (!bdev->bd_openers) {
+ unsigned bsize = bdev_hardsect_size(bdev);
+ while (bsize < PAGE_CACHE_SIZE) {
+ if (bdev->bd_inode->i_size & bsize)
+ break;
+ bsize <<= 1;
+ }
+ bdev->bd_block_size = bsize;
+ bdev->bd_inode->i_blkbits = blksize_bits(bsize);
+ }
for (i = 0; check_part[i]; i++) {
int res;
res = check_part[i](hd, bdev, first_sector, first_part_minor);
g->part[minor].start_sect = 0;
g->part[minor].nr_sects = 0;
}
-
- /* some places do blksize_size[major][minor] = 1024,
- as preparation for reading partition table - superfluous */
- /* sd.c used to set blksize_size to 2048 in case
- rscsi_disks[target].device->sector_size == 2048 */
-
return 0;
}
extern void generic_unplug_device(void *);
extern int * blk_size[MAX_BLKDEV]; /* in units of 1024 bytes */
-extern int * blksize_size[MAX_BLKDEV];
#define MAX_PHYS_SEGMENTS 128
#define MAX_HW_SEGMENTS 128
#if 0
blk_size_in_bytes[major] = NULL;
#endif
- blksize_size[major] = NULL;
}
extern inline int queue_hardsect_size(request_queue_t *q)
extern inline unsigned int block_size(struct block_device *bdev)
{
- int retval = BLOCK_SIZE;
- kdev_t dev = to_kdev_t(bdev->bd_dev);
- int major = major(dev);
-
- if (blksize_size[major]) {
- int minor = minor(dev);
- if (blksize_size[major][minor])
- retval = blksize_size[major][minor];
- }
- return retval;
+ return bdev->bd_block_size;
}
static inline loff_t blkdev_size_in_bytes(kdev_t dev)
void * bd_holder;
int bd_holders;
struct block_device * bd_contains;
+ unsigned bd_block_size;
};
struct inode {
EXPORT_SYMBOL(tty_std_termios);
/* block device driver support */
-EXPORT_SYMBOL(blksize_size);
EXPORT_SYMBOL(blk_size);
EXPORT_SYMBOL(blk_dev);
EXPORT_SYMBOL(is_read_only);