diff -ur /md0/kernels/2.4/v2.4.5-ac9/drivers/block/floppy.c lb-2.4.5-ac9/drivers/block/floppy.c --- /md0/kernels/2.4/v2.4.5-ac9/drivers/block/floppy.c Mon Feb 26 10:20:05 2001 +++ lb-2.4.5-ac9/drivers/block/floppy.c Sat Jun 30 02:38:01 2001 @@ -468,7 +468,7 @@ */ static struct floppy_struct user_params[N_DRIVE]; -static int floppy_sizes[256]; +static blkoff_t floppy_sizes[256]; static int floppy_blocksizes[256]; /* diff -ur /md0/kernels/2.4/v2.4.5-ac9/drivers/block/ll_rw_blk.c lb-2.4.5-ac9/drivers/block/ll_rw_blk.c --- /md0/kernels/2.4/v2.4.5-ac9/drivers/block/ll_rw_blk.c Wed Jun 13 16:54:30 2001 +++ lb-2.4.5-ac9/drivers/block/ll_rw_blk.c Sat Jun 30 03:00:15 2001 @@ -82,7 +82,7 @@ * * if (!blk_size[MAJOR]) then no minor size checking is done. */ -int * blk_size[MAX_BLKDEV]; +blkoff_t *blk_size[MAX_BLKDEV]; /* * blksize_size contains the size of all block-devices: @@ -673,7 +673,8 @@ static int __make_request(request_queue_t * q, int rw, struct buffer_head * bh) { - unsigned int sector, count; + blkoff_t sector; + unsigned count; int max_segments = MAX_SEGMENTS; struct request * req, *freereq = NULL; int rw_ahead, max_sectors, el_ret; @@ -871,8 +872,8 @@ BUG(); if (blk_size[major]) { - unsigned long maxsector = (blk_size[major][MINOR(bh->b_rdev)] << 1) + 1; - unsigned long sector = bh->b_rsector; + blkoff_t maxsector = (blk_size[major][MINOR(bh->b_rdev)] << 1) + 1; + blkoff_t sector = bh->b_rsector; unsigned int count = bh->b_size >> 9; if (maxsector < count || maxsector - count < sector) { @@ -884,7 +885,7 @@ when mounting a device. */ printk(KERN_INFO "attempt to access beyond end of device\n"); - printk(KERN_INFO "%s: rw=%d, want=%ld, limit=%d\n", + printk(KERN_INFO "%s: rw=%d, want=%" BLKOFF_FMT ", limit=%" BLKOFF_FMT "\n", kdevname(bh->b_rdev), rw, (sector + count)>>1, blk_size[major][MINOR(bh->b_rdev)]); @@ -906,8 +907,8 @@ q = blk_get_queue(bh->b_rdev); if (!q) { printk(KERN_ERR - "generic_make_request: Trying to access nonexistent block-device %s (%ld)\n", - kdevname(bh->b_rdev), bh->b_rsector); + "generic_make_request: Trying to access nonexistent block-device %s\n", + kdevname(bh->b_rdev)); buffer_IO_error(bh); break; } diff -ur /md0/kernels/2.4/v2.4.5-ac9/drivers/block/loop.c lb-2.4.5-ac9/drivers/block/loop.c --- /md0/kernels/2.4/v2.4.5-ac9/drivers/block/loop.c Thu May 3 11:22:10 2001 +++ lb-2.4.5-ac9/drivers/block/loop.c Sat Jun 30 02:35:42 2001 @@ -76,7 +76,7 @@ static int max_loop = 8; static struct loop_device *loop_dev; -static int *loop_sizes; +static blkoff_t *loop_sizes; static int *loop_blksizes; static devfs_handle_t devfs_handle; /* For the directory */ @@ -983,7 +983,7 @@ if (!loop_dev) return -ENOMEM; - loop_sizes = kmalloc(max_loop * sizeof(int), GFP_KERNEL); + loop_sizes = kmalloc(max_loop * sizeof(blkoff_t), GFP_KERNEL); if (!loop_sizes) goto out_sizes; @@ -1003,7 +1003,7 @@ spin_lock_init(&lo->lo_lock); } - memset(loop_sizes, 0, max_loop * sizeof(int)); + memset(loop_sizes, 0, max_loop * sizeof(blkoff_t)); memset(loop_blksizes, 0, max_loop * sizeof(int)); blk_size[MAJOR_NR] = loop_sizes; blksize_size[MAJOR_NR] = loop_blksizes; diff -ur /md0/kernels/2.4/v2.4.5-ac9/drivers/block/nbd.c lb-2.4.5-ac9/drivers/block/nbd.c --- /md0/kernels/2.4/v2.4.5-ac9/drivers/block/nbd.c Fri May 25 22:48:09 2001 +++ lb-2.4.5-ac9/drivers/block/nbd.c Sat Jun 30 02:55:29 2001 @@ -56,7 +56,7 @@ static int nbd_blksizes[MAX_NBD]; static int nbd_blksize_bits[MAX_NBD]; -static int nbd_sizes[MAX_NBD]; +static blkoff_t nbd_sizes[MAX_NBD]; static u64 nbd_bytesizes[MAX_NBD]; static struct nbd_device nbd_dev[MAX_NBD]; diff -ur /md0/kernels/2.4/v2.4.5-ac9/drivers/md/lvm.c lb-2.4.5-ac9/drivers/md/lvm.c --- /md0/kernels/2.4/v2.4.5-ac9/drivers/md/lvm.c Wed Jun 13 16:54:31 2001 +++ lb-2.4.5-ac9/drivers/md/lvm.c Sat Jun 30 01:00:26 2001 @@ -1033,7 +1033,7 @@ static int lvm_user_bmap(struct inode *inode, struct lv_bmap *user_result) { struct buffer_head bh; - unsigned long block; + blkoff_t block; int err; if (get_user(block, &user_result->lv_block)) @@ -1070,7 +1070,7 @@ ulong index; ulong pe_start; ulong size = bh->b_size >> 9; - ulong rsector_org = bh->b_blocknr * size; + blkoff_t rsector_org = bh->b_blocknr * size; ulong rsector_map; kdev_t rdev_map; vg_t *vg_this = vg[VG_BLK(minor)]; diff -ur /md0/kernels/2.4/v2.4.5-ac9/drivers/md/md.c lb-2.4.5-ac9/drivers/md/md.c --- /md0/kernels/2.4/v2.4.5-ac9/drivers/md/md.c Wed Jun 13 16:54:31 2001 +++ lb-2.4.5-ac9/drivers/md/md.c Sat Jun 30 03:00:34 2001 @@ -112,7 +112,7 @@ static int md_maxreadahead[MAX_MD_DEVS]; static mdk_thread_t *md_recovery_thread; -int md_size[MAX_MD_DEVS]; +blkoff_t md_size[MAX_MD_DEVS]; extern struct block_device_operations md_fops; static devfs_handle_t devfs_handle; @@ -3055,7 +3055,8 @@ static int md_status_read_proc(char *page, char **start, off_t off, int count, int *eof, void *data) { - int sz = 0, j, size; + blkoff_t size; + int sz = 0, j; struct md_list_head *tmp, *tmp2; mdk_rdev_t *rdev; mddev_t *mddev; @@ -3096,10 +3097,10 @@ if (mddev->nb_dev) { if (mddev->pers) - sz += sprintf(page + sz, "\n %d blocks", + sz += sprintf(page + sz, "\n %" BLKOFF_FMT " blocks", md_size[mdidx(mddev)]); else - sz += sprintf(page + sz, "\n %d blocks", size); + sz += sprintf(page + sz, "\n %" BLKOFF_FMT " blocks", size); } if (!mddev->pers) { @@ -3230,8 +3231,9 @@ int md_do_sync(mddev_t *mddev, mdp_disk_t *spare) { mddev_t *mddev2; - unsigned int max_sectors, currspeed, - j, window, err, serialize; + blkoff_t max_sectors, j; + unsigned int currspeed, + window, err, serialize; kdev_t read_disk = mddev_to_kdev(mddev); unsigned long mark[SYNC_MARKS]; unsigned long mark_cnt[SYNC_MARKS]; @@ -3292,7 +3294,7 @@ * Tune reconstruction: */ window = MAX_READAHEAD*(PAGE_SIZE/512); - printk(KERN_INFO "md: using %dk window, over a total of %d blocks.\n",window/2,max_sectors/2); + printk(KERN_INFO "md: using %dk window, over a total of %" BLKOFF_FMT " blocks.\n",window/2,max_sectors/2); atomic_set(&mddev->recovery_active, 0); init_waitqueue_head(&mddev->recovery_wait); @@ -3310,6 +3312,7 @@ j += sectors; mddev->curr_resync = j; + /* README: Uhhh, is this right? last_check is always 0 here */ if (last_check + window > j) continue; diff -ur /md0/kernels/2.4/v2.4.5-ac9/drivers/md/raid0.c lb-2.4.5-ac9/drivers/md/raid0.c --- /md0/kernels/2.4/v2.4.5-ac9/drivers/md/raid0.c Mon Dec 11 16:19:35 2000 +++ lb-2.4.5-ac9/drivers/md/raid0.c Sat Jun 30 03:01:00 2001 @@ -138,8 +138,8 @@ if (create_strip_zones (mddev)) goto out_free_conf; - printk("raid0 : md_size is %d blocks.\n", md_size[mdidx(mddev)]); - printk("raid0 : conf->smallest->size is %ld blocks.\n", conf->smallest->size); + printk("raid0 : md_size is %" BLKOFF_FMT " blocks.\n", md_size[mdidx(mddev)]); + printk("raid0 : conf->smallest->size is %" BLKOFF_FMT " blocks.\n", conf->smallest->size); nb_zone = md_size[mdidx(mddev)]/conf->smallest->size + (md_size[mdidx(mddev)] % conf->smallest->size ? 1 : 0); printk("raid0 : nb_zone is %ld.\n", nb_zone); diff -ur /md0/kernels/2.4/v2.4.5-ac9/drivers/md/raid1.c lb-2.4.5-ac9/drivers/md/raid1.c --- /md0/kernels/2.4/v2.4.5-ac9/drivers/md/raid1.c Fri May 25 22:48:09 2001 +++ lb-2.4.5-ac9/drivers/md/raid1.c Sat Jun 30 02:30:32 2001 @@ -336,7 +336,7 @@ } -static void inline io_request_done(unsigned long sector, raid1_conf_t *conf, int phase) +static void inline io_request_done(blkoff_t sector, raid1_conf_t *conf, int phase) { unsigned long flags; spin_lock_irqsave(&conf->segment_lock, flags); @@ -451,10 +451,10 @@ { int new_disk = conf->last_used; const int sectors = bh->b_size >> 9; - const unsigned long this_sector = bh->b_rsector; + const blkoff_t this_sector = bh->b_rsector; int disk = new_disk; - unsigned long new_distance; - unsigned long current_distance; + blkoff_t new_distance; + blkoff_t current_distance; /* * Check if it is sane at all to balance @@ -511,9 +511,9 @@ goto rb_out; } - - current_distance = abs(this_sector - - conf->mirrors[disk].head_position); + current_distance = (this_sector > conf->mirrors[disk].head_position) ? + this_sector - conf->mirrors[disk].head_position : + conf->mirrors[disk].head_position - this_sector; /* Find the disk which is closest */ @@ -526,8 +526,9 @@ (!conf->mirrors[disk].operational)) continue; - new_distance = abs(this_sector - - conf->mirrors[disk].head_position); + new_distance = (this_sector > conf->mirrors[disk].head_position) ? + this_sector - conf->mirrors[disk].head_position : + conf->mirrors[disk].head_position - this_sector; if (new_distance < current_distance) { conf->sect_count = 0; @@ -1305,7 +1306,7 @@ * issue suitable write requests */ -static int raid1_sync_request (mddev_t *mddev, unsigned long sector_nr) +static int raid1_sync_request (mddev_t *mddev, blkoff_t sector_nr) { raid1_conf_t *conf = mddev_to_conf(mddev); struct mirror_info *mirror; diff -ur /md0/kernels/2.4/v2.4.5-ac9/drivers/md/raid5.c lb-2.4.5-ac9/drivers/md/raid5.c --- /md0/kernels/2.4/v2.4.5-ac9/drivers/md/raid5.c Fri May 25 22:48:09 2001 +++ lb-2.4.5-ac9/drivers/md/raid5.c Sat Jun 30 01:24:39 2001 @@ -453,7 +453,7 @@ { raid5_conf_t *conf = sh->raid_conf; struct buffer_head *bh = sh->bh_cache[i]; - unsigned long block = sh->sector / (sh->size >> 9); + blkoff_t block = sh->sector / (sh->size >> 9); init_buffer(bh, raid5_end_read_request, sh); bh->b_dev = conf->disks[i].dev; @@ -528,7 +528,7 @@ * Input: a 'big' sector number, * Output: index of the data and parity disk, and the sector # in them. */ -static unsigned long raid5_compute_sector(unsigned long r_sector, unsigned int raid_disks, +static unsigned long raid5_compute_sector(blkoff_t r_sector, unsigned int raid_disks, unsigned int data_disks, unsigned int * dd_idx, unsigned int * pd_idx, raid5_conf_t *conf) { @@ -596,12 +596,12 @@ { raid5_conf_t *conf = sh->raid_conf; int raid_disks = conf->raid_disks, data_disks = raid_disks - 1; - unsigned long new_sector = sh->sector, check; + blkoff_t new_sector = sh->sector, check; int sectors_per_chunk = conf->chunk_size >> 9; - unsigned long stripe = new_sector / sectors_per_chunk; + blkoff_t stripe = new_sector / sectors_per_chunk; int chunk_offset = new_sector % sectors_per_chunk; int chunk_number, dummy1, dummy2, dd_idx = i; - unsigned long r_sector, blocknr; + blkoff_t r_sector, blocknr; switch (conf->algorithm) { case ALGORITHM_LEFT_ASYMMETRIC: @@ -1153,18 +1153,18 @@ return correct_size; } -static int raid5_sync_request (mddev_t *mddev, unsigned long sector_nr) +static int raid5_sync_request (mddev_t *mddev, blkoff_t sector_nr) { raid5_conf_t *conf = (raid5_conf_t *) mddev->private; struct stripe_head *sh; int sectors_per_chunk = conf->chunk_size >> 9; - unsigned long stripe = sector_nr/sectors_per_chunk; + blkoff_t stripe = sector_nr/sectors_per_chunk; int chunk_offset = sector_nr % sectors_per_chunk; int dd_idx, pd_idx; - unsigned long first_sector; + blkoff_t first_sector; int raid_disks = conf->raid_disks; int data_disks = raid_disks-1; - int redone = 0; + blkoff_t redone = 0; int bufsize; sh = get_active_stripe(conf, sector_nr, 0, 0); diff -ur /md0/kernels/2.4/v2.4.5-ac9/drivers/scsi/sd.c lb-2.4.5-ac9/drivers/scsi/sd.c --- /md0/kernels/2.4/v2.4.5-ac9/drivers/scsi/sd.c Wed Jun 13 16:54:34 2001 +++ lb-2.4.5-ac9/drivers/scsi/sd.c Sat Jun 30 02:50:55 2001 @@ -87,7 +87,7 @@ struct hd_struct *sd; static Scsi_Disk *rscsi_disks; -static int *sd_sizes; +static blkoff_t *sd_sizes; static int *sd_blocksizes; static int *sd_hardsizes; /* Hardware sector size */ @@ -1083,10 +1083,11 @@ memset(rscsi_disks, 0, sd_template.dev_max * sizeof(Scsi_Disk)); /* for every (necessary) major: */ - sd_sizes = kmalloc((sd_template.dev_max << 4) * sizeof(int), GFP_ATOMIC); + /* FIXME: GFP_ATOMIC??? Someone please pass the pipe... */ + sd_sizes = kmalloc((sd_template.dev_max << 4) * sizeof(blkoff_t), GFP_ATOMIC); if (!sd_sizes) goto cleanup_disks; - memset(sd_sizes, 0, (sd_template.dev_max << 4) * sizeof(int)); + memset(sd_sizes, 0, (sd_template.dev_max << 4) * sizeof(blkoff_t)); sd_blocksizes = kmalloc((sd_template.dev_max << 4) * sizeof(int), GFP_ATOMIC); if (!sd_blocksizes) diff -ur /md0/kernels/2.4/v2.4.5-ac9/fs/affs/super.c lb-2.4.5-ac9/fs/affs/super.c --- /md0/kernels/2.4/v2.4.5-ac9/fs/affs/super.c Thu May 3 11:22:16 2001 +++ lb-2.4.5-ac9/fs/affs/super.c Sat Jun 30 02:09:55 2001 @@ -29,7 +29,6 @@ #include #include -extern int *blk_size[]; extern struct timezone sys_tz; static int affs_statfs(struct super_block *sb, struct statfs *buf); diff -ur /md0/kernels/2.4/v2.4.5-ac9/fs/block_dev.c lb-2.4.5-ac9/fs/block_dev.c --- /md0/kernels/2.4/v2.4.5-ac9/fs/block_dev.c Wed Jun 13 16:54:35 2001 +++ lb-2.4.5-ac9/fs/block_dev.c Sat Jun 30 02:07:06 2001 @@ -14,12 +14,10 @@ #include #include #include +#include #include -extern int *blk_size[]; -extern int *blksize_size[]; - #define NBUF 64 ssize_t block_write(struct file * filp, const char * buf, @@ -27,15 +25,15 @@ { struct inode * inode = filp->f_dentry->d_inode; ssize_t blocksize, blocksize_bits, i, buffercount, write_error; - ssize_t block, blocks; + ssize_t blocks; loff_t offset; ssize_t chars; ssize_t written, retval; struct buffer_head * bhlist[NBUF]; - size_t size; kdev_t dev = inode->i_rdev; struct buffer_head * bh, *bufferlist[NBUF]; register char * p; + blkoff_t block, size; if (is_read_only(dev)) return -EPERM; @@ -56,7 +54,7 @@ offset = *ppos & (blocksize-1); if (blk_size[MAJOR(dev)]) - size = ((loff_t) blk_size[MAJOR(dev)][MINOR(dev)] << BLOCK_SIZE_BITS) >> blocksize_bits; + size = ((unsigned long long) blk_size[MAJOR(dev)][MINOR(dev)] << BLOCK_SIZE_BITS) >> blocksize_bits; else size = INT_MAX; while (count>0) { @@ -176,7 +174,6 @@ ssize_t block_read(struct file * filp, char * buf, size_t count, loff_t *ppos) { struct inode * inode = filp->f_dentry->d_inode; - size_t block; loff_t offset; ssize_t blocksize; ssize_t blocksize_bits, i; @@ -189,6 +186,7 @@ loff_t size; kdev_t dev; ssize_t read; + blkoff_t block; dev = inode->i_rdev; blocksize = BLOCK_SIZE; diff -ur /md0/kernels/2.4/v2.4.5-ac9/fs/buffer.c lb-2.4.5-ac9/fs/buffer.c --- /md0/kernels/2.4/v2.4.5-ac9/fs/buffer.c Wed Jun 13 16:54:35 2001 +++ lb-2.4.5-ac9/fs/buffer.c Sat Jun 30 03:01:21 2001 @@ -546,7 +546,7 @@ * will force it bad). This shouldn't really happen currently, but * the code is ready. */ -static inline struct buffer_head * __get_hash_table(kdev_t dev, int block, int size) +static inline struct buffer_head * __get_hash_table(kdev_t dev, blkoff_t block, int size) { struct buffer_head *bh = hash(dev, block); @@ -561,7 +561,7 @@ return bh; } -struct buffer_head * get_hash_table(kdev_t dev, int block, int size) +struct buffer_head * get_hash_table(kdev_t dev, blkoff_t block, int size) { struct buffer_head *bh; @@ -680,7 +680,6 @@ void set_blocksize(kdev_t dev, int size) { - extern int *blksize_size[]; int i, nlist, slept; struct buffer_head * bh, * bh_next; @@ -724,7 +723,7 @@ if (!atomic_read(&bh->b_count)) { if (buffer_dirty(bh)) printk(KERN_WARNING - "set_blocksize: dev %s buffer_dirty %lu size %hu\n", + "set_blocksize: dev %s buffer_dirty %" BLKOFF_FMT " size %hu\n", kdevname(dev), bh->b_blocknr, bh->b_size); remove_inode_queue(bh); __remove_from_queues(bh); @@ -735,7 +734,7 @@ clear_bit(BH_Uptodate, &bh->b_state); printk(KERN_WARNING "set_blocksize: " - "b_count %d, dev %s, block %lu, from %p\n", + "b_count %d, dev %s, block %" BLKOFF_FMT ", from %p\n", atomic_read(&bh->b_count), bdevname(bh->b_dev), bh->b_blocknr, __builtin_return_address(0)); } @@ -980,7 +979,7 @@ * 14.02.92: changed it to sync dirty buffers a bit: better performance * when the filesystem starts to get full of dirty blocks (I hope). */ -struct buffer_head * getblk(kdev_t dev, int block, int size) +struct buffer_head * getblk(kdev_t dev, blkoff_t block, int size) { struct buffer_head * bh; int isize; @@ -1165,7 +1164,7 @@ * bread() reads a specified block and returns the buffer that contains * it. It returns NULL if the block was unreadable. */ -struct buffer_head * bread(kdev_t dev, int block, int size) +struct buffer_head * bread(kdev_t dev, blkoff_t block, int size) { struct buffer_head * bh; @@ -1704,7 +1703,7 @@ int block_read_full_page(struct page *page, get_block_t *get_block) { struct inode *inode = page->mapping->host; - unsigned long iblock, lblock; + blkoff_t iblock, lblock; struct buffer_head *bh, *head, *arr[MAX_BUF_PER_PAGE]; unsigned int blocksize, blocks; int nr, i; @@ -1717,7 +1716,7 @@ head = page->buffers; blocks = PAGE_CACHE_SIZE >> inode->i_sb->s_blocksize_bits; - iblock = page->index << (PAGE_CACHE_SHIFT - inode->i_sb->s_blocksize_bits); + iblock = (blkoff_t)page->index << (PAGE_CACHE_SHIFT - inode->i_sb->s_blocksize_bits); lblock = (inode->i_size+blocksize-1) >> inode->i_sb->s_blocksize_bits; bh = head; nr = 0; @@ -1994,7 +1993,7 @@ goto done; } -int generic_block_bmap(struct address_space *mapping, long block, get_block_t *get_block) +blkoff_t generic_block_bmap(struct address_space *mapping, blkoff_t block, get_block_t *get_block) { struct buffer_head tmp; struct inode *inode = mapping->host; @@ -2078,7 +2077,7 @@ int pageind; int bhind; int offset; - unsigned long blocknr; + blkoff_t blocknr; struct kiobuf * iobuf = NULL; struct page * map; struct buffer_head *tmp, **bhs = NULL; @@ -2194,7 +2193,7 @@ * FIXME: we need a swapper_inode->get_block function to remove * some of the bmap kludges and interface ugliness here. */ -int brw_page(int rw, struct page *page, kdev_t dev, int b[], int size) +int brw_page(int rw, struct page *page, kdev_t dev, blkoff_t b[], int size) { struct buffer_head *head, *bh; diff -ur /md0/kernels/2.4/v2.4.5-ac9/fs/efs/file.c lb-2.4.5-ac9/fs/efs/file.c --- /md0/kernels/2.4/v2.4.5-ac9/fs/efs/file.c Sat Feb 26 23:33:05 2000 +++ lb-2.4.5-ac9/fs/efs/file.c Sat Jun 30 01:40:42 2001 @@ -8,7 +8,7 @@ #include -int efs_get_block(struct inode *inode, long iblock, +int efs_get_block(struct inode *inode, blkoff_t iblock, struct buffer_head *bh_result, int create) { int error = -EROFS; diff -ur /md0/kernels/2.4/v2.4.5-ac9/fs/ext2/inode.c lb-2.4.5-ac9/fs/ext2/inode.c --- /md0/kernels/2.4/v2.4.5-ac9/fs/ext2/inode.c Wed Jun 13 16:54:35 2001 +++ lb-2.4.5-ac9/fs/ext2/inode.c Sat Jun 30 01:45:23 2001 @@ -503,7 +503,7 @@ * reachable from inode. */ -static int ext2_get_block(struct inode *inode, long iblock, struct buffer_head *bh_result, int create) +static int ext2_get_block(struct inode *inode, blkoff_t iblock, struct buffer_head *bh_result, int create) { int err = -EIO; int offsets[4]; diff -ur /md0/kernels/2.4/v2.4.5-ac9/fs/fat/file.c lb-2.4.5-ac9/fs/fat/file.c --- /md0/kernels/2.4/v2.4.5-ac9/fs/fat/file.c Wed Jun 13 16:54:35 2001 +++ lb-2.4.5-ac9/fs/fat/file.c Sat Jun 30 01:43:40 2001 @@ -52,7 +52,7 @@ } -int fat_get_block(struct inode *inode, long iblock, struct buffer_head *bh_result, int create) +int fat_get_block(struct inode *inode, blkoff_t iblock, struct buffer_head *bh_result, int create) { struct super_block *sb = inode->i_sb; unsigned long phys; diff -ur /md0/kernels/2.4/v2.4.5-ac9/fs/freevxfs/vxfs_subr.c lb-2.4.5-ac9/fs/freevxfs/vxfs_subr.c --- /md0/kernels/2.4/v2.4.5-ac9/fs/freevxfs/vxfs_subr.c Fri May 25 22:48:09 2001 +++ lb-2.4.5-ac9/fs/freevxfs/vxfs_subr.c Sat Jun 30 01:46:58 2001 @@ -134,7 +134,7 @@ * Zero on success, else a negativ error code (-EIO). */ static int -vxfs_getblk(struct inode *ip, long iblock, +vxfs_getblk(struct inode *ip, blkoff_t iblock, struct buffer_head *bp, int create) { daddr_t pblock; diff -ur /md0/kernels/2.4/v2.4.5-ac9/fs/hfs/file.c lb-2.4.5-ac9/fs/hfs/file.c --- /md0/kernels/2.4/v2.4.5-ac9/fs/hfs/file.c Mon Feb 26 10:20:13 2001 +++ lb-2.4.5-ac9/fs/hfs/file.c Sat Jun 30 01:47:27 2001 @@ -106,7 +106,7 @@ * block number. This function just calls hfs_extent_map() to do the * real work and then stuffs the appropriate info into the buffer_head. */ -int hfs_get_block(struct inode *inode, long iblock, struct buffer_head *bh_result, int create) +int hfs_get_block(struct inode *inode, blkoff_t iblock, struct buffer_head *bh_result, int create) { unsigned long phys; diff -ur /md0/kernels/2.4/v2.4.5-ac9/fs/hpfs/file.c lb-2.4.5-ac9/fs/hpfs/file.c --- /md0/kernels/2.4/v2.4.5-ac9/fs/hpfs/file.c Wed Jun 13 16:54:35 2001 +++ lb-2.4.5-ac9/fs/hpfs/file.c Sat Jun 30 01:48:00 2001 @@ -68,7 +68,7 @@ hpfs_write_inode(i); } -int hpfs_get_block(struct inode *inode, long iblock, struct buffer_head *bh_result, int create) +int hpfs_get_block(struct inode *inode, blkoff_t iblock, struct buffer_head *bh_result, int create) { secno s; s = hpfs_bmap(inode, iblock); diff -ur /md0/kernels/2.4/v2.4.5-ac9/fs/isofs/inode.c lb-2.4.5-ac9/fs/isofs/inode.c --- /md0/kernels/2.4/v2.4.5-ac9/fs/isofs/inode.c Wed Jun 13 16:54:35 2001 +++ lb-2.4.5-ac9/fs/isofs/inode.c Sat Jun 30 03:01:27 2001 @@ -877,7 +877,7 @@ /* Life is simpler than for other filesystem since we never * have to create a new block, only find an existing one. */ -static int isofs_get_block(struct inode *inode, long iblock, +static int isofs_get_block(struct inode *inode, blkoff_t iblock, struct buffer_head *bh_result, int create) { unsigned long b_off; @@ -958,12 +958,12 @@ abort_too_many_sections: printk("isofs_get_block: More than 100 file sections ?!?, aborting...\n"); - printk("isofs_get_block: ino=%lu block=%ld firstext=%u sect_size=%u nextino=%lu\n", + printk("isofs_get_block: ino=%lu block=%" BLKOFF_FMT " firstext=%u sect_size=%u nextino=%lu\n", inode->i_ino, iblock, firstext, (unsigned) sect_size, nextino); goto abort; } -static int isofs_bmap(struct inode *inode, int block) +static blkoff_t isofs_bmap(struct inode *inode, blkoff_t block) { struct buffer_head dummy; int error; diff -ur /md0/kernels/2.4/v2.4.5-ac9/fs/minix/inode.c lb-2.4.5-ac9/fs/minix/inode.c --- /md0/kernels/2.4/v2.4.5-ac9/fs/minix/inode.c Thu May 3 11:22:16 2001 +++ lb-2.4.5-ac9/fs/minix/inode.c Sat Jun 30 01:50:58 2001 @@ -362,7 +362,7 @@ /* * the global minix fs getblk function. */ -struct buffer_head *minix_getblk(struct inode *inode, int block, int create) +struct buffer_head *minix_getblk(struct inode *inode, blkoff_t block, int create) { struct buffer_head dummy; int error; diff -ur /md0/kernels/2.4/v2.4.5-ac9/fs/minix/itree_common.c lb-2.4.5-ac9/fs/minix/itree_common.c --- /md0/kernels/2.4/v2.4.5-ac9/fs/minix/itree_common.c Thu May 3 11:22:16 2001 +++ lb-2.4.5-ac9/fs/minix/itree_common.c Sat Jun 30 01:52:21 2001 @@ -140,7 +140,7 @@ return -EAGAIN; } -static inline int get_block(struct inode * inode, long block, +static inline int get_block(struct inode * inode, blkoff_t block, struct buffer_head *bh_result, int create) { int err = -EIO; diff -ur /md0/kernels/2.4/v2.4.5-ac9/fs/partitions/check.c lb-2.4.5-ac9/fs/partitions/check.c --- /md0/kernels/2.4/v2.4.5-ac9/fs/partitions/check.c Fri May 25 22:48:09 2001 +++ lb-2.4.5-ac9/fs/partitions/check.c Sat Jun 30 02:59:39 2001 @@ -33,8 +33,6 @@ #include "ibm.h" #include "ultrix.h" -extern int *blk_size[]; - struct gendisk *gendisk_head; int warn_no_part = 1; /*This is ugly: should make genhd removable media aware*/ @@ -250,7 +248,7 @@ char buf[64]; len += sprintf(page + len, - "%4d %4d %10d %s\n", + "%4d %4d %10" BLKOFF_FMT " %s\n", dsk->major, n, dsk->sizes[n], disk_name(dsk, n, buf)); if (len < offset) diff -ur /md0/kernels/2.4/v2.4.5-ac9/fs/qnx4/inode.c lb-2.4.5-ac9/fs/qnx4/inode.c --- /md0/kernels/2.4/v2.4.5-ac9/fs/qnx4/inode.c Thu May 3 11:22:17 2001 +++ lb-2.4.5-ac9/fs/qnx4/inode.c Sat Jun 30 01:53:05 2001 @@ -204,7 +204,7 @@ return NULL; } -int qnx4_get_block( struct inode *inode, long iblock, struct buffer_head *bh, int create ) +int qnx4_get_block( struct inode *inode, blkoff_t iblock, struct buffer_head *bh, int create ) { unsigned long phys; diff -ur /md0/kernels/2.4/v2.4.5-ac9/fs/sysv/inode.c lb-2.4.5-ac9/fs/sysv/inode.c --- /md0/kernels/2.4/v2.4.5-ac9/fs/sysv/inode.c Wed Jun 13 16:54:36 2001 +++ lb-2.4.5-ac9/fs/sysv/inode.c Sat Jun 30 01:55:02 2001 @@ -787,7 +787,7 @@ return result; } -static int sysv_get_block(struct inode *inode, long iblock, struct buffer_head *bh_result, int create) +static int sysv_get_block(struct inode *inode, blkoff_t iblock, struct buffer_head *bh_result, int create) { struct super_block *sb; int ret, err, new; diff -ur /md0/kernels/2.4/v2.4.5-ac9/fs/udf/inode.c lb-2.4.5-ac9/fs/udf/inode.c --- /md0/kernels/2.4/v2.4.5-ac9/fs/udf/inode.c Tue Jan 30 14:38:52 2001 +++ lb-2.4.5-ac9/fs/udf/inode.c Sat Jun 30 01:55:51 2001 @@ -56,7 +56,7 @@ static void udf_update_extents(struct inode *, long_ad [EXTENT_MERGE_SIZE], int, int, lb_addr, Uint32, struct buffer_head **); -static int udf_get_block(struct inode *, long, struct buffer_head *, int); +static int udf_get_block(struct inode *, blkoff_t, struct buffer_head *, int); /* * udf_put_inode @@ -300,7 +300,7 @@ return dbh; } -static int udf_get_block(struct inode *inode, long block, struct buffer_head *bh_result, int create) +static int udf_get_block(struct inode *inode, blkoff_t block, struct buffer_head *bh_result, int create) { int err, new; struct buffer_head *bh; diff -ur /md0/kernels/2.4/v2.4.5-ac9/include/linux/blkdev.h lb-2.4.5-ac9/include/linux/blkdev.h --- /md0/kernels/2.4/v2.4.5-ac9/include/linux/blkdev.h Wed Jun 13 16:56:34 2001 +++ lb-2.4.5-ac9/include/linux/blkdev.h Sat Jun 30 03:08:12 2001 @@ -1,6 +1,9 @@ #ifndef _LINUX_BLKDEV_H #define _LINUX_BLKDEV_H +#ifndef _LINUX_TYPES_H +#include +#endif #include #include #include @@ -33,9 +36,10 @@ kdev_t rq_dev; int cmd; /* READ or WRITE */ int errors; - unsigned long sector; + blkoff_t sector; + blkoff_t hard_sector; unsigned long nr_sectors; - unsigned long hard_sector, hard_nr_sectors; + unsigned long hard_nr_sectors; unsigned int nr_segments; unsigned int nr_hw_segments; unsigned long current_nr_sectors; @@ -163,7 +167,7 @@ extern void blk_queue_make_request(request_queue_t *, make_request_fn *); extern void generic_unplug_device(void *); -extern int * blk_size[MAX_BLKDEV]; +extern blkoff_t * blk_size[MAX_BLKDEV]; extern int * blksize_size[MAX_BLKDEV]; diff -ur /md0/kernels/2.4/v2.4.5-ac9/include/linux/fs.h lb-2.4.5-ac9/include/linux/fs.h --- /md0/kernels/2.4/v2.4.5-ac9/include/linux/fs.h Wed Jun 13 16:56:33 2001 +++ lb-2.4.5-ac9/include/linux/fs.h Sat Jun 30 03:08:03 2001 @@ -228,7 +228,7 @@ struct buffer_head { /* First cache line: */ struct buffer_head *b_next; /* Hash queue list */ - unsigned long b_blocknr; /* block number */ + blkoff_t b_blocknr; /* block number */ unsigned short b_size; /* block size */ unsigned short b_list; /* List that this buffer appears */ kdev_t b_dev; /* device (B_FREE = free) */ @@ -249,7 +249,7 @@ void (*b_end_io)(struct buffer_head *bh, int uptodate); /* I/O completion */ void *b_private; /* reserved for b_end_io */ - unsigned long b_rsector; /* Real buffer location on disk */ + blkoff_t b_rsector; /* Real buffer location on disk */ wait_queue_head_t b_wait; struct inode * b_inode; @@ -1289,8 +1289,8 @@ extern struct file * get_empty_filp(void); extern void file_move(struct file *f, struct list_head *list); extern void file_moveto(struct file *new, struct file *old); -extern struct buffer_head * get_hash_table(kdev_t, int, int); -extern struct buffer_head * getblk(kdev_t, int, int); +extern struct buffer_head * get_hash_table(kdev_t, blkoff_t, int); +extern struct buffer_head * getblk(kdev_t, blkoff_t, int); extern void ll_rw_block(int, int, struct buffer_head * bh[]); extern void submit_bh(int, struct buffer_head *); extern int is_read_only(kdev_t); @@ -1307,12 +1307,12 @@ __bforget(buf); } extern void set_blocksize(kdev_t, int); -extern struct buffer_head * bread(kdev_t, int, int); +extern struct buffer_head * bread(kdev_t, blkoff_t, int); extern void wakeup_bdflush(int wait); -extern int brw_page(int, struct page *, kdev_t, int [], int); +extern int brw_page(int, struct page *, kdev_t, blkoff_t [], int); -typedef int (get_block_t)(struct inode*,long,struct buffer_head*,int); +typedef int (get_block_t)(struct inode*,blkoff_t,struct buffer_head*,int); /* Generic buffer handling for block filesystems.. */ extern int block_flushpage(struct page *, unsigned long); @@ -1324,7 +1324,7 @@ unsigned long *); extern int block_sync_page(struct page *); -int generic_block_bmap(struct address_space *, long, get_block_t *); +blkoff_t generic_block_bmap(struct address_space *, blkoff_t, get_block_t *); int generic_commit_write(struct file *, struct page *, unsigned, unsigned); int block_truncate_page(struct address_space *, loff_t, get_block_t *); diff -ur /md0/kernels/2.4/v2.4.5-ac9/include/linux/genhd.h lb-2.4.5-ac9/include/linux/genhd.h --- /md0/kernels/2.4/v2.4.5-ac9/include/linux/genhd.h Sat Jun 30 02:27:32 2001 +++ lb-2.4.5-ac9/include/linux/genhd.h Sat Jun 30 03:08:12 2001 @@ -63,7 +63,7 @@ int max_p; /* maximum partitions per device */ struct hd_struct *part; /* [indexed by minor] */ - int *sizes; /* [idem], device size in blocks */ + blkoff_t *sizes; /* [idem], device size in blocks */ int nr_real; /* number of real devices */ void *real_devices; /* internal use */ diff -ur /md0/kernels/2.4/v2.4.5-ac9/include/linux/raid/linear.h lb-2.4.5-ac9/include/linux/raid/linear.h --- /md0/kernels/2.4/v2.4.5-ac9/include/linux/raid/linear.h Tue Jun 19 13:32:19 2001 +++ lb-2.4.5-ac9/include/linux/raid/linear.h Sat Jun 30 03:09:00 2001 @@ -5,8 +5,8 @@ struct dev_info { kdev_t dev; - unsigned long size; - unsigned long offset; + blkoff_t size; + blkoff_t offset; }; typedef struct dev_info dev_info_t; diff -ur /md0/kernels/2.4/v2.4.5-ac9/include/linux/raid/md.h lb-2.4.5-ac9/include/linux/raid/md.h --- /md0/kernels/2.4/v2.4.5-ac9/include/linux/raid/md.h Sat Jun 30 02:27:33 2001 +++ lb-2.4.5-ac9/include/linux/raid/md.h Sat Jun 30 03:08:12 2001 @@ -58,7 +58,7 @@ #define MD_MINOR_VERSION 90 #define MD_PATCHLEVEL_VERSION 0 -extern int md_size[MAX_MD_DEVS]; +extern blkoff_t md_size[MAX_MD_DEVS]; extern struct hd_struct md_hd_struct[MAX_MD_DEVS]; extern void add_mddev_mapping (mddev_t *mddev, kdev_t dev, void *data); diff -ur /md0/kernels/2.4/v2.4.5-ac9/include/linux/raid/md_k.h lb-2.4.5-ac9/include/linux/raid/md_k.h --- /md0/kernels/2.4/v2.4.5-ac9/include/linux/raid/md_k.h Wed Jun 13 16:54:38 2001 +++ lb-2.4.5-ac9/include/linux/raid/md_k.h Sat Jun 30 03:01:42 2001 @@ -16,6 +16,7 @@ #define _MD_K_H #include // for panic() +#include #define MD_RESERVED 0UL #define LINEAR 1UL @@ -163,14 +164,14 @@ kdev_t dev; /* Device number */ kdev_t old_dev; /* "" when it was last imported */ - unsigned long size; /* Device size (in blocks) */ + blkoff_t size; /* Device size (in blocks) */ mddev_t *mddev; /* RAID array if running */ unsigned long last_events; /* IO event timestamp */ struct block_device *bdev; /* block device handle */ mdp_super_t *sb; - unsigned long sb_offset; + blkoff_t sb_offset; int faulty; /* if faulty do not issue IO requests */ int desc_nr; /* descriptor index in the superblock */ @@ -238,7 +239,7 @@ int (*stop_resync)(mddev_t *mddev); int (*restart_resync)(mddev_t *mddev); - int (*sync_request)(mddev_t *mddev, unsigned long block_nr); + int (*sync_request)(mddev_t *mddev, blkoff_t block_nr); }; diff -ur /md0/kernels/2.4/v2.4.5-ac9/include/linux/raid/raid0.h lb-2.4.5-ac9/include/linux/raid/raid0.h --- /md0/kernels/2.4/v2.4.5-ac9/include/linux/raid/raid0.h Tue Jun 19 13:32:19 2001 +++ lb-2.4.5-ac9/include/linux/raid/raid0.h Sat Jun 30 03:09:01 2001 @@ -5,9 +5,9 @@ struct strip_zone { - unsigned long zone_offset; /* Zone offset in md_dev */ - unsigned long dev_offset; /* Zone offset in real dev */ - unsigned long size; /* Zone size */ + blkoff_t zone_offset; /* Zone offset in md_dev */ + blkoff_t dev_offset; /* Zone offset in real dev */ + blkoff_t size; /* Zone size */ int nb_dev; /* # of devices attached to the zone */ mdk_rdev_t *dev[MD_SB_DISKS]; /* Devices attached to the zone */ }; diff -ur /md0/kernels/2.4/v2.4.5-ac9/include/linux/raid/raid1.h lb-2.4.5-ac9/include/linux/raid/raid1.h --- /md0/kernels/2.4/v2.4.5-ac9/include/linux/raid/raid1.h Tue Jun 19 13:32:19 2001 +++ lb-2.4.5-ac9/include/linux/raid/raid1.h Sat Jun 30 03:09:02 2001 @@ -7,8 +7,8 @@ int number; int raid_disk; kdev_t dev; - int sect_limit; - int head_position; + blkoff_t sect_limit; + blkoff_t head_position; /* * State bits: @@ -27,7 +27,7 @@ int raid_disks; int working_disks; int last_used; - unsigned long next_sect; + blkoff_t next_sect; int sect_count; mdk_thread_t *thread, *resync_thread; int resync_mirrors; @@ -47,7 +47,7 @@ md_wait_queue_head_t wait_buffer; /* for use when syncing mirrors: */ - unsigned long start_active, start_ready, + blkoff_t start_active, start_ready, start_pending, start_future; int cnt_done, cnt_active, cnt_ready, cnt_pending, cnt_future; diff -ur /md0/kernels/2.4/v2.4.5-ac9/include/linux/raid/raid5.h lb-2.4.5-ac9/include/linux/raid/raid5.h --- /md0/kernels/2.4/v2.4.5-ac9/include/linux/raid/raid5.h Tue Jun 19 13:32:23 2001 +++ lb-2.4.5-ac9/include/linux/raid/raid5.h Sat Jun 30 03:09:03 2001 @@ -132,7 +132,7 @@ struct buffer_head *bh_read[MD_SB_DISKS]; /* read request buffers of the MD device */ struct buffer_head *bh_write[MD_SB_DISKS]; /* write request buffers of the MD device */ struct buffer_head *bh_written[MD_SB_DISKS]; /* write request buffers of the MD device that have been scheduled for write */ - unsigned long sector; /* sector of this row */ + blkoff_t sector; /* sector of this row */ int size; /* buffers size */ int pd_idx; /* parity disk index */ unsigned long state; /* state flags */ diff -ur /md0/kernels/2.4/v2.4.5-ac9/include/linux/types.h lb-2.4.5-ac9/include/linux/types.h --- /md0/kernels/2.4/v2.4.5-ac9/include/linux/types.h Tue Jun 19 00:54:47 2001 +++ lb-2.4.5-ac9/include/linux/types.h Sat Jun 30 02:59:33 2001 @@ -3,6 +3,14 @@ #ifdef __KERNEL__ #include + +#if defined(CONFIG_BLKOFF_LONGLONG) +#define BLKOFF_FMT "Lu" +typedef unsigned long long blkoff_t; +#else +#define BLKOFF_FMT "lu" +typedef unsigned long blkoff_t; +#endif #endif #include diff -ur /md0/kernels/2.4/v2.4.5-ac9/mm/page_io.c lb-2.4.5-ac9/mm/page_io.c --- /md0/kernels/2.4/v2.4.5-ac9/mm/page_io.c Wed Jun 13 16:54:38 2001 +++ lb-2.4.5-ac9/mm/page_io.c Sat Jun 30 01:38:25 2001 @@ -36,7 +36,7 @@ static int rw_swap_page_base(int rw, swp_entry_t entry, struct page *page) { unsigned long offset; - int zones[PAGE_SIZE/512]; + blkoff_t zones[PAGE_SIZE/512]; int zones_used; kdev_t dev = 0; int block_size;