📄 ext3-16tb-overflow-fixes.patch
字号:
Date: Tue, 19 Sep 2006 15:33:04 -0500From: Eric Sandeen <esandeen@redhat.com>Subject: [RHEL5 Patch 3/3] (resend) Fix ext3 32-bit inodesThis one is in the -mm tree as ext3-inode-numbers-are-unsigned-long.patch,resent to accomodate sct's request for uints instead; just pinged akpmto pick up the ulonglong->uint change.This is primarily format string fixes, with changes to ialloc.c where largeinode counts could overflow, and also pass around journal_inum as anunsigned long, just to be pedantic about it....Signed-off-by: Eric Sandeen <esandeen@redhat.com>Cc: Mingming Cao <cmm@us.ibm.com>Signed-off-by: Andrew Morton <akpm@osdl.org>Index: linux-2.6.17-1.2654.el5/fs/ext3/ialloc.c===================================================================--- linux-2.6.17-1.2654.el5.orig/fs/ext3/ialloc.c+++ linux-2.6.17-1.2654.el5/fs/ext3/ialloc.c@@ -202,7 +202,7 @@ error_return: static int find_group_dir(struct super_block *sb, struct inode *parent) { int ngroups = EXT3_SB(sb)->s_groups_count;- int freei, avefreei;+ unsigned int freei, avefreei; struct ext3_group_desc *desc, *best_desc = NULL; struct buffer_head *bh; int group, best_group = -1;@@ -261,10 +261,10 @@ static int find_group_orlov(struct super struct ext3_super_block *es = sbi->s_es; int ngroups = sbi->s_groups_count; int inodes_per_group = EXT3_INODES_PER_GROUP(sb);- int freei, avefreei;+ unsigned int freei, avefreei; ext3_fsblk_t freeb, avefreeb; ext3_fsblk_t blocks_per_dir;- int ndirs;+ unsigned int ndirs; int max_debt, max_dirs, min_inodes; ext3_grpblk_t min_blocks; int group = -1, i;Index: linux-2.6.17-1.2654.el5/fs/ext3/inode.c===================================================================--- linux-2.6.17-1.2654.el5.orig/fs/ext3/inode.c+++ linux-2.6.17-1.2654.el5/fs/ext3/inode.c@@ -2115,7 +2115,7 @@ static void ext3_free_branches(handle_t */ if (!bh) { ext3_error(inode->i_sb, "ext3_free_branches",- "Read failure, inode=%ld, block="E3FSBLK,+ "Read failure, inode=%lu, block="E3FSBLK, inode->i_ino, nr); continue; }Index: linux-2.6.17-1.2654.el5/fs/ext3/namei.c===================================================================--- linux-2.6.17-1.2654.el5.orig/fs/ext3/namei.c+++ linux-2.6.17-1.2654.el5/fs/ext3/namei.c@@ -1919,8 +1919,8 @@ int ext3_orphan_add(handle_t *handle, st if (!err) list_add(&EXT3_I(inode)->i_orphan, &EXT3_SB(sb)->s_orphan); - jbd_debug(4, "superblock will point to %ld\n", inode->i_ino);- jbd_debug(4, "orphan inode %ld will point to %d\n",+ jbd_debug(4, "superblock will point to %lu\n", inode->i_ino);+ jbd_debug(4, "orphan inode %lu will point to %d\n", inode->i_ino, NEXT_ORPHAN(inode)); out_unlock: unlock_super(sb);Index: linux-2.6.17-1.2654.el5/fs/ext3/super.c===================================================================--- linux-2.6.17-1.2654.el5.orig/fs/ext3/super.c+++ linux-2.6.17-1.2654.el5/fs/ext3/super.c@@ -45,7 +45,7 @@ static int ext3_load_journal(struct super_block *, struct ext3_super_block *, unsigned long journal_devnum); static int ext3_create_journal(struct super_block *, struct ext3_super_block *,- int);+ unsigned int); static void ext3_commit_super (struct super_block * sb, struct ext3_super_block * es, int sync);@@ -376,7 +376,7 @@ static void dump_orphan_list(struct supe list_for_each(l, &sbi->s_orphan) { struct inode *inode = orphan_list_entry(l); printk(KERN_ERR " "- "inode %s:%ld at %p: mode %o, nlink %d, next %d\n",+ "inode %s:%lu at %p: mode %o, nlink %d, next %d\n", inode->i_sb->s_id, inode->i_ino, inode, inode->i_mode, inode->i_nlink, NEXT_ORPHAN(inode));@@ -711,7 +711,7 @@ static ext3_fsblk_t get_sb_block(void ** } static int parse_options (char *options, struct super_block *sb,- unsigned long *inum, unsigned long *journal_devnum,+ unsigned int *inum, unsigned long *journal_devnum, ext3_fsblk_t *n_blocks_count, int is_remount) { struct ext3_sb_info *sbi = EXT3_SB(sb);@@ -1264,17 +1264,17 @@ static void ext3_orphan_cleanup (struct DQUOT_INIT(inode); if (inode->i_nlink) { printk(KERN_DEBUG- "%s: truncating inode %ld to %Ld bytes\n",+ "%s: truncating inode %lu to %Ld bytes\n", __FUNCTION__, inode->i_ino, inode->i_size);- jbd_debug(2, "truncating inode %ld to %Ld bytes\n",+ jbd_debug(2, "truncating inode %lu to %Ld bytes\n", inode->i_ino, inode->i_size); ext3_truncate(inode); nr_truncates++; } else { printk(KERN_DEBUG- "%s: deleting unreferenced inode %ld\n",+ "%s: deleting unreferenced inode %lu\n", __FUNCTION__, inode->i_ino);- jbd_debug(2, "deleting unreferenced inode %ld\n",+ jbd_debug(2, "deleting unreferenced inode %lu\n", inode->i_ino); nr_orphans++; }@@ -1353,7 +1353,7 @@ static int ext3_fill_super (struct super ext3_fsblk_t sb_block = get_sb_block(&data); ext3_fsblk_t logic_sb_block; unsigned long offset = 0;- unsigned long journal_inum = 0;+ unsigned int journal_inum = 0; unsigned long journal_devnum = 0; unsigned long def_mount_opts; struct inode *root;@@ -1802,7 +1802,8 @@ static void ext3_init_journal_params(str spin_unlock(&journal->j_state_lock); } -static journal_t *ext3_get_journal(struct super_block *sb, int journal_inum)+static journal_t *ext3_get_journal(struct super_block *sb,+ unsigned int journal_inum) { struct inode *journal_inode; journal_t *journal;@@ -1937,7 +1938,7 @@ static int ext3_load_journal(struct supe unsigned long journal_devnum) { journal_t *journal;- int journal_inum = le32_to_cpu(es->s_journal_inum);+ unsigned int journal_inum = le32_to_cpu(es->s_journal_inum); dev_t journal_dev; int err = 0; int really_read_only;@@ -2023,7 +2024,7 @@ static int ext3_load_journal(struct supe static int ext3_create_journal(struct super_block * sb, struct ext3_super_block * es,- int journal_inum)+ unsigned int journal_inum) { journal_t *journal; @@ -2036,7 +2037,7 @@ static int ext3_create_journal(struct su if (!(journal = ext3_get_journal(sb, journal_inum))) return -EINVAL; - printk(KERN_INFO "EXT3-fs: creating new journal on inode %d\n",+ printk(KERN_INFO "EXT3-fs: creating new journal on inode %u\n", journal_inum); if (journal_create(journal)) {Index: linux-2.6.17-1.2654.el5/fs/ext3/xattr.c===================================================================--- linux-2.6.17-1.2654.el5.orig/fs/ext3/xattr.c+++ linux-2.6.17-1.2654.el5/fs/ext3/xattr.c@@ -75,7 +75,7 @@ #ifdef EXT3_XATTR_DEBUG # define ea_idebug(inode, f...) do { \- printk(KERN_DEBUG "inode %s:%ld: ", \+ printk(KERN_DEBUG "inode %s:%lu: ", \ inode->i_sb->s_id, inode->i_ino); \ printk(f); \ printk("\n"); \@@ -233,7 +233,7 @@ ext3_xattr_block_get(struct inode *inode atomic_read(&(bh->b_count)), le32_to_cpu(BHDR(bh)->h_refcount)); if (ext3_xattr_check_block(bh)) { bad_block: ext3_error(inode->i_sb, __FUNCTION__,- "inode %ld: bad block "E3FSBLK, inode->i_ino,+ "inode %lu: bad block "E3FSBLK, inode->i_ino, EXT3_I(inode)->i_file_acl); error = -EIO; goto cleanup;@@ -375,7 +375,7 @@ ext3_xattr_block_list(struct inode *inod atomic_read(&(bh->b_count)), le32_to_cpu(BHDR(bh)->h_refcount)); if (ext3_xattr_check_block(bh)) { ext3_error(inode->i_sb, __FUNCTION__,- "inode %ld: bad block "E3FSBLK, inode->i_ino,+ "inode %lu: bad block "E3FSBLK, inode->i_ino, EXT3_I(inode)->i_file_acl); error = -EIO; goto cleanup;@@ -647,7 +647,7 @@ ext3_xattr_block_find(struct inode *inod le32_to_cpu(BHDR(bs->bh)->h_refcount)); if (ext3_xattr_check_block(bs->bh)) { ext3_error(sb, __FUNCTION__,- "inode %ld: bad block "E3FSBLK, inode->i_ino,+ "inode %lu: bad block "E3FSBLK, inode->i_ino, EXT3_I(inode)->i_file_acl); error = -EIO; goto cleanup;@@ -848,7 +848,7 @@ cleanup_dquot: bad_block: ext3_error(inode->i_sb, __FUNCTION__,- "inode %ld: bad block "E3FSBLK, inode->i_ino,+ "inode %lu: bad block "E3FSBLK, inode->i_ino, EXT3_I(inode)->i_file_acl); goto cleanup; @@ -1077,14 +1077,14 @@ ext3_xattr_delete_inode(handle_t *handle bh = sb_bread(inode->i_sb, EXT3_I(inode)->i_file_acl); if (!bh) { ext3_error(inode->i_sb, __FUNCTION__,- "inode %ld: block "E3FSBLK" read error", inode->i_ino,+ "inode %lu: block "E3FSBLK" read error", inode->i_ino, EXT3_I(inode)->i_file_acl); goto cleanup; } if (BHDR(bh)->h_magic != cpu_to_le32(EXT3_XATTR_MAGIC) || BHDR(bh)->h_blocks != cpu_to_le32(1)) { ext3_error(inode->i_sb, __FUNCTION__,- "inode %ld: bad block "E3FSBLK, inode->i_ino,+ "inode %lu: bad block "E3FSBLK, inode->i_ino, EXT3_I(inode)->i_file_acl); goto cleanup; }@@ -1211,7 +1211,7 @@ again: bh = sb_bread(inode->i_sb, ce->e_block); if (!bh) { ext3_error(inode->i_sb, __FUNCTION__,- "inode %ld: block %lu read error",+ "inode %lu: block %lu read error", inode->i_ino, (unsigned long) ce->e_block); } else if (le32_to_cpu(BHDR(bh)->h_refcount) >=
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -