Messages in this thread Patch in this message |  | | From | Peter Chubb <> | Date | Fri, 23 Aug 2002 15:59:59 +1000 | Subject | Large Block Device patch part 8 of 8 |
| |
This patch adds the configuration options for CONFIG_LBD to i386 and ppc.
It also fixes a couple of things I missed in earlier patches.
(And yes, there are only 8 parts)
# This is a BitKeeper generated patch for the following project: # Project Name: Linux kernel tree # This patch format is intended for GNU patch command version 2.5 or higher. # This patch includes the following deltas: # ChangeSet 1.515 -> 1.516 # drivers/block/Config.help 1.2 -> 1.3 # include/asm-i386/types.h 1.2 -> 1.3 # drivers/block/Config.in 1.7 -> 1.8 # include/linux/types.h 1.4 -> 1.5 # fs/affs/inode.c 1.15 -> 1.16 # fs/reiserfs/super.c 1.52 -> 1.53 # fs/affs/file.c 1.20 -> 1.21 # include/asm-ppc/types.h 1.4 -> 1.5 # # The following is the BitKeeper ChangeSet Log # -------------------------------------------- # 02/08/23 peterc@numbat.chubb.wattle.id.au 1.516 # The last in the current patch set: enable sector_t larger than 32-bits; and # a few compiler warnings fixed up. # -------------------------------------------- # diff -Nru a/drivers/block/Config.help b/drivers/block/Config.help --- a/drivers/block/Config.help Fri Aug 23 15:43:40 2002 +++ b/drivers/block/Config.help Fri Aug 23 15:43:40 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 -Nru a/drivers/block/Config.in b/drivers/block/Config.in --- a/drivers/block/Config.in Fri Aug 23 15:43:40 2002 +++ b/drivers/block/Config.in Fri Aug 23 15:43:40 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 -Nru a/fs/affs/file.c b/fs/affs/file.c --- a/fs/affs/file.c Fri Aug 23 15:43:40 2002 +++ b/fs/affs/file.c Fri Aug 23 15:43:40 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 -Nru a/fs/affs/inode.c b/fs/affs/inode.c --- a/fs/affs/inode.c Fri Aug 23 15:43:40 2002 +++ b/fs/affs/inode.c Fri Aug 23 15:43:40 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 -Nru a/fs/reiserfs/super.c b/fs/reiserfs/super.c --- a/fs/reiserfs/super.c Fri Aug 23 15:43:40 2002 +++ b/fs/reiserfs/super.c Fri Aug 23 15:43:40 2002 @@ -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 -Nru a/include/asm-i386/types.h b/include/asm-i386/types.h --- a/include/asm-i386/types.h Fri Aug 23 15:43:40 2002 +++ b/include/asm-i386/types.h Fri Aug 23 15:43:40 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 -Nru a/include/asm-ppc/types.h b/include/asm-ppc/types.h --- a/include/asm-ppc/types.h Fri Aug 23 15:43:40 2002 +++ b/include/asm-ppc/types.h Fri Aug 23 15:43:40 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 -Nru a/include/linux/types.h b/include/linux/types.h --- a/include/linux/types.h Fri Aug 23 15:43:40 2002 +++ b/include/linux/types.h Fri Aug 23 15:43:40 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/
|  |