Messages in this thread Patch in this message |  | | From | Peter Chubb <> | Date | Thu, 22 Aug 2002 15:08:29 +1000 | Subject | New large block-device patch for 2.5.31+bk |
| |
Hi, Here's the latest large-block device patch. Expect more changes as Al Viro continues his partition cleanup (I've just converted int *xxx_sizes to sector_t *xxx_sizes; he's gradually getting rid of xxx_sizes[] altogether --- and a good thing too!).
I think I've addressed all the comments I've received so far, except for the request for something that works on 2.4.X.
The patch enables support for large (>2TB) block devices for all platforms where sizeof(long)==8, and via a config option for power-PC and IA32. It's been tested on IA64 and IA32 only.
Still to-do: 16-byte command support for SCSI. Software RAID works iff each raid member is smaller than 2TB.
Changes: -- Use sector_t not int or long for partition start and size -- Adjust printk() formats to allow sector_t to be either 32 or 64 bit. -- Where the sector number cannot be >2^32, cast to long to avoid 64-bit division and modulo operations (e.g., in the floppy and cdrom code) -- bmap() takes and returns sector_t -- return -EFBIG if the BLKGETSIZE ioctl cannot represent the size of the device -- Clean up the loop device error checking on losetup, to return -EFBIG for too large a backing file. -- Add a few BUG_ON() commands where we do not expect too-large requests.
Anyone using bitkeeper can pull these changes from bk://gelato.unsw.edu.au:2023
Large disc testing courtesy of OSDL, www.osdl.org
diff -Nur --exclude=SCCS --exclude=BitKeeper --exclude=ChangeSet linux-2.5-import/drivers/block/Config.help linux-2.5-lbd/drivers/block/Config.help --- linux-2.5-import/drivers/block/Config.help Fri Aug 16 13:24:09 2002 +++ linux-2.5-lbd/drivers/block/Config.help Thu Aug 15 12:15:36 2002 @@ -258,3 +258,7 @@ supported by this driver, and for further information on the use of this driver. +CONFIG_LBD + Say Y here if you want to attach large (bigger than 2TB) discs to + your machine, or if you want to have a raid or loopback device + bigger than 2TB. Otherwise say N. diff -Nur --exclude=SCCS --exclude=BitKeeper --exclude=ChangeSet linux-2.5-import/drivers/block/Config.in linux-2.5-lbd/drivers/block/Config.in --- linux-2.5-import/drivers/block/Config.in Fri Aug 16 13:24:09 2002 +++ linux-2.5-lbd/drivers/block/Config.in Thu Aug 15 12:15:36 2002 @@ -48,4 +48,7 @@ fi dep_bool ' Initial RAM disk (initrd) support' CONFIG_BLK_DEV_INITRD $CONFIG_BLK_DEV_RAM +if [ "$CONFIG_X86" = "y" -o "$CONFIG_PPC32" = "y" ]; then + bool 'Support for Large Block Devices' CONFIG_LBD +fi endmenu diff -Nur --exclude=SCCS --exclude=BitKeeper --exclude=ChangeSet linux-2.5-import/drivers/block/blkpg.c linux-2.5-lbd/drivers/block/blkpg.c --- linux-2.5-import/drivers/block/blkpg.c Fri Aug 16 13:24:09 2002 +++ linux-2.5-lbd/drivers/block/blkpg.c Thu Aug 15 12:15:36 2002 @@ -68,19 +68,24 @@ { struct gendisk *g; long long ppstart, pplength; - long pstart, plength; int i; kdev_t dev = to_kdev_t(bdev->bd_dev); struct hd_struct *part; - /* convert bytes to sectors, check for fit in a hd_struct */ + /* convert bytes to sectors */ ppstart = (p->start >> 9); pplength = (p->length >> 9); - pstart = ppstart; - plength = pplength; - if (pstart != ppstart || plength != pplength - || pstart < 0 || plength < 0) - return -EINVAL; + + /* check for fit in a hd_struct */ + if (sizeof(sector_t) == sizeof(long) && + sizeof(long long) > sizeof(long)) { + long pstart, plength; + pstart = ppstart; + plength = pplength; + if (pstart != ppstart || plength != pplength + || pstart < 0 || plength < 0) + return -EINVAL; + } /* find the drive major */ g = get_gendisk(dev); @@ -102,13 +107,13 @@ /* overlap? */ for (i = 1; i < (1<<g->minor_shift); i++) - if (!(pstart+plength <= part[i].start_sect || - pstart >= part[i].start_sect + part[i].nr_sects)) + if (ppstart+pplength <= part[i].start_sect || + ppstart >= part[i].start_sect + part[i].nr_sects) return -EBUSY; /* all seems OK */ - part[p->pno].start_sect = pstart; - part[p->pno].nr_sects = plength; + part[p->pno].start_sect = ppstart; + part[p->pno].nr_sects = pplength; devfs_register_partitions (g, minor(dev), 0); return 0; } @@ -261,10 +266,17 @@ intval = bdev_hardsect_size(bdev); return put_user(intval, (int *) arg); - case BLKGETSIZE: + case BLKGETSIZE: + { + unsigned long ret; /* size in sectors, works up to 2 TB */ ullval = bdev->bd_inode->i_size; - return put_user((unsigned long)(ullval >> 9), (unsigned long *) arg); + ret = ullval >> 9; + if ((u64)ret != (ullval >> 9)) + return -EFBIG; + return put_user(ret, (unsigned long *) arg); + } + case BLKGETSIZE64: /* size in bytes */ ullval = bdev->bd_inode->i_size; diff -Nur --exclude=SCCS --exclude=BitKeeper --exclude=ChangeSet linux-2.5-import/drivers/block/cciss.c linux-2.5-lbd/drivers/block/cciss.c --- linux-2.5-import/drivers/block/cciss.c Fri Aug 16 13:24:09 2002 +++ linux-2.5-lbd/drivers/block/cciss.c Thu Aug 15 12:15:36 2002 @@ -175,8 +175,8 @@ drv = &h->drv[i]; if (drv->block_size == 0) continue; - size = sprintf(buffer+len, "cciss/c%dd%d: blksz=%d nr_blocks=%d\n", - ctlr, i, drv->block_size, drv->nr_blocks); + size = sprintf(buffer+len, "cciss/c%dd%d: blksz=%d nr_blocks=%llu\n", + ctlr, i, drv->block_size, (unsigned long long)drv->nr_blocks); pos += size; len += size; } @@ -405,7 +405,7 @@ } else { driver_geo.heads = 0xff; driver_geo.sectors = 0x3f; - driver_geo.cylinders = hba[ctlr]->drv[dsk].nr_blocks / (0xff*0x3f); + driver_geo.cylinders = (int)hba[ctlr]->drv[dsk].nr_blocks / (0xff*0x3f); } driver_geo.start= hba[ctlr]->hd[minor(inode->i_rdev)].start_sect; @@ -753,6 +753,7 @@ * on this controller to zero. We will reread all of this data */ memset(hba[ctlr]->hd, 0, sizeof(struct hd_struct) * 256); + memset(hba[ctlr]->sizes, 0, sizeof(hba[0]->sizes[0]) * 256); memset(hba[ctlr]->drv, 0, sizeof(drive_info_struct) * CISS_MAX_LUN); /* @@ -1191,7 +1192,7 @@ total_size = 0; block_size = BLOCK_SIZE; } - printk(KERN_INFO " blocks= %d block_size= %d\n", + printk(KERN_INFO " blocks= %u block_size= %d\n", total_size, block_size); /* Execute the command to read the disk geometry */ memset(inq_buff, 0, sizeof(InquiryData_struct)); diff -Nur --exclude=SCCS --exclude=BitKeeper --exclude=ChangeSet linux-2.5-import/drivers/block/cciss.h linux-2.5-lbd/drivers/block/cciss.h --- linux-2.5-import/drivers/block/cciss.h Fri Aug 16 13:24:09 2002 +++ linux-2.5-lbd/drivers/block/cciss.h Thu Aug 15 12:15:36 2002 @@ -29,7 +29,7 @@ { __u32 LunID; int usage_count; - int nr_blocks; + sector_t nr_blocks; int block_size; int heads; int sectors; @@ -85,7 +85,7 @@ char names[12 * NWD]; // indexed by minor numbers struct hd_struct hd[256]; - int sizes[256]; + sector_t sizes[256]; #ifdef CONFIG_CISS_SCSI_TAPE void *scsi_ctlr; /* ptr to structure containing scsi related stuff */ #endif diff -Nur --exclude=SCCS --exclude=BitKeeper --exclude=ChangeSet linux-2.5-import/drivers/block/floppy.c linux-2.5-lbd/drivers/block/floppy.c --- linux-2.5-import/drivers/block/floppy.c Fri Aug 16 13:24:09 2002 +++ linux-2.5-lbd/drivers/block/floppy.c Thu Aug 15 12:15:36 2002 @@ -489,7 +489,7 @@ */ static struct floppy_struct user_params[N_DRIVE]; -static int floppy_sizes[256]; +static sector_t floppy_sizes[256]; /* * The driver is trying to determine the correct media format @@ -2664,8 +2664,10 @@ max_sector = _floppy->sect * _floppy->head; - TRACK = CURRENT->sector / max_sector; - fsector_t = CURRENT->sector % max_sector; + /* There can't be more than 2^16 (minimum max int) sectors on + a floppy, for goodness sake! */ + TRACK = (int)CURRENT->sector / max_sector; + fsector_t = (int)CURRENT->sector % max_sector; if (_floppy->track && TRACK >= _floppy->track) { if (CURRENT->current_nr_sectors & 1) { current_count_sectors = 1; @@ -2998,7 +3000,7 @@ if (usage_count == 0) { printk("warning: usage count=0, CURRENT=%p exiting\n", CURRENT); - printk("sect=%ld flags=%lx\n", CURRENT->sector, CURRENT->flags); + printk("sect=%llu flags=%lx\n", (unsigned long long)CURRENT->sector, CURRENT->flags); return; } if (fdc_busy){ diff -Nur --exclude=SCCS --exclude=BitKeeper --exclude=ChangeSet linux-2.5-import/drivers/block/genhd.c linux-2.5-lbd/drivers/block/genhd.c --- linux-2.5-import/drivers/block/genhd.c Fri Aug 16 13:24:09 2002 +++ linux-2.5-lbd/drivers/block/genhd.c Thu Aug 22 11:17:31 2002 @@ -164,9 +164,9 @@ int minormask = (1<<sgp->minor_shift) - 1; if ((n & minormask) && sgp->part[n].nr_sects == 0) continue; - seq_printf(part, "%4d %4d %10ld %s\n", + seq_printf(part, "%4d %4d %10llu %s\n", sgp->major, n + sgp->first_minor, - sgp->part[n].nr_sects >> 1 , + (unsigned long long)sgp->part[n].nr_sects >> 1 , disk_name(sgp, n + sgp->first_minor, buf)); } diff -Nur --exclude=SCCS --exclude=BitKeeper --exclude=ChangeSet linux-2.5-import/drivers/block/ll_rw_blk.c linux-2.5-lbd/drivers/block/ll_rw_blk.c --- linux-2.5-import/drivers/block/ll_rw_blk.c Fri Aug 16 13:24:09 2002 +++ linux-2.5-lbd/drivers/block/ll_rw_blk.c Thu Aug 15 12:15:36 2002 @@ -70,10 +70,10 @@ * * if (!blk_size[MAJOR]) then no minor size checking is done. */ -int * blk_size[MAX_BLKDEV]; +sector_t * blk_size[MAX_BLKDEV]; /* - * How many reqeusts do we allocate per queue, + * How many requests do we allocate per queue, * and how many do we "batch" on freeing them? */ int queue_nr_requests, batch_requests; @@ -558,7 +558,7 @@ } while (bit < __REQ_NR_BITS); if (rq->flags & REQ_CMD) - printk("sector %lu, nr/cnr %lu/%u\n", rq->sector, + printk("sector %llu, nr/cnr %lu/%u\n", (unsigned long long)rq->sector, rq->nr_sectors, rq->current_nr_sectors); @@ -1672,10 +1672,10 @@ * device, e.g., when mounting a device. */ printk(KERN_INFO "attempt to access beyond end of device\n"); - printk(KERN_INFO "%s: rw=%ld, want=%ld, limit=%Lu\n", + printk(KERN_INFO "%s: rw=%ld, want=%Lu, limit=%Lu\n", bdevname(bio->bi_bdev), bio->bi_rw, - sector + nr_sectors, + (unsigned long long) sector + nr_sectors, (long long) maxsector); set_bit(BIO_EOF, &bio->bi_flags); @@ -1979,8 +1979,8 @@ req->errors = 0; if (!uptodate) - printk("end_request: I/O error, dev %s, sector %lu\n", - kdevname(req->rq_dev), req->sector); + printk("end_request: I/O error, dev %s, sector %llu\n", + kdevname(req->rq_dev), (unsigned long long)req->sector); total_nsect = 0; while ((bio = req->bio)) { diff -Nur --exclude=SCCS --exclude=BitKeeper --exclude=ChangeSet linux-2.5-import/drivers/block/loop.c linux-2.5-lbd/drivers/block/loop.c --- linux-2.5-import/drivers/block/loop.c Fri Aug 16 13:24:09 2002 +++ linux-2.5-lbd/drivers/block/loop.c Thu Aug 22 11:52:32 2002 @@ -83,14 +83,14 @@ static int max_loop = 8; static struct loop_device *loop_dev; -static int *loop_sizes; +static sector_t *loop_sizes; static devfs_handle_t devfs_handle; /* For the directory */ /* * Transfer functions */ static int transfer_none(struct loop_device *lo, int cmd, char *raw_buf, - char *loop_buf, int size, int real_block) + char *loop_buf, int size, sector_t real_block) { if (raw_buf != loop_buf) { if (cmd == READ) @@ -103,7 +103,7 @@ } static int transfer_xor(struct loop_device *lo, int cmd, char *raw_buf, - char *loop_buf, int size, int real_block) + char *loop_buf, int size, sector_t real_block) { char *in, *out, *key; int i, keysize; @@ -154,24 +154,31 @@ &xor_funcs }; -#define MAX_DISK_SIZE 1024*1024*1024 -static unsigned long -compute_loop_size(struct loop_device *lo, struct dentry * lo_dentry) +static int figure_loop_size(struct loop_device *lo) { - loff_t size = lo_dentry->d_inode->i_mapping->host->i_size; - return (size - lo->lo_offset) >> BLOCK_SIZE_BITS; -} + loff_t size = lo->lo_backing_file->f_dentry->d_inode->i_mapping->host->i_size; + sector_t x; -static void figure_loop_size(struct loop_device *lo) -{ - loop_sizes[lo->lo_number] = compute_loop_size(lo, - lo->lo_backing_file->f_dentry); - + /* + * Unfortunately, if we want to do I/O on the device, + * the number of 512-byte sectors has to fit into a sector_t. + */ + size = (size - lo->lo_offset) >> 9; + x = (sector_t)size; + if ((loff_t)x != size) + return -EFBIG; + /* + * Convert sectors to blocks + */ + size >>= (BLOCK_SIZE_BITS - 9); + + loop_sizes[lo->lo_number] = (sector_t)size; + return 0; } static inline int lo_do_transfer(struct loop_device *lo, int cmd, char *rbuf, - char *lbuf, int size, int rblock) + char *lbuf, int size, sector_t rblock) { if (!lo->transfer) return 0; @@ -187,18 +194,18 @@ struct address_space_operations *aops = mapping->a_ops; struct page *page; char *kaddr, *data; - unsigned long index; + pgoff_t index; unsigned size, offset; int len; int ret = 0; down(&mapping->host->i_sem); index = pos >> PAGE_CACHE_SHIFT; - offset = pos & (PAGE_CACHE_SIZE - 1); + offset = pos & ((pgoff_t)PAGE_CACHE_SIZE - 1); data = kmap(bvec->bv_page) + bvec->bv_offset; len = bvec->bv_len; while (len > 0) { - int IV = index * (PAGE_CACHE_SIZE/bsize) + offset/bsize; + sector_t IV = index * (PAGE_CACHE_SIZE/bsize) + offset/bsize; int transfer_result; size = PAGE_CACHE_SIZE - offset; @@ -218,7 +225,7 @@ * The transfer failed, but we still write the data to * keep prepare/commit calls balanced. */ - printk(KERN_ERR "loop: transfer error block %ld\n", index); + printk(KERN_ERR "loop: transfer error block %llu\n", (unsigned long long)index); memset(kaddr + offset, 0, size); } if (aops->commit_write(file, page, offset, offset+size)) @@ -704,7 +711,11 @@ lo->lo_backing_file = file; lo->transfer = NULL; lo->ioctl = NULL; - figure_loop_size(lo); + if (figure_loop_size(lo)) { + error = -EFBIG; + fput(file); + goto out_putf; + } lo->old_gfp_mask = inode->i_mapping->gfp_mask; inode->i_mapping->gfp_mask = GFP_NOIO; @@ -800,6 +811,7 @@ struct loop_info info; int err; unsigned int type; + loff_t offset; if (lo->lo_encrypt_key_size && lo->lo_key_owner != current->uid && !capable(CAP_SYS_ADMIN)) @@ -815,13 +827,23 @@ return -EINVAL; if (type == LO_CRYPT_XOR && info.lo_encrypt_key_size == 0) return -EINVAL; + err = loop_release_xfer(lo); if (!err) err = loop_init_xfer(lo, type, &info); + + offset = lo->lo_offset; + if (offset != info.lo_offset) { + lo->lo_offset = info.lo_offset; + if (figure_loop_size(lo)){ + err = -EFBIG; + lo->lo_offset = offset; + } + } + if (err) return err; - lo->lo_offset = info.lo_offset; strncpy(lo->lo_name, info.lo_name, LO_NAME_SIZE); lo->transfer = xfer_funcs[type]->transfer; @@ -834,7 +856,7 @@ info.lo_encrypt_key_size); lo->lo_key_owner = current->uid; } - figure_loop_size(lo); + return 0; } @@ -901,18 +923,25 @@ err = loop_get_status(lo, (struct loop_info *) arg); break; case BLKGETSIZE: + { + unsigned long val; if (lo->lo_state != Lo_bound) { err = -ENXIO; break; } - err = put_user((unsigned long) loop_sizes[lo->lo_number] << 1, (unsigned long *) arg); + val = loop_sizes[lo->lo_number] << 1; + if ((sector_t)val != loop_sizes[lo->lo_number] << 1) + err = -EFBIG; + else + err = put_user(val, (unsigned long *) arg); break; + } case BLKGETSIZE64: if (lo->lo_state != Lo_bound) { err = -ENXIO; break; } - err = put_user((u64)loop_sizes[lo->lo_number] << 10, (u64*)arg); + err = put_user(((u64)loop_sizes[lo->lo_number]) << 10, (u64*)arg); break; default: err = lo->ioctl ? lo->ioctl(lo, cmd, arg) : -EINVAL; @@ -1045,7 +1074,7 @@ if (!loop_dev) return -ENOMEM; - loop_sizes = kmalloc(max_loop * sizeof(int), GFP_KERNEL); + loop_sizes = kmalloc(max_loop * sizeof(loop_sizes[0]), GFP_KERNEL); if (!loop_sizes) goto out_mem; @@ -1054,7 +1083,7 @@ for (i = 0; i < max_loop; i++) { struct loop_device *lo = &loop_dev[i]; - memset(lo, 0, sizeof(struct loop_device)); + memset(lo, 0, sizeof(*lo)); init_MUTEX(&lo->lo_ctl_mutex); init_MUTEX_LOCKED(&lo->lo_sem); init_MUTEX_LOCKED(&lo->lo_bh_mutex); @@ -1062,7 +1091,7 @@ spin_lock_init(&lo->lo_lock); } - memset(loop_sizes, 0, max_loop * sizeof(int)); + memset(loop_sizes, 0, max_loop * sizeof(*loop_sizes)); blk_size[MAJOR_NR] = loop_sizes; for (i = 0; i < max_loop; i++) register_disk(NULL, mk_kdev(MAJOR_NR, i), 1, &lo_fops, 0); diff -Nur --exclude=SCCS --exclude=BitKeeper --exclude=ChangeSet linux-2.5-import/drivers/block/nbd.c linux-2.5-lbd/drivers/block/nbd.c --- linux-2.5-import/drivers/block/nbd.c Fri Aug 16 13:24:09 2002 +++ linux-2.5-lbd/drivers/block/nbd.c Thu Aug 15 12:15:36 2002 @@ -59,7 +59,7 @@ static int nbd_blksizes[MAX_NBD]; static int nbd_blksize_bits[MAX_NBD]; -static int nbd_sizes[MAX_NBD]; +static sector_t nbd_sizes[MAX_NBD]; static u64 nbd_bytesizes[MAX_NBD]; static struct nbd_device nbd_dev[MAX_NBD]; diff -Nur --exclude=SCCS --exclude=BitKeeper --exclude=ChangeSet linux-2.5-import/drivers/block/ps2esdi.c linux-2.5-lbd/drivers/block/ps2esdi.c --- linux-2.5-import/drivers/block/ps2esdi.c Fri Aug 16 13:24:09 2002 +++ linux-2.5-lbd/drivers/block/ps2esdi.c Thu Aug 15 12:15:36 2002 @@ -108,6 +108,7 @@ static DECLARE_WAIT_QUEUE_HEAD(ps2esdi_int); static int no_int_yet; +static sector_t ps2esdi_sizes[MAX_HD << 6]; static int ps2esdi_drives; static struct hd_struct ps2esdi[MAX_HD << 6]; static u_short io_base; @@ -540,7 +541,7 @@ /* is request is valid */ else { printk("Grrr. error. ps2esdi_drives: %d, %lu %lu\n", ps2esdi_drives, - CURRENT->sector, ps2esdi[minor(CURRENT->rq_dev)].nr_sects); + (unsigned long)CURRENT->sector, (unsigned long)ps2esdi[minor(CURRENT->rq_dev)].nr_sects); end_request(CURRENT, FAIL); } diff -Nur --exclude=SCCS --exclude=BitKeeper --exclude=ChangeSet linux-2.5-import/drivers/block/rd.c linux-2.5-lbd/drivers/block/rd.c --- linux-2.5-import/drivers/block/rd.c Fri Aug 16 13:24:09 2002 +++ linux-2.5-lbd/drivers/block/rd.c Thu Aug 15 12:15:36 2002 @@ -77,7 +77,7 @@ */ static unsigned long rd_length[NUM_RAMDISKS]; /* Size of RAM disks in bytes */ -static int rd_kbsize[NUM_RAMDISKS]; /* Size in blocks of 1024 bytes */ +static sector_t 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 */ diff -Nur --exclude=SCCS --exclude=BitKeeper --exclude=ChangeSet linux-2.5-import/drivers/ide/ide-cd.c linux-2.5-lbd/drivers/ide/ide-cd.c --- linux-2.5-import/drivers/ide/ide-cd.c Mon Aug 19 13:07:06 2002 +++ linux-2.5-lbd/drivers/ide/ide-cd.c Thu Aug 22 11:17:31 2002 @@ -1173,7 +1173,7 @@ if (rq->current_nr_sectors < bio_sectors(rq->bio) && (rq->sector % SECTORS_PER_FRAME) != 0) { printk ("%s: cdrom_read_from_buffer: buffer botch (%ld)\n", - drive->name, rq->sector); + drive->name, (long)rq->sector); cdrom_end_request(drive, 0); return -1; } @@ -2784,11 +2784,13 @@ static int ll_10byte_cmd_build(request_queue_t *q, struct request *rq) { int hard_sect = queue_hardsect_size(q); - sector_t block = rq->hard_sector / (hard_sect >> 9); + unsigned block = (long)rq->hard_sector / (hard_sect >> 9); unsigned long blocks = rq->hard_nr_sectors / (hard_sect >> 9); if (!(rq->flags & REQ_CMD)) return 0; + + BUG_ON(sizeof(rq->hard_sector) > 4 && (rq->hard_sector >> 32)); if (rq->hard_nr_sectors != rq->nr_sectors) { printk(KERN_ERR "ide-cd: hard_nr_sectors differs from nr_sectors! %lu %lu\n", diff -Nur --exclude=SCCS --exclude=BitKeeper --exclude=ChangeSet linux-2.5-import/drivers/ide/ide-disk.c linux-2.5-lbd/drivers/ide/ide-disk.c --- linux-2.5-import/drivers/ide/ide-disk.c Mon Aug 19 13:07:06 2002 +++ linux-2.5-lbd/drivers/ide/ide-disk.c Thu Aug 22 11:17:02 2002 @@ -843,7 +843,7 @@ } } if (HWGROUP(drive) && HWGROUP(drive)->rq) - printk(", sector=%ld", HWGROUP(drive)->rq->sector); + printk(", sector=%llu", (unsigned long long)HWGROUP(drive)->rq->sector); } } #endif /* FANCY_STATUS_DUMPS */ diff -Nur --exclude=SCCS --exclude=BitKeeper --exclude=ChangeSet linux-2.5-import/drivers/ide/ide-floppy.c linux-2.5-lbd/drivers/ide/ide-floppy.c --- linux-2.5-import/drivers/ide/ide-floppy.c Mon Aug 19 13:07:06 2002 +++ linux-2.5-lbd/drivers/ide/ide-floppy.c Thu Aug 22 11:10:29 2002 @@ -1379,7 +1379,7 @@ return ide_stopped; } if (rq->flags & REQ_CMD) { - if ((rq->sector % floppy->bs_factor) || + if (((long)rq->sector % floppy->bs_factor) || (rq->nr_sectors % floppy->bs_factor)) { printk("%s: unsupported r/w request size\n", drive->name); diff -Nur --exclude=SCCS --exclude=BitKeeper --exclude=ChangeSet linux-2.5-import/drivers/ide/ide.c linux-2.5-lbd/drivers/ide/ide.c --- linux-2.5-import/drivers/ide/ide.c Mon Aug 19 13:07:06 2002 +++ linux-2.5-lbd/drivers/ide/ide.c Thu Aug 22 11:17:31 2002 @@ -832,7 +832,7 @@ } } if (HWGROUP(drive) && HWGROUP(drive)->rq) - printk(", sector=%ld", HWGROUP(drive)->rq->sector); + printk(", sector=%llu", (unsigned long long)HWGROUP(drive)->rq->sector); } } #endif /* FANCY_STATUS_DUMPS */ diff -Nur --exclude=SCCS --exclude=BitKeeper --exclude=ChangeSet linux-2.5-import/drivers/ieee1394/sbp2.c linux-2.5-lbd/drivers/ieee1394/sbp2.c --- linux-2.5-import/drivers/ieee1394/sbp2.c Fri Aug 16 13:24:25 2002 +++ linux-2.5-lbd/drivers/ieee1394/sbp2.c Thu Aug 15 12:15:40 2002 @@ -3105,12 +3105,13 @@ heads = 64; sectors = 32; - cylinders = disk->capacity / (heads * sectors); + cylinders = (int)disk->capacity / (heads * sectors); + if (cylinders > 1024) { heads = 255; sectors = 63; - cylinders = disk->capacity / (heads * sectors); + cylinders = (int)disk->capacity / (heads * sectors); } geom[0] = heads; diff -Nur --exclude=SCCS --exclude=BitKeeper --exclude=ChangeSet linux-2.5-import/drivers/md/linear.c linux-2.5-lbd/drivers/md/linear.c --- linux-2.5-import/drivers/md/linear.c Fri Aug 16 13:24:34 2002 +++ linux-2.5-lbd/drivers/md/linear.c Thu Aug 15 12:15:41 2002 @@ -72,10 +72,12 @@ goto out; } - nb_zone = conf->nr_zones = - md_size[mdidx(mddev)] / conf->smallest->size + - ((md_size[mdidx(mddev)] % conf->smallest->size) ? 1 : 0); - + { + sector_t sz = md_size[mdidx(mddev)]; + unsigned round = sector_div(sz, conf->smallest->size); + nb_zone = conf->nr_zones = sz + (round ? 1 : 0); + } + conf->hash_table = kmalloc (sizeof (struct linear_hash) * nb_zone, GFP_KERNEL); if (!conf->hash_table) diff -Nur --exclude=SCCS --exclude=BitKeeper --exclude=ChangeSet linux-2.5-import/drivers/md/lvm.c linux-2.5-lbd/drivers/md/lvm.c --- linux-2.5-import/drivers/md/lvm.c Fri Aug 16 13:24:34 2002 +++ linux-2.5-lbd/drivers/md/lvm.c Thu Aug 15 12:15:41 2002 @@ -370,7 +370,7 @@ /* gendisk structures */ static struct hd_struct lvm_hd_struct[MAX_LV]; static int lvm_blocksizes[MAX_LV]; -static int lvm_size[MAX_LV]; +static sector_t lvm_size[MAX_LV]; static struct gendisk lvm_gendisk = { diff -Nur --exclude=SCCS --exclude=BitKeeper --exclude=ChangeSet linux-2.5-import/drivers/md/md.c linux-2.5-lbd/drivers/md/md.c --- linux-2.5-import/drivers/md/md.c Mon Aug 19 13:07:08 2002 +++ linux-2.5-lbd/drivers/md/md.c Thu Aug 22 13:02:07 2002 @@ -111,7 +111,7 @@ static void md_recover_arrays(void); static mdk_thread_t *md_recovery_thread; -int md_size[MAX_MD_DEVS]; +sector_t md_size[MAX_MD_DEVS]; static struct block_device_operations md_fops; static devfs_handle_t devfs_handle; @@ -300,35 +300,35 @@ return dname->name; } -static unsigned int calc_dev_sboffset(struct block_device *bdev) +static sector_t calc_dev_sboffset(struct block_device *bdev) { - unsigned int size = bdev->bd_inode->i_size >> BLOCK_SIZE_BITS; + sector_t size = bdev->bd_inode->i_size >> BLOCK_SIZE_BITS; return MD_NEW_SIZE_BLOCKS(size); } -static unsigned int calc_dev_size(struct block_device *bdev, mddev_t *mddev) +static sector_t calc_dev_size(struct block_device *bdev, mddev_t *mddev) { - unsigned int size; + sector_t size; if (mddev->persistent) size = calc_dev_sboffset(bdev); else size = bdev->bd_inode->i_size >> BLOCK_SIZE_BITS; if (mddev->chunk_size) - size &= ~(mddev->chunk_size/1024 - 1); + size &= ~((sector_t)mddev->chunk_size/1024 - 1); return size; } -static unsigned int zoned_raid_size(mddev_t *mddev) +static sector_t zoned_raid_size(mddev_t *mddev) { - unsigned int mask; + sector_t mask; mdk_rdev_t * rdev; struct list_head *tmp; /* * do size and offset calculations. */ - mask = ~(mddev->chunk_size/1024 - 1); + mask = ~((sector_t)mddev->chunk_size/1024 - 1); ITERATE_RDEV(mddev,rdev,tmp) { rdev->size &= mask; @@ -418,7 +418,7 @@ static int read_disk_sb(mdk_rdev_t * rdev) { - unsigned long sb_offset; + sector_t sb_offset; if (!rdev->sb) { MD_BUG(); @@ -594,10 +594,10 @@ MD_BUG(); free_disk_sb(rdev); list_del_init(&rdev->same_set); - unlock_rdev(rdev); #ifndef MODULE md_autodetect_dev(rdev->bdev->bd_dev); #endif + unlock_rdev(rdev); rdev->faulty = 0; kfree(rdev); } @@ -683,9 +683,9 @@ static void print_rdev(mdk_rdev_t *rdev) { - printk(KERN_INFO "md: rdev %s, SZ:%08ld F:%d DN:%d ", + printk(KERN_INFO "md: rdev %s, SZ:%08llu F:%d DN:%d ", bdev_partition_name(rdev->bdev), - rdev->size, rdev->faulty, rdev->desc_nr); + (unsigned long long)rdev->size, rdev->faulty, rdev->desc_nr); if (rdev->sb) { printk(KERN_INFO "md: rdev superblock:\n"); print_sb(rdev->sb); @@ -767,7 +767,8 @@ static int write_disk_sb(mdk_rdev_t * rdev) { - unsigned long sb_offset, size; + sector_t sb_offset; + sector_t size; if (!rdev->sb) { MD_BUG(); @@ -784,8 +785,10 @@ sb_offset = calc_dev_sboffset(rdev->bdev); if (rdev->sb_offset != sb_offset) { - printk(KERN_INFO "%s's sb offset has changed from %ld to %ld, skipping\n", - bdev_partition_name(rdev->bdev), rdev->sb_offset, sb_offset); + printk(KERN_INFO "%s's sb offset has changed from %llu to %llu, skipping\n", + bdev_partition_name(rdev->bdev), + (unsigned long long)rdev->sb_offset, + (unsigned long long)sb_offset); goto skip; } /* @@ -795,12 +798,14 @@ */ size = calc_dev_size(rdev->bdev, rdev->mddev); if (size != rdev->size) { - printk(KERN_INFO "%s's size has changed from %ld to %ld since import, skipping\n", - bdev_partition_name(rdev->bdev), rdev->size, size); + printk(KERN_INFO "%s's size has changed from %llu to %llu since import, skipping\n", + bdev_partition_name(rdev->bdev), + (unsigned long long)rdev->size, + (unsigned long long)size); goto skip; } - printk(KERN_INFO "(write) %s's sb offset: %ld\n", bdev_partition_name(rdev->bdev), sb_offset); + printk(KERN_INFO "(write) %s's sb offset: %llu\n", bdev_partition_name(rdev->bdev), (unsigned long long)sb_offset); if (!sync_page_io(rdev->bdev, sb_offset<<1, MD_SB_BYTES, rdev->sb_page, WRITE)) goto fail; @@ -990,7 +995,7 @@ { int err; mdk_rdev_t *rdev; - unsigned int size; + sector_t size; rdev = (mdk_rdev_t *) kmalloc(sizeof(*rdev), GFP_KERNEL); if (!rdev) { @@ -1267,9 +1272,9 @@ rdev->size = calc_dev_size(rdev->bdev, mddev); if (rdev->size < mddev->chunk_size / 1024) { printk(KERN_WARNING - "md: Dev %s smaller than chunk_size: %ldk < %dk\n", + "md: Dev %s smaller than chunk_size: %lluk < %dk\n", bdev_partition_name(rdev->bdev), - rdev->size, mddev->chunk_size / 1024); + (unsigned long long)rdev->size, mddev->chunk_size / 1024); return -EINVAL; } } @@ -1945,7 +1950,7 @@ static int add_new_disk(mddev_t * mddev, mdu_disk_info_t *info) { - int size; + sector_t size; mdk_rdev_t *rdev; dev_t dev; dev = MKDEV(info->major,info->minor); @@ -2111,8 +2116,9 @@ size = calc_dev_size(rdev->bdev, mddev); if (size < mddev->size) { - printk(KERN_WARNING "md%d: disk size %d blocks < array size %ld\n", - mdidx(mddev), size, mddev->size); + printk(KERN_WARNING "md%d: disk size %llu blocks < array size %llu\n", + mdidx(mddev), (unsigned long long)size, + (unsigned long long)mddev->size); err = -ENOSPC; goto abort_export; } @@ -2434,9 +2440,9 @@ } default: - printk(KERN_WARNING "md: %s(pid %d) used obsolete MD ioctl, " - "upgrade your software to use new ictls.\n", - current->comm, current->pid); + printk(KERN_WARNING "md: %s(pid %d) used obsolete MD ioctl, %x" + "upgrade your software to use new ioctls.\n", + current->comm, current->pid, cmd); err = -EINVAL; goto abort_unlock; } @@ -2733,7 +2739,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; + int sz = 0, j; + sector_t size; struct list_head *tmp, *tmp2; mdk_rdev_t *rdev; mddev_t *mddev; @@ -2767,10 +2774,10 @@ if (!list_empty(&mddev->disks)) { if (mddev->pers) - sz += sprintf(page + sz, "\n %d blocks", - md_size[mdidx(mddev)]); + sz += sprintf(page + sz, "\n %llu blocks", + (unsigned long long)md_size[mdidx(mddev)]); else - sz += sprintf(page + sz, "\n %d blocks", size); + sz += sprintf(page + sz, "\n %llu blocks", (unsigned long long)size); } if (!mddev->pers) { diff -Nur --exclude=SCCS --exclude=BitKeeper --exclude=ChangeSet linux-2.5-import/drivers/md/multipath.c linux-2.5-lbd/drivers/md/multipath.c --- linux-2.5-import/drivers/md/multipath.c Fri Aug 16 13:24:34 2002 +++ linux-2.5-lbd/drivers/md/multipath.c Thu Aug 15 12:15:41 2002 @@ -138,8 +138,8 @@ conf = mddev_to_conf(mp_bh->mddev); bdev = conf->multipaths[mp_bh->path].bdev; md_error (mp_bh->mddev, bdev); - printk(KERN_ERR "multipath: %s: rescheduling sector %lu\n", - bdev_partition_name(bdev), bio->bi_sector); + printk(KERN_ERR "multipath: %s: rescheduling sector %llu\n", + bdev_partition_name(bdev), (unsigned long long)bio->bi_sector); multipath_reschedule_retry(mp_bh); return; } @@ -340,10 +340,10 @@ } #define IO_ERROR KERN_ALERT \ -"multipath: %s: unrecoverable IO read error for block %lu\n" +"multipath: %s: unrecoverable IO read error for block %llu\n" #define REDIRECT_SECTOR KERN_ERR \ -"multipath: %s: redirecting sector %lu to another IO path\n" +"multipath: %s: redirecting sector %llu to another IO path\n" /* * This is a kernel thread which: @@ -377,11 +377,11 @@ multipath_map (mddev, &bio->bi_bdev); if (bio->bi_bdev == bdev) { printk(IO_ERROR, - bdev_partition_name(bio->bi_bdev), bio->bi_sector); + bdev_partition_name(bio->bi_bdev), (unsigned long long)bio->bi_sector); multipath_end_bh_io(mp_bh, 0); } else { printk(REDIRECT_SECTOR, - bdev_partition_name(bio->bi_bdev), bio->bi_sector); + bdev_partition_name(bio->bi_bdev), (unsigned long long)bio->bi_sector); generic_make_request(bio); } } diff -Nur --exclude=SCCS --exclude=BitKeeper --exclude=ChangeSet linux-2.5-import/drivers/md/raid0.c linux-2.5-lbd/drivers/md/raid0.c --- linux-2.5-import/drivers/md/raid0.c Fri Aug 16 13:24:34 2002 +++ linux-2.5-lbd/drivers/md/raid0.c Thu Aug 22 13:53:33 2002 @@ -46,9 +46,9 @@ printk("raid0: looking at %s\n", bdev_partition_name(rdev1->bdev)); c = 0; ITERATE_RDEV(mddev,rdev2,tmp2) { - printk("raid0: comparing %s(%ld) with %s(%ld)\n", - bdev_partition_name(rdev1->bdev), rdev1->size, - bdev_partition_name(rdev2->bdev), rdev2->size); + printk("raid0: comparing %s(%llu) with %s(%llu)\n", + bdev_partition_name(rdev1->bdev), (unsigned long long)rdev1->size, + bdev_partition_name(rdev2->bdev), (unsigned long long)rdev2->size); if (rdev2 == rdev1) { printk("raid0: END\n"); break; @@ -87,7 +87,7 @@ cnt = 0; smallest = NULL; ITERATE_RDEV(mddev, rdev1, tmp1) { - int j = rdev1->sb->this_disk.raid_disk; + int j = rdev1->raid_disk; if (j < 0 || j >= mddev->raid_disks) { printk("raid0: bad disk number %d - aborting!\n", j); @@ -135,7 +135,8 @@ c++; if (!smallest || (rdev->size <smallest->size)) { smallest = rdev; - printk(" (%ld) is smallest!.\n", rdev->size); + printk(" (%llu) is smallest!.\n", + (unsigned long long)rdev->size); } } else printk(" nope.\n"); @@ -176,16 +177,21 @@ if (create_strip_zones (mddev)) goto out_free_conf; - printk("raid0 : md_size is %d blocks.\n", md_size[mdidx(mddev)]); + printk("raid0 : md_size is %llu blocks.\n", (unsigned long long)md_size[mdidx(mddev)]); printk("raid0 : conf->smallest->size is %ld blocks.\n", conf->smallest->size); - nb_zone = md_size[mdidx(mddev)]/conf->smallest->size + - (md_size[mdidx(mddev)] % conf->smallest->size ? 1 : 0); + { +#if __GNUC__ < 3 /* work around bug in gcc 2.9[56] */ + volatile +#endif + sector_t sz = md_size[mdidx(mddev)]; + unsigned round = sector_div(sz, conf->smallest->size); + nb_zone = sz + (round ? 1 : 0); + } printk("raid0 : nb_zone is %ld.\n", nb_zone); conf->nr_zones = nb_zone; printk("raid0 : Allocating %ld bytes for hash.\n", nb_zone*sizeof(struct raid0_hash)); - conf->hash_table = vmalloc (sizeof (struct raid0_hash)*nb_zone); if (!conf->hash_table) goto out_free_zone_conf; @@ -312,7 +318,7 @@ return 1; bad_map: - printk ("raid0_make_request bug: can't convert block across chunks or bigger than %dk %ld %d\n", chunk_size, bio->bi_sector, bio->bi_size >> 10); + printk ("raid0_make_request bug: can't convert block across chunks or bigger than %dk %llu %d\n", chunk_size, (unsigned long long)bio->bi_sector, bio->bi_size >> 10); goto outerr; bad_hash: printk("raid0_make_request bug: hash==NULL for block %ld\n", block); diff -Nur --exclude=SCCS --exclude=BitKeeper --exclude=ChangeSet linux-2.5-import/drivers/md/raid1.c linux-2.5-lbd/drivers/md/raid1.c --- linux-2.5-import/drivers/md/raid1.c Fri Aug 16 13:24:34 2002 +++ linux-2.5-lbd/drivers/md/raid1.c Thu Aug 15 12:15:41 2002 @@ -292,8 +292,8 @@ /* * oops, read error: */ - printk(KERN_ERR "raid1: %s: rescheduling sector %lu\n", - bdev_partition_name(conf->mirrors[mirror].bdev), r1_bio->sector); + printk(KERN_ERR "raid1: %s: rescheduling sector %llu\n", + bdev_partition_name(conf->mirrors[mirror].bdev), (unsigned long long)r1_bio->sector); reschedule_retry(r1_bio); return; } @@ -836,10 +836,10 @@ } #define IO_ERROR KERN_ALERT \ -"raid1: %s: unrecoverable I/O read error for block %lu\n" +"raid1: %s: unrecoverable I/O read error for block %llu\n" #define REDIRECT_SECTOR KERN_ERR \ -"raid1: %s: redirecting sector %lu to another mirror\n" +"raid1: %s: redirecting sector %llu to another mirror\n" static void end_sync_read(struct bio *bio) { @@ -906,7 +906,7 @@ * There is no point trying a read-for-reconstruct as * reconstruct is about to be aborted */ - printk(IO_ERROR, bdev_partition_name(bio->bi_bdev), r1_bio->sector); + printk(IO_ERROR, bdev_partition_name(bio->bi_bdev), (unsigned long long)r1_bio->sector); md_done_sync(mddev, r1_bio->master_bio->bi_size >> 9, 0); resume_device(conf); put_buf(r1_bio); @@ -949,7 +949,7 @@ * Nowhere to write this to... I guess we * must be done */ - printk(IO_ERROR, bdev_partition_name(bio->bi_bdev), r1_bio->sector); + printk(IO_ERROR, bdev_partition_name(bio->bi_bdev), (unsigned long long)r1_bio->sector); md_done_sync(mddev, r1_bio->master_bio->bi_size >> 9, 0); resume_device(conf); put_buf(r1_bio); @@ -1005,12 +1005,12 @@ bdev = bio->bi_bdev; map(mddev, &bio->bi_bdev); if (bio->bi_bdev == bdev) { - printk(IO_ERROR, bdev_partition_name(bio->bi_bdev), r1_bio->sector); + printk(IO_ERROR, bdev_partition_name(bio->bi_bdev), (unsigned long long)r1_bio->sector); raid_end_bio_io(r1_bio, 0); break; } printk(REDIRECT_SECTOR, - bdev_partition_name(bio->bi_bdev), r1_bio->sector); + bdev_partition_name(bio->bi_bdev), (unsigned long long)r1_bio->sector); bio->bi_sector = r1_bio->sector; bio->bi_rw = r1_bio->cmd; diff -Nur --exclude=SCCS --exclude=BitKeeper --exclude=ChangeSet linux-2.5-import/drivers/md/raid5.c linux-2.5-lbd/drivers/md/raid5.c --- linux-2.5-import/drivers/md/raid5.c Fri Aug 16 13:24:34 2002 +++ linux-2.5-lbd/drivers/md/raid5.c Thu Aug 15 12:15:41 2002 @@ -195,8 +195,8 @@ if (dev->toread || dev->towrite || dev->written || test_bit(R5_LOCKED, &dev->flags)) { - printk("sector=%lx i=%d %p %p %p %d\n", - sh->sector, i, dev->toread, + printk("sector=%llx i=%d %p %p %p %d\n", + (unsigned long long)sh->sector, i, dev->toread, dev->towrite, dev->written, test_bit(R5_LOCKED, &dev->flags)); BUG(); @@ -416,7 +416,7 @@ } -static unsigned long compute_blocknr(struct stripe_head *sh, int i); +static sector_t compute_blocknr(struct stripe_head *sh, int i); static void raid5_build_block (struct stripe_head *sh, int i) { @@ -675,7 +675,7 @@ if (test_bit(R5_UPTODATE, &sh->dev[i].flags)) ptr[count++] = p; else - printk("compute_block() %d, stripe %lu, %d not present\n", dd_idx, sh->sector, i); + printk("compute_block() %d, stripe %llu, %d not present\n", dd_idx, (unsigned long long)sh->sector, i); check_xor(); } diff -Nur --exclude=SCCS --exclude=BitKeeper --exclude=ChangeSet linux-2.5-import/drivers/mtd/devices/blkmtd.c linux-2.5-lbd/drivers/mtd/devices/blkmtd.c --- linux-2.5-import/drivers/mtd/devices/blkmtd.c Fri Aug 16 13:24:38 2002 +++ linux-2.5-lbd/drivers/mtd/devices/blkmtd.c Thu Aug 15 12:15:42 2002 @@ -163,9 +163,10 @@ static int blkmtd_readpage(mtd_raw_dev_data_t *rawdevice, struct page *page) { int err; - int sectornr, sectors, i; + sector_t sectornr; + int sectors, i; struct kiobuf *iobuf; - unsigned long *blocks; + sector_t *blocks; if(!rawdevice) { printk("blkmtd: readpage: PANIC file->private_data == NULL\n"); @@ -224,7 +225,7 @@ /* Pre 2.4.4 doesn't have space for the block list in the kiobuf */ #if LINUX_VERSION_CODE < KERNEL_VERSION(2,4,4) - blocks = kmalloc(KIO_MAX_SECTORS * sizeof(unsigned long)); + blocks = kmalloc(KIO_MAX_SECTORS * sizeof(*blocks)); if(blocks == NULL) { printk("blkmtd: cant allocate iobuf blocks\n"); free_kiovec(1, &iobuf); @@ -240,7 +241,7 @@ iobuf->length = PAGE_SIZE; iobuf->locked = 1; iobuf->maplist[0] = page; - sectornr = page->index << (PAGE_SHIFT - rawdevice->sector_bits); + sectornr = (sector_t)page->index << (PAGE_SHIFT - rawdevice->sector_bits); sectors = 1 << (PAGE_SHIFT - rawdevice->sector_bits); if(rawdevice->partial_last_page && page->index == rawdevice->partial_last_page) { DEBUG(3, "blkmtd: handling partial last page\n"); diff -Nur --exclude=SCCS --exclude=BitKeeper --exclude=ChangeSet linux-2.5-import/drivers/mtd/mtdblock.c linux-2.5-lbd/drivers/mtd/mtdblock.c --- linux-2.5-import/drivers/mtd/mtdblock.c Fri Aug 16 13:24:37 2002 +++ linux-2.5-lbd/drivers/mtd/mtdblock.c Thu Aug 15 12:15:42 2002 @@ -46,7 +46,7 @@ static spinlock_t mtdblks_lock; -static int mtd_sizes[MAX_MTD_DEVICES]; +static sector_t mtd_sizes[MAX_MTD_DEVICES]; /* * Cache stuff... diff -Nur --exclude=SCCS --exclude=BitKeeper --exclude=ChangeSet linux-2.5-import/drivers/mtd/nftlcore.c linux-2.5-lbd/drivers/mtd/nftlcore.c --- linux-2.5-import/drivers/mtd/nftlcore.c Fri Aug 16 13:24:37 2002 +++ linux-2.5-lbd/drivers/mtd/nftlcore.c Thu Aug 15 12:15:42 2002 @@ -824,9 +824,9 @@ DEBUG(MTD_DEBUG_LEVEL2, "NFTL_request\n"); DEBUG(MTD_DEBUG_LEVEL3, - "NFTL %s request, from sector 0x%04lx for %d sectors\n", + "NFTL %s request, from sector 0x%04llx for %d sectors\n", (req->cmd == READ) ? "Read " : "Write", - req->sector, req->current_nr_sectors); + (unsigned long long)req->sector, req->current_nr_sectors); dev = minor(req->rq_dev); block = req->sector; diff -Nur --exclude=SCCS --exclude=BitKeeper --exclude=ChangeSet linux-2.5-import/drivers/scsi/scsi.c linux-2.5-lbd/drivers/scsi/scsi.c --- linux-2.5-import/drivers/scsi/scsi.c Fri Aug 16 13:25:16 2002 +++ linux-2.5-lbd/drivers/scsi/scsi.c Thu Aug 15 12:15:47 2002 @@ -2370,16 +2370,16 @@ for (SDpnt = shpnt->host_queue; SDpnt; SDpnt = SDpnt->next) { for (SCpnt = SDpnt->device_queue; SCpnt; SCpnt = SCpnt->next) { /* (0) h:c:t:l (dev sect nsect cnumsec sg) (ret all flg) (to/cmd to ito) cmd snse result %d %x */ - printk(KERN_INFO "(%3d) %2d:%1d:%2d:%2d (%6s %4ld %4ld %4ld %4x %1d) (%1d %1d 0x%2x) (%4d %4d %4d) 0x%2.2x 0x%2.2x 0x%8.8x\n", + printk(KERN_INFO "(%3d) %2d:%1d:%2d:%2d (%6s %4llu %4ld %4ld %4x %1d) (%1d %1d 0x%2x) (%4d %4d %4d) 0x%2.2x 0x%2.2x 0x%8.8x\n", i++, SCpnt->host->host_no, SCpnt->channel, - SCpnt->target, - SCpnt->lun, + SCpnt->target, + SCpnt->lun, - kdevname(SCpnt->request->rq_dev), - SCpnt->request->sector, + kdevname(SCpnt->request->rq_dev), + (unsigned long long)SCpnt->request->sector, SCpnt->request->nr_sectors, (long)SCpnt->request->current_nr_sectors, SCpnt->request->rq_status, diff -Nur --exclude=SCCS --exclude=BitKeeper --exclude=ChangeSet linux-2.5-import/drivers/scsi/sd.c linux-2.5-lbd/drivers/scsi/sd.c --- linux-2.5-import/drivers/scsi/sd.c Fri Aug 16 13:25:17 2002 +++ linux-2.5-lbd/drivers/scsi/sd.c Thu Aug 22 11:17:23 2002 @@ -298,7 +298,8 @@ **/ static int sd_init_command(Scsi_Cmnd * SCpnt) { - int dsk_nr, part_nr, block, this_count; + int dsk_nr, part_nr, this_count; + sector_t block; Scsi_Device *sdp; #if CONFIG_SCSI_LOGGING char nbuff[6]; @@ -315,8 +316,8 @@ block = SCpnt->request->sector; this_count = SCpnt->request_bufflen >> 9; - SCSI_LOG_HLQUEUE(1, printk("sd_command_init: dsk_nr=%d, block=%d, " - "count=%d\n", dsk_nr, block, this_count)); + SCSI_LOG_HLQUEUE(1, printk("sd_command_init: dsk_nr=%d, block=%llu, " + "count=%d\n", dsk_nr, (unsigned long long)block, this_count)); sdp = SCpnt->device; /* >>>>> the "(part_nr & 0xf)" excludes 15th partition, why?? */ @@ -339,8 +340,8 @@ return 0; } SCSI_LOG_HLQUEUE(2, sd_dskname(dsk_nr, nbuff)); - SCSI_LOG_HLQUEUE(2, printk("%s : [part_nr=%d], block=%d\n", - nbuff, part_nr, block)); + SCSI_LOG_HLQUEUE(2, printk("%s : [part_nr=%d], block=%llu\n", + nbuff, part_nr, (unsigned long long)block)); /* * If we have a 1K hardware sectorsize, prevent access to single @@ -611,8 +612,8 @@ int result = SCpnt->result; int this_count = SCpnt->bufflen >> 9; int good_sectors = (result == 0 ? this_count : 0); - int block_sectors = 1; - long error_sector; + sector_t block_sectors = 1; + sector_t error_sector; #if CONFIG_SCSI_LOGGING char nbuff[6]; @@ -947,7 +948,7 @@ SRpnt->sr_sense_buffer[2] == NOT_READY) sdp->changed = 1; - /* Either no media are present but the drive didnt tell us, + /* Either no media are present but the drive didn't tell us, or they are present but the read capacity command fails */ /* sdkp->media_present = 0; -- not always correct */ sdkp->capacity = 0x200000; /* 1 GB - random */ @@ -955,7 +956,7 @@ return; } - sdkp->capacity = 1 + ((buffer[0] << 24) | + sdkp->capacity = 1 + (((sector_t)buffer[0] << 24) | (buffer[1] << 16) | (buffer[2] << 8) | buffer[3]); @@ -991,24 +992,31 @@ * Jacques Gelinas (Jacques@solucorp.qc.ca) */ int hard_sector = sector_size; - int sz = sdkp->capacity * (hard_sector/256); + sector_t sz = sdkp->capacity * (hard_sector/256); request_queue_t *queue = &sdp->request_queue; + sector_t mb; blk_queue_hardsect_size(queue, hard_sector); + /* avoid 64-bit division on 32-bit platforms */ + mb = sz >> 1; + sector_div(sz, 1250); + mb -= sz - 974; + sector_div(mb, 1950); + printk(KERN_NOTICE "SCSI device %s: " - "%d %d-byte hdwr sectors (%d MB)\n", - diskname, sdkp->capacity, - hard_sector, (sz/2 - sz/1250 + 974)/1950); + "%llu %d-byte hdwr sectors (%llu MB)\n", + diskname, (unsigned long long)sdkp->capacity, + hard_sector, (unsigned long long)mb); } /* Rescale capacity to 512-byte units */ if (sector_size == 4096) sdkp->capacity <<= 3; - if (sector_size == 2048) + else if (sector_size == 2048) sdkp->capacity <<= 2; - if (sector_size == 1024) + else if (sector_size == 1024) sdkp->capacity <<= 1; - if (sector_size == 256) + else if (sector_size == 256) sdkp->capacity >>= 1; sdkp->device->sector_size = sector_size; diff -Nur --exclude=SCCS --exclude=BitKeeper --exclude=ChangeSet linux-2.5-import/drivers/scsi/sd.h linux-2.5-lbd/drivers/scsi/sd.h --- linux-2.5-import/drivers/scsi/sd.h Fri Aug 16 13:25:17 2002 +++ linux-2.5-lbd/drivers/scsi/sd.h Thu Aug 15 12:15:47 2002 @@ -23,7 +23,7 @@ extern struct hd_struct *sd; typedef struct scsi_disk { - unsigned capacity; /* size in 512-byte sectors */ + sector_t capacity; /* size in 512-byte sectors */ Scsi_Device *device; unsigned char media_present; unsigned char write_prot; diff -Nur --exclude=SCCS --exclude=BitKeeper --exclude=ChangeSet linux-2.5-import/drivers/scsi/sr.c linux-2.5-lbd/drivers/scsi/sr.c --- linux-2.5-import/drivers/scsi/sr.c Fri Aug 16 13:25:17 2002 +++ linux-2.5-lbd/drivers/scsi/sr.c Thu Aug 15 12:15:47 2002 @@ -88,7 +88,7 @@ }; Scsi_CD *scsi_CDs; -static int *sr_sizes; +static sector_t *sr_sizes; static int sr_open(struct cdrom_device_info *, int); void get_sectorsize(int); @@ -324,7 +324,7 @@ /* * request doesn't start on hw block boundary, add scatter pads */ - if ((SCpnt->request->sector % (s_size >> 9)) || (SCpnt->request_bufflen % s_size)) { + if (((unsigned int)SCpnt->request->sector % (s_size >> 9)) || (SCpnt->request_bufflen % s_size)) { printk("sr: unaligned transfer\n"); return 0; } @@ -340,7 +340,7 @@ SCpnt->cmnd[1] = (SCpnt->device->scsi_level <= SCSI_2) ? ((SCpnt->lun << 5) & 0xe0) : 0; - block = SCpnt->request->sector / (s_size >> 9); + block = (unsigned int)SCpnt->request->sector / (s_size >> 9); if (this_count > 0xffff) this_count = 0xffff; @@ -715,10 +715,10 @@ goto cleanup_dev; memset(scsi_CDs, 0, sr_template.dev_max * sizeof(Scsi_CD)); - sr_sizes = kmalloc(sr_template.dev_max * sizeof(int), GFP_ATOMIC); + sr_sizes = kmalloc(sr_template.dev_max * sizeof(sr_sizes[0]), GFP_ATOMIC); if (!sr_sizes) goto cleanup_cds; - memset(sr_sizes, 0, sr_template.dev_max * sizeof(int)); + memset(sr_sizes, 0, sr_template.dev_max * sizeof(sr_sizes[0])); return 0; cleanup_cds: diff -Nur --exclude=SCCS --exclude=BitKeeper --exclude=ChangeSet linux-2.5-import/fs/adfs/inode.c linux-2.5-lbd/fs/adfs/inode.c --- linux-2.5-import/fs/adfs/inode.c Fri Aug 16 13:25:59 2002 +++ linux-2.5-lbd/fs/adfs/inode.c Thu Aug 15 12:15:51 2002 @@ -67,7 +67,7 @@ &ADFS_I(page->mapping->host)->mmu_private); } -static int _adfs_bmap(struct address_space *mapping, long block) +static sector_t _adfs_bmap(struct address_space *mapping, sector_t block) { return generic_block_bmap(mapping, block, adfs_get_block); } diff -Nur --exclude=SCCS --exclude=BitKeeper --exclude=ChangeSet linux-2.5-import/fs/affs/file.c linux-2.5-lbd/fs/affs/file.c --- linux-2.5-import/fs/affs/file.c Fri Aug 16 13:26:03 2002 +++ linux-2.5-lbd/fs/affs/file.c Thu Aug 15 12:15:51 2002 @@ -337,10 +337,11 @@ struct buffer_head *ext_bh; u32 ext; - pr_debug("AFFS: get_block(%u, %ld)\n", (u32)inode->i_ino, block); + pr_debug("AFFS: get_block(%u, %lu)\n", (u32)inode->i_ino, (unsigned long)block); - if (block < 0) - goto err_small; + + if (block > (sector_t)0x7fffffffUL) + BUG(); if (block >= AFFS_I(inode)->i_blkcnt) { if (block > AFFS_I(inode)->i_blkcnt || !create) @@ -351,12 +352,12 @@ //lock cache affs_lock_ext(inode); - ext = block / AFFS_SB(sb)->s_hashsize; + ext = (u32)block / AFFS_SB(sb)->s_hashsize; block -= ext * AFFS_SB(sb)->s_hashsize; ext_bh = affs_get_extblock(inode, ext); if (IS_ERR(ext_bh)) goto err_ext; - map_bh(bh_result, sb, be32_to_cpu(AFFS_BLOCK(sb, ext_bh, block))); + map_bh(bh_result, sb, (sector_t)be32_to_cpu(AFFS_BLOCK(sb, ext_bh, block))); if (create) { u32 blocknr = affs_alloc_block(inode, ext_bh->b_blocknr); @@ -421,7 +422,7 @@ return cont_prepare_write(page, from, to, affs_get_block, &AFFS_I(page->mapping->host)->mmu_private); } -static int _affs_bmap(struct address_space *mapping, long block) +static sector_t _affs_bmap(struct address_space *mapping, sector_t block) { return generic_block_bmap(mapping,block,affs_get_block); } diff -Nur --exclude=SCCS --exclude=BitKeeper --exclude=ChangeSet linux-2.5-import/fs/affs/inode.c linux-2.5-lbd/fs/affs/inode.c --- linux-2.5-import/fs/affs/inode.c Fri Aug 16 13:26:03 2002 +++ linux-2.5-lbd/fs/affs/inode.c Thu Aug 15 12:15:51 2002 @@ -416,7 +416,7 @@ } affs_fix_checksum(sb, bh); mark_buffer_dirty_inode(bh, inode); - dentry->d_fsdata = (void *)bh->b_blocknr; + dentry->d_fsdata = (void *)(long)bh->b_blocknr; affs_lock_dir(dir); retval = affs_insert_hash(dir, bh); diff -Nur --exclude=SCCS --exclude=BitKeeper --exclude=ChangeSet linux-2.5-import/fs/bfs/file.c linux-2.5-lbd/fs/bfs/file.c --- linux-2.5-import/fs/bfs/file.c Fri Aug 16 13:26:03 2002 +++ linux-2.5-lbd/fs/bfs/file.c Thu Aug 15 12:15:51 2002 @@ -145,7 +145,7 @@ return block_prepare_write(page, from, to, bfs_get_block); } -static int bfs_bmap(struct address_space *mapping, long block) +static sector_t bfs_bmap(struct address_space *mapping, sector_t block) { return generic_block_bmap(mapping, block, bfs_get_block); } diff -Nur --exclude=SCCS --exclude=BitKeeper --exclude=ChangeSet linux-2.5-import/fs/buffer.c linux-2.5-lbd/fs/buffer.c --- linux-2.5-import/fs/buffer.c Fri Aug 16 13:25:57 2002 +++ linux-2.5-lbd/fs/buffer.c Thu Aug 15 12:15:51 2002 @@ -1818,7 +1818,7 @@ unsigned from, unsigned to, get_block_t *get_block) { unsigned block_start, block_end; - unsigned long block; + sector_t block; int err = 0; unsigned blocksize, bbits; struct buffer_head *bh, *head, *wait[2], **wait_bh=wait; @@ -1835,7 +1835,7 @@ head = page_buffers(page); bbits = inode->i_blkbits; - block = page->index << (PAGE_CACHE_SHIFT - bbits); + block = (sector_t)page->index << (PAGE_CACHE_SHIFT - bbits); for(bh = head, block_start = 0; bh != head || !block_start; block++, block_start=block_end, bh = bh->b_this_page) { @@ -1966,7 +1966,7 @@ int block_read_full_page(struct page *page, get_block_t *get_block) { struct inode *inode = page->mapping->host; - unsigned long iblock, lblock; + sector_t iblock, lblock; struct buffer_head *bh, *head, *arr[MAX_BUF_PER_PAGE]; unsigned int blocksize, blocks; int nr, i; @@ -1981,7 +1981,7 @@ head = page_buffers(page); blocks = PAGE_CACHE_SIZE >> inode->i_blkbits; - iblock = page->index << (PAGE_CACHE_SHIFT - inode->i_blkbits); + iblock = (sector_t)page->index << (PAGE_CACHE_SHIFT - inode->i_blkbits); lblock = (inode->i_size+blocksize-1) >> inode->i_blkbits; bh = head; nr = 0; diff -Nur --exclude=SCCS --exclude=BitKeeper --exclude=ChangeSet linux-2.5-import/fs/efs/inode.c linux-2.5-lbd/fs/efs/inode.c --- linux-2.5-import/fs/efs/inode.c Fri Aug 16 13:26:04 2002 +++ linux-2.5-lbd/fs/efs/inode.c Thu Aug 15 12:15:51 2002 @@ -19,7 +19,7 @@ { return block_read_full_page(page,efs_get_block); } -static int _efs_bmap(struct address_space *mapping, long block) +static sector_t _efs_bmap(struct address_space *mapping, sector_t block) { return generic_block_bmap(mapping,block,efs_get_block); } diff -Nur --exclude=SCCS --exclude=BitKeeper --exclude=ChangeSet linux-2.5-import/fs/ext2/inode.c linux-2.5-lbd/fs/ext2/inode.c --- linux-2.5-import/fs/ext2/inode.c Fri Aug 16 13:26:04 2002 +++ linux-2.5-lbd/fs/ext2/inode.c Thu Aug 15 12:15:51 2002 @@ -601,7 +601,7 @@ return block_prepare_write(page,from,to,ext2_get_block); } -static int ext2_bmap(struct address_space *mapping, long block) +static sector_t ext2_bmap(struct address_space *mapping, sector_t block) { return generic_block_bmap(mapping,block,ext2_get_block); } diff -Nur --exclude=SCCS --exclude=BitKeeper --exclude=ChangeSet linux-2.5-import/fs/ext3/ialloc.c linux-2.5-lbd/fs/ext3/ialloc.c --- linux-2.5-import/fs/ext3/ialloc.c Fri Aug 16 13:26:04 2002 +++ linux-2.5-lbd/fs/ext3/ialloc.c Thu Aug 15 12:15:51 2002 @@ -479,9 +479,10 @@ !(inode = iget(sb, ino)) || is_bad_inode(inode) || NEXT_ORPHAN(inode) > max_ino) { ext3_warning(sb, __FUNCTION__, - "bad orphan inode %ld! e2fsck was run?\n", ino); - printk(KERN_NOTICE "ext3_test_bit(bit=%d, block=%ld) = %d\n", - bit, bitmap_bh->b_blocknr, + "bad orphan inode %lu! e2fsck was run?\n", (unsigned long)ino); + printk(KERN_NOTICE "ext3_test_bit(bit=%d, block=%llu) = %d\n", + bit, + (unsigned long long)bitmap_bh->b_blocknr, ext3_test_bit(bit, bitmap_bh->b_data)); printk(KERN_NOTICE "inode=%p\n", inode); if (inode) { diff -Nur --exclude=SCCS --exclude=BitKeeper --exclude=ChangeSet linux-2.5-import/fs/ext3/inode.c linux-2.5-lbd/fs/ext3/inode.c --- linux-2.5-import/fs/ext3/inode.c Fri Aug 16 13:26:04 2002 +++ linux-2.5-lbd/fs/ext3/inode.c Thu Aug 15 12:15:51 2002 @@ -1167,7 +1167,7 @@ * So, if we see any bmap calls here on a modified, data-journaled file, * take extra steps to flush any blocks which might be in the cache. */ -static int ext3_bmap(struct address_space *mapping, long block) +static sector_t ext3_bmap(struct address_space *mapping, sector_t block) { struct inode *inode = mapping->host; journal_t *journal; diff -Nur --exclude=SCCS --exclude=BitKeeper --exclude=ChangeSet linux-2.5-import/fs/fat/file.c linux-2.5-lbd/fs/fat/file.c --- linux-2.5-import/fs/fat/file.c Fri Aug 16 13:26:04 2002 +++ linux-2.5-lbd/fs/fat/file.c Thu Aug 15 12:15:51 2002 @@ -59,7 +59,7 @@ BUG(); return -EIO; } - if (!(iblock % MSDOS_SB(sb)->cluster_size)) { + if (!((unsigned long)iblock % MSDOS_SB(sb)->cluster_size)) { int error; error = fat_add_cluster(inode); diff -Nur --exclude=SCCS --exclude=BitKeeper --exclude=ChangeSet linux-2.5-import/fs/fat/inode.c linux-2.5-lbd/fs/fat/inode.c --- linux-2.5-import/fs/fat/inode.c Fri Aug 16 13:26:04 2002 +++ linux-2.5-lbd/fs/fat/inode.c Thu Aug 15 12:15:51 2002 @@ -987,7 +987,7 @@ return cont_prepare_write(page,from,to,fat_get_block, &MSDOS_I(page->mapping->host)->mmu_private); } -static int _fat_bmap(struct address_space *mapping, long block) +static sector_t _fat_bmap(struct address_space *mapping, sector_t block) { return generic_block_bmap(mapping,block,fat_get_block); } diff -Nur --exclude=SCCS --exclude=BitKeeper --exclude=ChangeSet linux-2.5-import/fs/freevxfs/vxfs_subr.c linux-2.5-lbd/fs/freevxfs/vxfs_subr.c --- linux-2.5-import/fs/freevxfs/vxfs_subr.c Fri Aug 16 13:26:05 2002 +++ linux-2.5-lbd/fs/freevxfs/vxfs_subr.c Thu Aug 15 12:15:51 2002 @@ -43,7 +43,7 @@ static int vxfs_readpage(struct file *, struct page *); -static int vxfs_bmap(struct address_space *, long); +static sector_t vxfs_bmap(struct address_space *, sector_t); struct address_space_operations vxfs_aops = { .readpage = vxfs_readpage, @@ -186,8 +186,8 @@ * Locking status: * We are under the bkl. */ -static int -vxfs_bmap(struct address_space *mapping, long block) +static sector_t +vxfs_bmap(struct address_space *mapping, sector_t block) { return generic_block_bmap(mapping, block, vxfs_getblk); } diff -Nur --exclude=SCCS --exclude=BitKeeper --exclude=ChangeSet linux-2.5-import/fs/hfs/inode.c linux-2.5-lbd/fs/hfs/inode.c --- linux-2.5-import/fs/hfs/inode.c Fri Aug 16 13:26:05 2002 +++ linux-2.5-lbd/fs/hfs/inode.c Thu Aug 15 12:15:51 2002 @@ -242,7 +242,7 @@ return cont_prepare_write(page,from,to,hfs_get_block, &HFS_I(page->mapping->host)->mmu_private); } -static int hfs_bmap(struct address_space *mapping, long block) +static sector_t hfs_bmap(struct address_space *mapping, sector_t block) { return generic_block_bmap(mapping,block,hfs_get_block); } diff -Nur --exclude=SCCS --exclude=BitKeeper --exclude=ChangeSet linux-2.5-import/fs/hpfs/file.c linux-2.5-lbd/fs/hpfs/file.c --- linux-2.5-import/fs/hpfs/file.c Fri Aug 16 13:26:05 2002 +++ linux-2.5-lbd/fs/hpfs/file.c Thu Aug 15 12:15:51 2002 @@ -111,7 +111,7 @@ return cont_prepare_write(page,from,to,hpfs_get_block, &hpfs_i(page->mapping->host)->mmu_private); } -static int _hpfs_bmap(struct address_space *mapping, long block) +static sector_t _hpfs_bmap(struct address_space *mapping, sector_t block) { return generic_block_bmap(mapping,block,hpfs_get_block); } diff -Nur --exclude=SCCS --exclude=BitKeeper --exclude=ChangeSet linux-2.5-import/fs/inode.c linux-2.5-lbd/fs/inode.c --- linux-2.5-import/fs/inode.c Fri Aug 16 13:25:57 2002 +++ linux-2.5-lbd/fs/inode.c Thu Aug 15 12:15:51 2002 @@ -917,9 +917,9 @@ * file. */ -int bmap(struct inode * inode, int block) +sector_t bmap(struct inode * inode, sector_t block) { - int res = 0; + sector_t res = 0; if (inode->i_mapping->a_ops->bmap) res = inode->i_mapping->a_ops->bmap(inode->i_mapping, block); return res; diff -Nur --exclude=SCCS --exclude=BitKeeper --exclude=ChangeSet linux-2.5-import/fs/isofs/inode.c linux-2.5-lbd/fs/isofs/inode.c --- linux-2.5-import/fs/isofs/inode.c Fri Aug 16 13:26:06 2002 +++ linux-2.5-lbd/fs/isofs/inode.c Thu Aug 15 12:15:51 2002 @@ -970,7 +970,7 @@ */ if (b_off > ((inode->i_size + PAGE_CACHE_SIZE - 1) >> ISOFS_BUFFER_BITS(inode))) { printk("isofs_get_blocks: block >= EOF (%ld, %ld)\n", - iblock, (unsigned long) inode->i_size); + (long)iblock, (unsigned long) inode->i_size); goto abort; } @@ -992,7 +992,7 @@ if (++section > 100) { printk("isofs_get_blocks: More than 100 file sections ?!?, aborting...\n"); printk("isofs_get_blocks: ino=%lu block=%ld firstext=%u sect_size=%u nextino=%lu\n", - inode->i_ino, iblock, firstext, (unsigned) sect_size, nextino); + inode->i_ino, (long)iblock, firstext, (unsigned) sect_size, nextino); goto abort; } } @@ -1044,9 +1044,9 @@ return 0; } -struct buffer_head *isofs_bread(struct inode *inode, unsigned int block) +struct buffer_head *isofs_bread(struct inode *inode, sector_t block) { - unsigned int blknr = isofs_bmap(inode, block); + sector_t blknr = isofs_bmap(inode, block); if (!blknr) return NULL; return sb_bread(inode->i_sb, blknr); @@ -1057,7 +1057,7 @@ return block_read_full_page(page,isofs_get_block); } -static int _isofs_bmap(struct address_space *mapping, long block) +static sector_t _isofs_bmap(struct address_space *mapping, sector_t block) { return generic_block_bmap(mapping,block,isofs_get_block); } diff -Nur --exclude=SCCS --exclude=BitKeeper --exclude=ChangeSet linux-2.5-import/fs/jbd/commit.c linux-2.5-lbd/fs/jbd/commit.c --- linux-2.5-import/fs/jbd/commit.c Fri Aug 16 13:26:06 2002 +++ linux-2.5-lbd/fs/jbd/commit.c Thu Aug 15 12:15:51 2002 @@ -355,8 +355,8 @@ } bh = jh2bh(descriptor); - jbd_debug(4, "JBD: got buffer %ld (%p)\n", - bh->b_blocknr, bh->b_data); + jbd_debug(4, "JBD: got buffer %llu (%p)\n", + (unsigned long long)bh->b_blocknr, bh->b_data); header = (journal_header_t *)&bh->b_data[0]; header->h_magic = htonl(JFS_MAGIC_NUMBER); header->h_blocktype = htonl(JFS_DESCRIPTOR_BLOCK); diff -Nur --exclude=SCCS --exclude=BitKeeper --exclude=ChangeSet linux-2.5-import/fs/jbd/revoke.c linux-2.5-lbd/fs/jbd/revoke.c --- linux-2.5-import/fs/jbd/revoke.c Fri Aug 16 13:26:06 2002 +++ linux-2.5-lbd/fs/jbd/revoke.c Thu Aug 15 12:15:51 2002 @@ -388,7 +388,7 @@ record = find_revoke_record(journal, bh->b_blocknr); if (record) { jbd_debug(4, "cancelled existing revoke on " - "blocknr %lu\n", bh->b_blocknr); + "blocknr %llu\n", (u64)bh->b_blocknr); list_del(&record->hash); kmem_cache_free(revoke_record_cache, record); did_revoke = 1; diff -Nur --exclude=SCCS --exclude=BitKeeper --exclude=ChangeSet linux-2.5-import/fs/jfs/inode.c linux-2.5-lbd/fs/jfs/inode.c --- linux-2.5-import/fs/jfs/inode.c Fri Aug 16 13:26:06 2002 +++ linux-2.5-lbd/fs/jfs/inode.c Thu Aug 15 12:15:52 2002 @@ -282,7 +282,7 @@ return block_prepare_write(page, from, to, jfs_get_block); } -static int jfs_bmap(struct address_space *mapping, long block) +static sector_t jfs_bmap(struct address_space *mapping, sector_t block) { return generic_block_bmap(mapping, block, jfs_get_block); } diff -Nur --exclude=SCCS --exclude=BitKeeper --exclude=ChangeSet linux-2.5-import/fs/jfs/jfs_metapage.c linux-2.5-lbd/fs/jfs/jfs_metapage.c --- linux-2.5-import/fs/jfs/jfs_metapage.c Fri Aug 16 13:26:07 2002 +++ linux-2.5-lbd/fs/jfs/jfs_metapage.c Thu Aug 15 12:15:52 2002 @@ -256,7 +256,7 @@ return block_prepare_write(page, from, to, direct_get_block); } -static int direct_bmap(struct address_space *mapping, long block) +static sector_t direct_bmap(struct address_space *mapping, sector_t block) { return generic_block_bmap(mapping, block, direct_get_block); } diff -Nur --exclude=SCCS --exclude=BitKeeper --exclude=ChangeSet linux-2.5-import/fs/minix/inode.c linux-2.5-lbd/fs/minix/inode.c --- linux-2.5-import/fs/minix/inode.c Fri Aug 16 13:26:08 2002 +++ linux-2.5-lbd/fs/minix/inode.c Thu Aug 15 12:15:52 2002 @@ -328,7 +328,7 @@ { return block_prepare_write(page,from,to,minix_get_block); } -static int minix_bmap(struct address_space *mapping, long block) +static sector_t minix_bmap(struct address_space *mapping, sector_t block) { return generic_block_bmap(mapping,block,minix_get_block); } diff -Nur --exclude=SCCS --exclude=BitKeeper --exclude=ChangeSet linux-2.5-import/fs/partitions/acorn.c linux-2.5-lbd/fs/partitions/acorn.c --- linux-2.5-import/fs/partitions/acorn.c Fri Aug 16 13:26:10 2002 +++ linux-2.5-lbd/fs/partitions/acorn.c Thu Aug 15 12:16:10 2002 @@ -17,10 +17,10 @@ static struct adfs_discrecord * adfs_partition(struct parsed_partitions *state, char *name, char *data, - unsigned long first_sector, int slot) + sector_t first_sector, int slot) { struct adfs_discrecord *dr; - unsigned int nr_sects; + sector_t nr_sects; if (adfs_checkbblk(data)) return NULL; @@ -42,7 +42,7 @@ #ifdef CONFIG_ACORN_PARTITION_RISCIX static int riscix_partition(struct parsed_partitions *state, struct block_device *bdev, - unsigned long first_sect, int slot, unsigned long nr_sects) + sector_t first_sect, int slot, sector_t nr_sects) { Sector sect; struct riscix_record *rr; @@ -55,7 +55,7 @@ if (rr->magic == RISCIX_MAGIC) { - unsigned long size = nr_sects > 2 ? 2 : nr_sects; + sector_t size = nr_sects > 2 ? 2 : nr_sects; int part; printk(" <"); @@ -83,11 +83,11 @@ static int linux_partition(struct parsed_partitions *state, struct block_device *bdev, - unsigned long first_sect, int slot, unsigned long nr_sects) + sector_t first_sect, int slot, sector_t nr_sects) { Sector sect; struct linux_part *linuxp; - unsigned long size = nr_sects > 2 ? 2 : nr_sects; + sector_t size = nr_sects > 2 ? 2 : nr_sects; printk(" [Linux]"); @@ -117,7 +117,7 @@ static int adfspart_check_CUMANA(struct parsed_partitions *state, struct block_device *bdev) { - unsigned long first_sector = 0; + sector_t first_sector = 0; unsigned int start_blk = 0; Sector sect; unsigned char *data; @@ -209,7 +209,8 @@ static int adfspart_check_ADFS(struct parsed_partitions *state, struct block_device *bdev) { - unsigned long start_sect, nr_sects, sectscyl, heads; + sector_t start_sect, nr_sects, sectscyl; + unsigned heads; Sector sect; unsigned char *data; struct adfs_discrecord *dr; @@ -268,7 +269,7 @@ #endif #ifdef CONFIG_ACORN_PARTITION_ICS -static int adfspart_check_ICSLinux(struct block_device *bdev, unsigned long block) +static int adfspart_check_ICSLinux(struct block_device *bdev, sector_t block) { Sector sect; unsigned char *data = read_dev_sector(bdev, block, §); @@ -306,7 +307,7 @@ /* * Try ICS style partitions - sector 0 contains partition info. */ - data = read_dev_sector(bdev, 0, §); + data = read_dev_sector(bdev, (sector_t)0, §); if (!data) return -1; @@ -374,7 +375,7 @@ int slot = 1; int i; - data = read_dev_sector(bdev, 0, §); + data = read_dev_sector(bdev, (sector_t)0, §); if (!data) return -1; diff -Nur --exclude=SCCS --exclude=BitKeeper --exclude=ChangeSet linux-2.5-import/fs/partitions/check.c linux-2.5-lbd/fs/partitions/check.c --- linux-2.5-import/fs/partitions/check.c Fri Aug 16 13:26:10 2002 +++ linux-2.5-lbd/fs/partitions/check.c Fri Aug 16 09:51:56 2002 @@ -415,14 +415,14 @@ */ void register_disk(struct gendisk *gdev, kdev_t dev, unsigned minors, - struct block_device_operations *ops, long size) + struct block_device_operations *ops, sector_t size) { if (!gdev) return; grok_partitions(dev, size); } -void grok_partitions(kdev_t dev, long size) +void grok_partitions(kdev_t dev, sector_t size) { struct block_device *bdev; struct gendisk *g = get_gendisk(dev); diff -Nur --exclude=SCCS --exclude=BitKeeper --exclude=ChangeSet linux-2.5-import/fs/partitions/check.h linux-2.5-lbd/fs/partitions/check.h --- linux-2.5-import/fs/partitions/check.h Fri Aug 16 13:26:10 2002 +++ linux-2.5-lbd/fs/partitions/check.h Thu Aug 15 12:16:16 2002 @@ -5,14 +5,13 @@ * add_gd_partition adds a partitions details to the devices partition * description. */ - enum { MAX_PART = 256 }; struct parsed_partitions { char name[40]; struct { - unsigned long from; - unsigned long size; + sector_t from; + sector_t size; int flags; } parts[MAX_PART]; int next; @@ -20,7 +19,7 @@ }; static inline void -put_partition(struct parsed_partitions *p, int n, int from, int size) +put_partition(struct parsed_partitions *p, int n, sector_t from, sector_t size) { if (n < p->limit) { p->parts[n].from = from; diff -Nur --exclude=SCCS --exclude=BitKeeper --exclude=ChangeSet linux-2.5-import/fs/partitions/efi.c linux-2.5-lbd/fs/partitions/efi.c --- linux-2.5-import/fs/partitions/efi.c Fri Aug 16 13:26:10 2002 +++ linux-2.5-lbd/fs/partitions/efi.c Thu Aug 15 12:16:16 2002 @@ -629,6 +629,7 @@ kfree(gpt); printk("\n"); return 1; + } /* diff -Nur --exclude=SCCS --exclude=BitKeeper --exclude=ChangeSet linux-2.5-import/fs/partitions/sun.c linux-2.5-lbd/fs/partitions/sun.c --- linux-2.5-import/fs/partitions/sun.c Fri Aug 16 13:26:11 2002 +++ linux-2.5-lbd/fs/partitions/sun.c Thu Aug 15 12:16:16 2002 @@ -63,7 +63,7 @@ /* All Sun disks have 8 partition entries */ spc = be16_to_cpu(label->ntrks) * be16_to_cpu(label->nsect); for(i=0; i < 8; i++, p++) { - unsigned long st_sector; + sector_t st_sector; int num_sectors; st_sector = be32_to_cpu(p->start_cylinder) * spc; diff -Nur --exclude=SCCS --exclude=BitKeeper --exclude=ChangeSet linux-2.5-import/fs/qnx4/inode.c linux-2.5-lbd/fs/qnx4/inode.c --- linux-2.5-import/fs/qnx4/inode.c Fri Aug 16 13:26:11 2002 +++ linux-2.5-lbd/fs/qnx4/inode.c Thu Aug 15 12:16:16 2002 @@ -444,7 +444,7 @@ return cont_prepare_write(page, from, to, qnx4_get_block, &qnx4_inode->mmu_private); } -static int qnx4_bmap(struct address_space *mapping, long block) +static sector_t qnx4_bmap(struct address_space *mapping, sector_t block) { return generic_block_bmap(mapping,block,qnx4_get_block); } diff -Nur --exclude=SCCS --exclude=BitKeeper --exclude=ChangeSet linux-2.5-import/fs/reiserfs/inode.c linux-2.5-lbd/fs/reiserfs/inode.c --- linux-2.5-import/fs/reiserfs/inode.c Fri Aug 16 13:26:11 2002 +++ linux-2.5-lbd/fs/reiserfs/inode.c Thu Aug 15 12:16:36 2002 @@ -2045,7 +2045,7 @@ } -static int reiserfs_aop_bmap(struct address_space *as, long block) { +static sector_t reiserfs_aop_bmap(struct address_space *as, sector_t block) { return generic_block_bmap(as, block, reiserfs_bmap) ; } diff -Nur --exclude=SCCS --exclude=BitKeeper --exclude=ChangeSet linux-2.5-import/fs/reiserfs/journal.c linux-2.5-lbd/fs/reiserfs/journal.c --- linux-2.5-import/fs/reiserfs/journal.c Fri Aug 16 13:26:11 2002 +++ linux-2.5-lbd/fs/reiserfs/journal.c Thu Aug 15 12:16:36 2002 @@ -1017,15 +1017,15 @@ ** is not marked JDirty_wait */ if ((!was_jwait) && !buffer_locked(saved_bh)) { -printk("journal-813: BAD! buffer %lu %cdirty %cjwait, not in a newer tranasction\n", saved_bh->b_blocknr, +printk("journal-813: BAD! buffer %llu %cdirty %cjwait, not in a newer tranasction\n", (unsigned long long)saved_bh->b_blocknr, was_dirty ? ' ' : '!', was_jwait ? ' ' : '!') ; } /* kupdate_one_transaction waits on the buffers it is writing, so we ** should never see locked buffers here */ if (buffer_locked(saved_bh)) { - printk("clm-2083: locked buffer %lu in flush_journal_list\n", - saved_bh->b_blocknr) ; + printk("clm-2083: locked buffer %llu in flush_journal_list\n", + (unsigned long long)saved_bh->b_blocknr) ; wait_on_buffer(saved_bh) ; if (!buffer_uptodate(saved_bh)) { reiserfs_panic(s, "journal-923: buffer write failed\n") ; @@ -1038,8 +1038,8 @@ submit_logged_buffer(saved_bh) ; count++ ; } else { - printk("clm-2082: Unable to flush buffer %lu in flush_journal_list\n", - saved_bh->b_blocknr) ; + printk("clm-2082: Unable to flush buffer %llu in flush_journal_list\n", + (unsigned long long)saved_bh->b_blocknr) ; } free_cnode: last = cn ; @@ -2364,7 +2364,7 @@ ** could get to disk too early. NOT GOOD. */ if (!prepared || buffer_locked(bh)) { - printk("journal-1777: buffer %lu bad state %cPREPARED %cLOCKED %cDIRTY %cJDIRTY_WAIT\n", bh->b_blocknr, prepared ? ' ' : '!', + printk("journal-1777: buffer %llu bad state %cPREPARED %cLOCKED %cDIRTY %cJDIRTY_WAIT\n", (unsigned long long)bh->b_blocknr, prepared ? ' ' : '!', buffer_locked(bh) ? ' ' : '!', buffer_dirty(bh) ? ' ' : '!', buffer_journal_dirty(bh) ? ' ' : '!') ; diff -Nur --exclude=SCCS --exclude=BitKeeper --exclude=ChangeSet linux-2.5-import/fs/reiserfs/prints.c linux-2.5-lbd/fs/reiserfs/prints.c --- linux-2.5-import/fs/reiserfs/prints.c Fri Aug 16 13:26:11 2002 +++ linux-2.5-lbd/fs/reiserfs/prints.c Thu Aug 15 12:16:36 2002 @@ -139,8 +139,8 @@ static void sprintf_buffer_head (char * buf, struct buffer_head * bh) { - sprintf (buf, "dev %s, size %d, blocknr %ld, count %d, state 0x%lx, page %p, (%s, %s, %s)", - bdevname (bh->b_bdev), bh->b_size, bh->b_blocknr, + sprintf (buf, "dev %s, size %d, blocknr %llu, count %d, state 0x%lx, page %p, (%s, %s, %s)", + bdevname (bh->b_bdev), bh->b_size, (unsigned long long)bh->b_blocknr, atomic_read (&(bh->b_count)), bh->b_state, bh->b_page, buffer_uptodate (bh) ? "UPTODATE" : "!UPTODATE", @@ -367,7 +367,7 @@ if (tb) { while (tb->insert_size[h]) { bh = PATH_H_PBUFFER (path, h); - printk ("block %lu (level=%d), position %d\n", bh ? bh->b_blocknr : 0, + printk ("block %llu (level=%d), position %d\n", bh ? (unsigned long long)bh->b_blocknr : 0LL, bh ? B_LEVEL (bh) : 0, PATH_H_POSITION (path, h)); h ++; } @@ -377,8 +377,8 @@ printk ("Offset Bh (b_blocknr, b_count) Position Nr_item\n"); while ( offset > ILLEGAL_PATH_ELEMENT_OFFSET ) { bh = PATH_OFFSET_PBUFFER (path, offset); - printk ("%6d %10p (%9lu, %7d) %8d %7d\n", offset, - bh, bh ? bh->b_blocknr : 0, bh ? atomic_read (&(bh->b_count)) : 0, + printk ("%6d %10p (%9llu, %7d) %8d %7d\n", offset, + bh, bh ? (unsigned long long)bh->b_blocknr : 0LL, bh ? atomic_read (&(bh->b_count)) : 0, PATH_OFFSET_POSITION (path, offset), bh ? B_NR_ITEMS (bh) : -1); offset --; @@ -510,8 +510,8 @@ return 1; } - printk ("%s\'s super block is in block %ld\n", bdevname (bh->b_bdev), - bh->b_blocknr); + printk ("%s\'s super block is in block %llu\n", bdevname (bh->b_bdev), + (unsigned long long)bh->b_blocknr); printk ("Reiserfs version %s\n", version ); printk ("Block count %u\n", sb_block_count(rs)); printk ("Blocksize %d\n", sb_blocksize(rs)); @@ -547,8 +547,8 @@ if (memcmp(desc->j_magic, JOURNAL_DESC_MAGIC, 8)) return 1; - printk ("Desc block %lu (j_trans_id %d, j_mount_id %d, j_len %d)", - bh->b_blocknr, desc->j_trans_id, desc->j_mount_id, desc->j_len); + printk ("Desc block %llu (j_trans_id %d, j_mount_id %d, j_len %d)", + (unsigned long long)bh->b_blocknr, desc->j_trans_id, desc->j_mount_id, desc->j_len); return 0; } @@ -573,7 +573,7 @@ if (print_internal (bh, first, last)) if (print_super_block (bh)) if (print_desc_block (bh)) - printk ("Block %ld contains unformatted data\n", bh->b_blocknr); + printk ("Block %llu contains unformatted data\n", (unsigned long long)bh->b_blocknr); } @@ -608,19 +608,19 @@ tbFh = 0; } sprintf (print_tb_buf + strlen (print_tb_buf), - "* %d * %3ld(%2d) * %3ld(%2d) * %3ld(%2d) * %5ld * %5ld * %5ld * %5ld * %5ld *\n", + "* %d * %3lld(%2d) * %3lld(%2d) * %3lld(%2d) * %5lld * %5lld * %5lld * %5lld * %5lld *\n", h, - (tbSh) ? (tbSh->b_blocknr):(-1), + (tbSh) ? (long long)(tbSh->b_blocknr):(-1LL), (tbSh) ? atomic_read (&(tbSh->b_count)) : -1, - (tb->L[h]) ? (tb->L[h]->b_blocknr):(-1), + (tb->L[h]) ? (long long)(tb->L[h]->b_blocknr):(-1LL), (tb->L[h]) ? atomic_read (&(tb->L[h]->b_count)) : -1, - (tb->R[h]) ? (tb->R[h]->b_blocknr):(-1), + (tb->R[h]) ? (long long)(tb->R[h]->b_blocknr):(-1LL), (tb->R[h]) ? atomic_read (&(tb->R[h]->b_count)) : -1, - (tbFh) ? (tbFh->b_blocknr):(-1), - (tb->FL[h]) ? (tb->FL[h]->b_blocknr):(-1), - (tb->FR[h]) ? (tb->FR[h]->b_blocknr):(-1), - (tb->CFL[h]) ? (tb->CFL[h]->b_blocknr):(-1), - (tb->CFR[h]) ? (tb->CFR[h]->b_blocknr):(-1)); + (tbFh) ? (long long)(tbFh->b_blocknr):(-1LL), + (tb->FL[h]) ? (long long)(tb->FL[h]->b_blocknr):(-1LL), + (tb->FR[h]) ? (long long)(tb->FR[h]->b_blocknr):(-1LL), + (tb->CFL[h]) ? (long long)(tb->CFL[h]->b_blocknr):(-1LL), + (tb->CFR[h]) ? (long long)(tb->CFR[h]->b_blocknr):(-1LL)); } sprintf (print_tb_buf + strlen (print_tb_buf), @@ -647,7 +647,7 @@ h = 0; for (i = 0; i < sizeof (tb->FEB) / sizeof (tb->FEB[0]); i ++) sprintf (print_tb_buf + strlen (print_tb_buf), - "%p (%lu %d)%s", tb->FEB[i], tb->FEB[i] ? tb->FEB[i]->b_blocknr : 0, + "%p (%llu %d)%s", tb->FEB[i], tb->FEB[i] ? (unsigned long long)tb->FEB[i]->b_blocknr : 0ULL, tb->FEB[i] ? atomic_read (&(tb->FEB[i]->b_count)) : 0, (i == sizeof (tb->FEB) / sizeof (tb->FEB[0]) - 1) ? "\n" : ", "); diff -Nur --exclude=SCCS --exclude=BitKeeper --exclude=ChangeSet linux-2.5-import/fs/reiserfs/super.c linux-2.5-lbd/fs/reiserfs/super.c --- linux-2.5-import/fs/reiserfs/super.c Fri Aug 16 13:26:11 2002 +++ linux-2.5-lbd/fs/reiserfs/super.c Thu Aug 15 12:16:36 2002 @@ -838,8 +838,8 @@ rs = (struct reiserfs_super_block *)bh->b_data; if (sb_blocksize(rs) != s->s_blocksize) { printk ("sh-2011: read_super_block: " - "can't find a reiserfs filesystem on (dev %s, block %lu, size %lu)\n", - reiserfs_bdevname (s), bh->b_blocknr, s->s_blocksize); + "can't find a reiserfs filesystem on (dev %s, block %Lu, size %lu)\n", + reiserfs_bdevname (s), (unsigned long long)bh->b_blocknr, s->s_blocksize); brelse (bh); return 1; } @@ -902,7 +902,7 @@ ll_rw_block(READ, 1, &(SB_AP_BITMAP(s)[i])) ; wait_on_buffer(SB_AP_BITMAP(s)[i]) ; if (!buffer_uptodate(SB_AP_BITMAP(s)[i])) { - printk("reread_meta_blocks, error reading bitmap block number %d at %ld\n", i, SB_AP_BITMAP(s)[i]->b_blocknr) ; + printk("reread_meta_blocks, error reading bitmap block number %d at %lld\n", i, (long long)SB_AP_BITMAP(s)[i]->b_blocknr) ; return 1 ; } } diff -Nur --exclude=SCCS --exclude=BitKeeper --exclude=ChangeSet linux-2.5-import/fs/sysv/itree.c linux-2.5-lbd/fs/sysv/itree.c --- linux-2.5-import/fs/sysv/itree.c Fri Aug 16 13:26:12 2002 +++ linux-2.5-lbd/fs/sysv/itree.c Thu Aug 15 12:16:36 2002 @@ -459,7 +459,7 @@ { return block_prepare_write(page,from,to,get_block); } -static int sysv_bmap(struct address_space *mapping, long block) +static sector_t sysv_bmap(struct address_space *mapping, sector_t block) { return generic_block_bmap(mapping,block,get_block); } diff -Nur --exclude=SCCS --exclude=BitKeeper --exclude=ChangeSet linux-2.5-import/fs/udf/inode.c linux-2.5-lbd/fs/udf/inode.c --- linux-2.5-import/fs/udf/inode.c Fri Aug 16 13:26:12 2002 +++ linux-2.5-lbd/fs/udf/inode.c Thu Aug 15 12:16:36 2002 @@ -146,7 +146,7 @@ return block_prepare_write(page, from, to, udf_get_block); } -static int udf_bmap(struct address_space *mapping, long block) +static sector_t udf_bmap(struct address_space *mapping, sector_t block) { return generic_block_bmap(mapping,block,udf_get_block); } diff -Nur --exclude=SCCS --exclude=BitKeeper --exclude=ChangeSet linux-2.5-import/fs/ufs/inode.c linux-2.5-lbd/fs/ufs/inode.c --- linux-2.5-import/fs/ufs/inode.c Wed Aug 21 11:07:48 2002 +++ linux-2.5-lbd/fs/ufs/inode.c Thu Aug 22 08:47:12 2002 @@ -457,7 +457,7 @@ { return block_prepare_write(page,from,to,ufs_getfrag_block); } -static int ufs_bmap(struct address_space *mapping, long block) +static sector_t ufs_bmap(struct address_space *mapping, sector_t block) { return generic_block_bmap(mapping,block,ufs_getfrag_block); } diff -Nur --exclude=SCCS --exclude=BitKeeper --exclude=ChangeSet linux-2.5-import/include/asm-i386/types.h linux-2.5-lbd/include/asm-i386/types.h --- linux-2.5-import/include/asm-i386/types.h Fri Aug 16 13:26:23 2002 +++ linux-2.5-lbd/include/asm-i386/types.h Thu Aug 15 12:16:39 2002 @@ -52,6 +52,11 @@ #endif typedef u64 dma64_addr_t; +#ifdef CONFIG_LBD +typedef u64 sector_t; +#define HAVE_SECTOR_T +#endif + #endif /* __KERNEL__ */ #endif diff -Nur --exclude=SCCS --exclude=BitKeeper --exclude=ChangeSet linux-2.5-import/include/asm-ppc/types.h linux-2.5-lbd/include/asm-ppc/types.h --- linux-2.5-import/include/asm-ppc/types.h Fri Aug 16 13:26:38 2002 +++ linux-2.5-lbd/include/asm-ppc/types.h Thu Aug 15 12:16:43 2002 @@ -48,6 +48,11 @@ typedef u32 dma_addr_t; typedef u64 dma64_addr_t; +#ifdef CONFIG_LBD +typedef u64 sector_t; +#define HAVE_SECTOR_T +#endif + #endif /* __KERNEL__ */ /* diff -Nur --exclude=SCCS --exclude=BitKeeper --exclude=ChangeSet linux-2.5-import/include/linux/blkdev.h linux-2.5-lbd/include/linux/blkdev.h --- linux-2.5-import/include/linux/blkdev.h Mon Aug 19 13:07:08 2002 +++ linux-2.5-lbd/include/linux/blkdev.h Thu Aug 22 08:47:12 2002 @@ -37,7 +37,7 @@ int errors; sector_t sector; unsigned long nr_sectors; - unsigned long hard_sector; /* the hard_* are block layer + sector_t hard_sector; /* the hard_* are block layer * internals, no driver should * touch them */ @@ -281,10 +281,10 @@ extern struct sec_size * blk_sec[MAX_BLKDEV]; extern struct blk_dev_struct blk_dev[MAX_BLKDEV]; -extern void grok_partitions(kdev_t dev, long size); +extern void grok_partitions(kdev_t dev, sector_t size); extern int wipe_partitions(kdev_t dev); -extern void register_disk(struct gendisk *dev, kdev_t first, unsigned minors, struct block_device_operations *ops, long size); extern void check_partition(struct gendisk *disk, struct block_device *bdev); +extern void register_disk(struct gendisk *dev, kdev_t first, unsigned minors, struct block_device_operations *ops, sector_t size); extern void generic_make_request(struct bio *bio); extern inline request_queue_t *bdev_get_queue(struct block_device *bdev); extern void blk_put_request(struct request *); @@ -344,7 +344,7 @@ extern void blk_queue_free_tags(request_queue_t *); extern void blk_queue_invalidate_tags(request_queue_t *); -extern int * blk_size[MAX_BLKDEV]; /* in units of 1024 bytes */ +extern sector_t *blk_size[MAX_BLKDEV]; /* in units of 1024 bytes */ #define MAX_PHYS_SEGMENTS 128 #define MAX_HW_SEGMENTS 128 @@ -403,5 +403,21 @@ { page_cache_release(p.v); } + +#ifdef CONFIG_LBD +# include <asm/div64.h> +# define sector_div(a, b) do_div(a, b) +#else +# define sector_div(n, b)( \ +{ \ + int _res; \ + _res = (n) % (b); \ + (n) /= (b); \ + _res; \ +} \ +) +#endif + + #endif diff -Nur --exclude=SCCS --exclude=BitKeeper --exclude=ChangeSet linux-2.5-import/include/linux/fs.h linux-2.5-lbd/include/linux/fs.h --- linux-2.5-import/include/linux/fs.h Wed Aug 21 11:07:49 2002 +++ linux-2.5-lbd/include/linux/fs.h Thu Aug 22 08:47:12 2002 @@ -304,7 +304,7 @@ int (*prepare_write)(struct file *, struct page *, unsigned, unsigned); int (*commit_write)(struct file *, struct page *, unsigned, unsigned); /* Unfortunately this kludge is needed for FIBMAP. Don't use it */ - int (*bmap)(struct address_space *, long); + sector_t (*bmap)(struct address_space *, sector_t); int (*invalidatepage) (struct page *, unsigned long); int (*releasepage) (struct page *, int); int (*direct_IO)(int, struct inode *, char *buf, @@ -355,7 +355,7 @@ int bd_holders; struct block_device * bd_contains; unsigned bd_block_size; - unsigned long bd_offset; + sector_t bd_offset; unsigned bd_part_count; int bd_invalidated; }; @@ -1138,7 +1138,7 @@ extern int filemap_fdatawrite(struct address_space *); extern int filemap_fdatawait(struct address_space *); extern void sync_supers(void); -extern int bmap(struct inode *, int); +extern sector_t bmap(struct inode *, sector_t); extern int notify_change(struct dentry *, struct iattr *); extern int permission(struct inode *, int); extern int vfs_permission(struct inode *, int); diff -Nur --exclude=SCCS --exclude=BitKeeper --exclude=ChangeSet linux-2.5-import/include/linux/genhd.h linux-2.5-lbd/include/linux/genhd.h --- linux-2.5-import/include/linux/genhd.h Fri Aug 16 13:26:57 2002 +++ linux-2.5-lbd/include/linux/genhd.h Thu Aug 15 12:16:47 2002 @@ -59,8 +59,8 @@ # include <linux/devfs_fs_kernel.h> struct hd_struct { - unsigned long start_sect; - unsigned long nr_sects; + sector_t start_sect; + sector_t nr_sects; devfs_handle_t de; /* primary (master) devfs entry */ int number; /* stupid old code wastes space */ struct device hd_driverfs_dev; /* support driverfs hiearchy */ @@ -90,7 +90,7 @@ extern void add_gendisk(struct gendisk *gp); extern void del_gendisk(struct gendisk *gp); extern struct gendisk *get_gendisk(kdev_t dev); -static inline unsigned long get_start_sect(struct block_device *bdev) +static inline sector_t get_start_sect(struct block_device *bdev) { return bdev->bd_offset; } diff -Nur --exclude=SCCS --exclude=BitKeeper --exclude=ChangeSet linux-2.5-import/include/linux/iso_fs.h linux-2.5-lbd/include/linux/iso_fs.h --- linux-2.5-import/include/linux/iso_fs.h Fri Aug 16 13:26:58 2002 +++ linux-2.5-lbd/include/linux/iso_fs.h Thu Aug 15 12:16:48 2002 @@ -230,7 +230,7 @@ int get_acorn_filename(struct iso_directory_record *, char *, struct inode *); extern struct dentry *isofs_lookup(struct inode *, struct dentry *); -extern struct buffer_head *isofs_bread(struct inode *, unsigned int); +extern struct buffer_head *isofs_bread(struct inode *, sector_t); extern int isofs_get_blocks(struct inode *, sector_t, struct buffer_head **, unsigned long); extern struct inode_operations isofs_dir_inode_operations; diff -Nur --exclude=SCCS --exclude=BitKeeper --exclude=ChangeSet linux-2.5-import/include/linux/loop.h linux-2.5-lbd/include/linux/loop.h --- linux-2.5-import/include/linux/loop.h Fri Aug 16 13:26:59 2002 +++ linux-2.5-lbd/include/linux/loop.h Thu Aug 15 12:16:48 2002 @@ -33,7 +33,7 @@ int lo_flags; int (*transfer)(struct loop_device *, int cmd, char *raw_buf, char *loop_buf, int size, - int real_block); + sector_t real_block); char lo_name[LO_NAME_SIZE]; char lo_encrypt_key[LO_KEY_SIZE]; __u32 lo_init[2]; @@ -121,7 +121,7 @@ struct loop_func_table { int number; /* filter type */ int (*transfer)(struct loop_device *lo, int cmd, char *raw_buf, - char *loop_buf, int size, int real_block); + char *loop_buf, int size, sector_t real_block); int (*init)(struct loop_device *, struct loop_info *); /* release is called from loop_unregister_transfer or clr_fd */ int (*release)(struct loop_device *); diff -Nur --exclude=SCCS --exclude=BitKeeper --exclude=ChangeSet linux-2.5-import/include/linux/raid/md.h linux-2.5-lbd/include/linux/raid/md.h --- linux-2.5-import/include/linux/raid/md.h Fri Aug 16 13:27:06 2002 +++ linux-2.5-lbd/include/linux/raid/md.h Thu Aug 15 12:16:49 2002 @@ -60,7 +60,7 @@ #define MD_MINOR_VERSION 90 #define MD_PATCHLEVEL_VERSION 0 -extern int md_size[MAX_MD_DEVS]; +extern sector_t md_size[MAX_MD_DEVS]; extern struct hd_struct md_hd_struct[MAX_MD_DEVS]; extern char * partition_name (kdev_t dev); diff -Nur --exclude=SCCS --exclude=BitKeeper --exclude=ChangeSet linux-2.5-import/include/linux/raid/md_k.h linux-2.5-lbd/include/linux/raid/md_k.h --- linux-2.5-import/include/linux/raid/md_k.h Fri Aug 16 13:27:06 2002 +++ linux-2.5-lbd/include/linux/raid/md_k.h Thu Aug 15 12:16:49 2002 @@ -144,7 +144,7 @@ { struct list_head same_set; /* RAID devices within the same set */ - unsigned long size; /* Device size (in blocks) */ + sector_t size; /* Device size (in blocks) */ mddev_t *mddev; /* RAID array if running */ unsigned long last_events; /* IO event timestamp */ @@ -152,7 +152,7 @@ struct page *sb_page; mdp_super_t *sb; - unsigned long sb_offset; + sector_t sb_offset; int alias_device; /* device alias to the same disk */ int faulty; /* if faulty do not issue IO requests */ @@ -348,5 +348,5 @@ __wait_disk_event(wq, condition); \ } while (0) -#endif +#endif diff -Nur --exclude=SCCS --exclude=BitKeeper --exclude=ChangeSet linux-2.5-import/include/linux/types.h linux-2.5-lbd/include/linux/types.h --- linux-2.5-import/include/linux/types.h Fri Aug 16 13:27:04 2002 +++ linux-2.5-lbd/include/linux/types.h Thu Aug 15 12:16:49 2002 @@ -117,13 +117,11 @@ #endif /* - * transition to 64-bit sector_t, possibly making it an option... + * The type used for indexing onto a disc or disc partition. + * If required, asm/types.h can override it and define + * HAVE_SECTOR_T */ -#undef BLK_64BIT_SECTOR - -#ifdef BLK_64BIT_SECTOR -typedef u64 sector_t; -#else +#ifndef HAVE_SECTOR_T typedef unsigned long sector_t; #endif - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
|  |