From f0756c16892e854e58d06627252d390c91ef5f94 Mon Sep 17 00:00:00 2001 From: Yang Sheng Date: Sat, 30 May 2015 03:07:24 +0800 Subject: [PATCH] LU-6030 ldiskfs: further cleanup patches of ldiskfs Remove some unused export symbol and correct patch style as results of checkpatch.pl Signed-off-by: Yang Sheng Change-Id: I84676b019189d1df113ae621297c60db860cd155 Reviewed-on: http://review.whamcloud.com/14490 Tested-by: Jenkins Reviewed-by: Andreas Dilger Reviewed-by: Bob Glossman Tested-by: Maloo --- .../patches/rhel6.3/export-ext4-2.6.patch | 23 +------ .../patches/rhel7/ext4-data-in-dirent.patch | 78 +++++++++++++--------- .../patches/rhel7/ext4-disable-mb-cache.patch | 4 +- .../ext4-hash-indexed-dir-dotdot-update.patch | 12 ++-- .../patches/rhel7/ext4-inode-version.patch | 18 ++--- .../patches/rhel7/ext4-kill-dx-root.patch | 74 +++++++++++--------- .../patches/rhel7/ext4-large-dir.patch | 18 ++--- .../patches/rhel7/ext4-large-eas.patch | 11 +-- .../patches/rhel7/ext4-lookup-dotdot.patch | 7 +- .../patches/rhel7/ext4-max-dir-size.patch | 2 +- .../patches/rhel7/ext4-mballoc-extra-checks.patch | 6 +- .../kernel_patches/patches/rhel7/ext4-misc.patch | 10 +-- .../patches/rhel7/ext4-nocmtime.patch | 2 +- .../patches/rhel7/ext4-osd-iop-common.patch | 10 +-- .../kernel_patches/patches/rhel7/ext4-pdirop.patch | 2 +- .../patches/rhel7/ext4-prealloc.patch | 22 +++--- .../patches/sles11sp2/export-ext4-3.0.patch | 12 +--- 17 files changed, 156 insertions(+), 155 deletions(-) diff --git a/ldiskfs/kernel_patches/patches/rhel6.3/export-ext4-2.6.patch b/ldiskfs/kernel_patches/patches/rhel6.3/export-ext4-2.6.patch index 0d647b5..02dd196 100644 --- a/ldiskfs/kernel_patches/patches/rhel6.3/export-ext4-2.6.patch +++ b/ldiskfs/kernel_patches/patches/rhel6.3/export-ext4-2.6.patch @@ -2,33 +2,14 @@ Index: linux-stage/fs/ext4/super.c =================================================================== --- linux-stage.orig/fs/ext4/super.c +++ linux-stage/fs/ext4/super.c -@@ -334,6 +334,8 @@ void ext4_journal_abort_handle(const cha - jbd2_journal_abort_handle(handle); - } - -+EXPORT_SYMBOL(ext4_journal_abort_handle); -+ - /* Deal with the reporting of failure conditions on a filesystem such as - * inconsistencies detected or read IO failures. - * -@@ -3529,6 +3531,8 @@ out_fail: - return ret; - } - -+EXPORT_SYMBOL(ext4_force_commit); -+ - /* - * Setup any per-fs journal parameters now. We'll do this both on - * initial mount, once the journal has been initialised but before we've -@@ -4642,6 +4646,12 @@ static void __exit exit_ext4_fs(void) +@@ -4642,6 +4646,11 @@ static void __exit exit_ext4_fs(void) exit_ext4_system_zone(); } -+EXPORT_SYMBOL(ext4_xattr_get); -+EXPORT_SYMBOL(ext4_xattr_set_handle); +EXPORT_SYMBOL(ext4_bread); +EXPORT_SYMBOL(ext4_journal_start_sb); +EXPORT_SYMBOL(__ext4_journal_stop); ++EXPORT_SYMBOL(ext4_force_commit); + MODULE_AUTHOR("Remy Card, Stephen Tweedie, Andrew Morton, Andreas Dilger, Theodore Ts'o and others"); MODULE_DESCRIPTION("Fourth Extended Filesystem"); diff --git a/ldiskfs/kernel_patches/patches/rhel7/ext4-data-in-dirent.patch b/ldiskfs/kernel_patches/patches/rhel7/ext4-data-in-dirent.patch index 2e73eb3..26b1e78 100644 --- a/ldiskfs/kernel_patches/patches/rhel7/ext4-data-in-dirent.patch +++ b/ldiskfs/kernel_patches/patches/rhel7/ext4-data-in-dirent.patch @@ -30,7 +30,7 @@ Index: linux-3.10.0-123.13.2.el7.x86_64/fs/ext4/dir.c * dirent test below. */ if (ext4_rec_len_from_disk(de->rec_len, - sb->s_blocksize) < EXT4_DIR_REC_LEN(1)) -+ sb->s_blocksize) < __EXT4_DIR_REC_LEN(1)) ++ sb->s_blocksize) < __EXT4_DIR_REC_LEN(1)) break; i += ext4_rec_len_from_disk(de->rec_len, sb->s_blocksize); @@ -63,14 +63,14 @@ Index: linux-3.10.0-123.13.2.el7.x86_64/fs/ext4/dir.c while (*p) { @@ -452,7 +457,7 @@ int ext4_htree_store_dirent(struct file - if (ext4_check_dir_entry(dir, NULL, de, bh, - buf, buf_size, offset)) - return -EIO; + if (ext4_check_dir_entry(dir, NULL, de, bh, + buf, buf_size, offset)) + return -EIO; - nlen = EXT4_DIR_REC_LEN(de->name_len); + nlen = EXT4_DIR_REC_LEN(de); - rlen = ext4_rec_len_from_disk(de->rec_len, buf_size); - de = (struct ext4_dir_entry_2 *)((char *)de + rlen); - offset += rlen; + rlen = ext4_rec_len_from_disk(de->rec_len, buf_size); + de = (struct ext4_dir_entry_2 *)((char *)de + rlen); + offset += rlen; Index: linux-3.10.0-123.13.2.el7.x86_64/fs/ext4/ext4.h =================================================================== --- linux-3.10.0-123.13.2.el7.x86_64.orig/fs/ext4/ext4.h @@ -119,10 +119,10 @@ Index: linux-3.10.0-123.13.2.el7.x86_64/fs/ext4/ext4.h + __u32 edp_magic; /* EXT4_LUFID_MAGIC */ + char edp_len; /* size of edp_data in bytes */ + char edp_data[0]; /* packed array of data */ -+} __attribute__((packed)); ++} __packed; + +static inline unsigned char *ext4_dentry_get_data(struct super_block *sb, -+ struct ext4_dentry_param* p) ++ struct ext4_dentry_param *p) + +{ + if (!EXT4_HAS_INCOMPAT_FEATURE(sb, EXT4_FEATURE_INCOMPAT_DIRDATA)) @@ -175,7 +175,7 @@ Index: linux-3.10.0-123.13.2.el7.x86_64/fs/ext4/ext4.h - return ext4_filetype_table[filetype]; + if (!test_opt(sb, DIRDATA)) -+ return (ext4_filetype_table[fl_index]); ++ return ext4_filetype_table[fl_index]; + + return (ext4_filetype_table[fl_index]) | + (filetype & EXT4_DIRENT_LUFID); @@ -236,21 +236,21 @@ Index: linux-3.10.0-123.13.2.el7.x86_64/fs/ext4/namei.c static struct dx_frame *dx_probe(const struct qstr *d_name, struct inode *dir, @@ -504,11 +505,12 @@ ext4_next_entry(struct ext4_dir_entry_2 - */ - struct dx_root_info * dx_get_dx_info(struct ext4_dir_entry_2 *de) + */ + struct dx_root_info *dx_get_dx_info(struct ext4_dir_entry_2 *de) { -- /* get dotdot first */ -- de = (struct ext4_dir_entry_2 *)((char *)de + EXT4_DIR_REC_LEN(1)); +- /* get dotdot first */ +- de = (struct ext4_dir_entry_2 *)((char *)de + EXT4_DIR_REC_LEN(1)); + BUG_ON(de->name_len != 1); + /* get dotdot first */ + de = (struct ext4_dir_entry_2 *)((char *)de + EXT4_DIR_REC_LEN(de)); -- /* dx root info is after dotdot entry */ -- de = (struct ext4_dir_entry_2 *)((char *)de + EXT4_DIR_REC_LEN(2)); +- /* dx root info is after dotdot entry */ +- de = (struct ext4_dir_entry_2 *)((char *)de + EXT4_DIR_REC_LEN(2)); + /* dx root info is after dotdot entry */ + de = (struct ext4_dir_entry_2 *)((char *)de + EXT4_DIR_REC_LEN(de)); - return (struct dx_root_info *) de; + return (struct dx_root_info *)de; } @@ -553,10 +555,16 @@ static inline void dx_set_limit(struct d ((struct dx_countlimit *) entries)->limit = cpu_to_le16(value); @@ -290,14 +290,25 @@ Index: linux-3.10.0-123.13.2.el7.x86_64/fs/ext4/namei.c names++; } de = ext4_next_entry(de, size); -@@ -723,6 +731,7 @@ dx_probe(const struct qstr *d_name, stru +@@ -723,12 +731,15 @@ dx_probe(const struct qstr *d_name, stru + entries = (struct dx_entry *) (((char *)info) + info->info_length); - if (dx_get_limit(entries) != dx_root_limit(dir, -+ (struct ext4_dir_entry_2*)bh->b_data, - info->info_length)) { - ext4_warning(dir->i_sb, "dx entry: limit != root limit"); +- if (dx_get_limit(entries) != dx_root_limit(dir, +- info->info_length)) { ++ if (dx_get_limit(entries) != ++ dx_root_limit(dir, (struct ext4_dir_entry_2 *)bh->b_data, ++ info->info_length)) { + ext4_warning(dir->i_sb, "dx entry: limit != root limit " + "inode #%lu: dx entry: limit %u != root limit %u", + dir->i_ino, dx_get_limit(entries), +- dx_root_limit(dir, info->info_length)); ++ dx_root_limit(dir, ++ (struct ext4_dir_entry_2 *)bh->b_data, ++ info->info_length)); brelse(bh); + *err = ERR_BAD_DX_DIR; + goto fail; @@ -916,7 +925,7 @@ static int htree_dirblock_to_tree(struct de = (struct ext4_dir_entry_2 *) bh->b_data; top = (struct ext4_dir_entry_2 *) ((char *) de + @@ -325,7 +336,7 @@ Index: linux-3.10.0-123.13.2.el7.x86_64/fs/ext4/namei.c if (de > to) memmove(to, de, rec_len); to->rec_len = ext4_rec_len_to_disk(rec_len, blocksize); -@@ -1664,14 +1673,15 @@ int ext4_find_dest_de(struct inode *dir, +@@ -1664,14 +1673,16 @@ int ext4_find_dest_de(struct inode *dir, struct buffer_head *bh, void *buf, int buf_size, const char *name, int namelen, @@ -334,12 +345,13 @@ Index: linux-3.10.0-123.13.2.el7.x86_64/fs/ext4/namei.c { struct ext4_dir_entry_2 *de; - unsigned short reclen = EXT4_DIR_REC_LEN(namelen); -+ unsigned short reclen = __EXT4_DIR_REC_LEN(namelen) + (dlen ? *dlen:0); ++ unsigned short reclen = __EXT4_DIR_REC_LEN(namelen) + ++ (dlen ? *dlen : 0); int nlen, rlen; unsigned int offset = 0; char *top; -+ dlen ? *dlen = 0: 0; /* default set to 0 */ ++ dlen ? *dlen = 0 : 0; /* default set to 0 */ de = (struct ext4_dir_entry_2 *)buf; top = buf + buf_size - reclen; while ((char *) de <= top) { @@ -408,7 +420,7 @@ Index: linux-3.10.0-123.13.2.el7.x86_64/fs/ext4/namei.c + data = ext4_dentry_get_data(inode->i_sb, (struct ext4_dentry_param *) + dentry->d_fsdata); - if (ext4_has_metadata_csum(inode->i_sb)) + if (ext4_has_metadata_csum(inode->i_sb)) csum_size = sizeof(struct ext4_dir_entry_tail); if (!de) { @@ -426,7 +438,7 @@ Index: linux-3.10.0-123.13.2.el7.x86_64/fs/ext4/namei.c /* By now the buffer is marked for journaling */ - ext4_insert_dentry(inode, de, blocksize, name, namelen); -+ /* If we're writing the short form of "dotdot", don't add the data section */ ++ /* If writing the short form of "dotdot", don't add the data section */ + if (dlen == 1) + data = NULL; + ext4_insert_dentry(inode, de, blocksize, name, namelen, data); @@ -489,7 +501,7 @@ Index: linux-3.10.0-123.13.2.el7.x86_64/fs/ext4/namei.c - assert(le16_to_cpu(de->rec_len) >= EXT4_DIR_REC_LEN(2)); + assert(le16_to_cpu(de->rec_len) >= __EXT4_DIR_REC_LEN(2)); de->name_len = 2; - strcpy (de->name, ".."); + strcpy(de->name, ".."); - ext4_set_de_type(dir->i_sb, de, S_IFDIR); + if (data != NULL && ext4_get_dirent_data_len(de) >= dlen) { + de->name[2] = 0; @@ -519,7 +531,7 @@ Index: linux-3.10.0-123.13.2.el7.x86_64/fs/ext4/namei.c + int dot_reclen = 0; + + if (dotdot_real_len == 10) { -+ struct tp_block *tpb = (struct tp_block*)inode; ++ struct tp_block *tpb = (struct tp_block *)inode; + data1 = tpb->data1; + data2 = tpb->data2; + inode = tpb->inode; @@ -566,7 +578,7 @@ Index: linux-3.10.0-123.13.2.el7.x86_64/fs/ext4/namei.c - strcpy(de->name, ".."); - ext4_set_de_type(inode->i_sb, de, S_IFDIR); - return ext4_next_entry(de, blocksize); + return ext4_next_entry(de, blocksize); } @@ -2457,8 +2540,10 @@ struct ext4_dir_entry_2 *ext4_init_dot_d } @@ -596,10 +608,10 @@ Index: linux-3.10.0-123.13.2.el7.x86_64/fs/ext4/namei.c @@ -2508,7 +2597,8 @@ out: /* Initialize @inode as a subdirectory of @dir, and add the * "." and ".." entries into the first directory block. */ - int ext4_add_dot_dotdot(handle_t *handle, struct inode * dir, + int ext4_add_dot_dotdot(handle_t *handle, struct inode *dir, - struct inode *inode) + struct inode *inode, -+ const void *data1, const void *data2) ++ const void *data1, const void *data2) { if (IS_ERR(handle)) return PTR_ERR(handle); @@ -639,7 +651,7 @@ Index: linux-3.10.0-123.13.2.el7.x86_64/fs/ext4/inline.c err = ext4_find_dest_de(dir, inode, iloc->bh, inline_start, inline_size, - name, namelen, &de); -+ name, namelen, &de, NULL); ++ name, namelen, &de, NULL); if (err) return err; diff --git a/ldiskfs/kernel_patches/patches/rhel7/ext4-disable-mb-cache.patch b/ldiskfs/kernel_patches/patches/rhel7/ext4-disable-mb-cache.patch index 38cfab6..c8f5dca4 100644 --- a/ldiskfs/kernel_patches/patches/rhel7/ext4-disable-mb-cache.patch +++ b/ldiskfs/kernel_patches/patches/rhel7/ext4-disable-mb-cache.patch @@ -85,7 +85,7 @@ Index: linux-3.10.0-123.13.2.el7.x86_64/fs/ext4/xattr.c + if (!test_opt(inode->i_sb, NO_MBCACHE)) + ce = mb_cache_entry_get(ext4_xattr_cache, bh->b_bdev, + bh->b_blocknr); - BUFFER_TRACE(bh, "get_write_access"); + BUFFER_TRACE(bh, "get_write_access"); error = ext4_journal_get_write_access(handle, bh); if (error) @@ -1037,8 +1040,10 @@ ext4_xattr_block_set(handle_t *handle, s @@ -98,7 +98,7 @@ Index: linux-3.10.0-123.13.2.el7.x86_64/fs/ext4/xattr.c + ce = mb_cache_entry_get(ext4_xattr_cache, + bs->bh->b_bdev, + bs->bh->b_blocknr); - BUFFER_TRACE(bs->bh, "get_write_access"); + BUFFER_TRACE(bs->bh, "get_write_access"); error = ext4_journal_get_write_access(handle, bs->bh); if (error) @@ -1055,7 +1060,7 @@ ext4_xattr_block_set(handle_t *handle, s diff --git a/ldiskfs/kernel_patches/patches/rhel7/ext4-hash-indexed-dir-dotdot-update.patch b/ldiskfs/kernel_patches/patches/rhel7/ext4-hash-indexed-dir-dotdot-update.patch index 5a78064..ff3ab9c 100644 --- a/ldiskfs/kernel_patches/patches/rhel7/ext4-hash-indexed-dir-dotdot-update.patch +++ b/ldiskfs/kernel_patches/patches/rhel7/ext4-hash-indexed-dir-dotdot-update.patch @@ -8,11 +8,11 @@ Index: linux-3.10.0-123.9.3.el7.x86_64/fs/ext4/namei.c +/* update ".." for hash-indexed directory, split the item "." if necessary */ +static int ext4_update_dotdot(handle_t *handle, struct dentry *dentry, -+ struct inode *inode) ++ struct inode *inode) +{ -+ struct inode * dir = dentry->d_parent->d_inode; -+ struct buffer_head * dir_block; -+ struct ext4_dir_entry_2 * de; ++ struct inode *dir = dentry->d_parent->d_inode; ++ struct buffer_head *dir_block; ++ struct ext4_dir_entry_2 *de; + int len, journal = 0, err = 0; + + if (IS_ERR(handle)) @@ -57,7 +57,7 @@ Index: linux-3.10.0-123.9.3.el7.x86_64/fs/ext4/namei.c + else + assert(le16_to_cpu(de->rec_len) >= EXT4_DIR_REC_LEN(2)); + de->name_len = 2; -+ strcpy (de->name, ".."); ++ strcpy(de->name, ".."); + ext4_set_de_type(dir->i_sb, de, S_IFDIR); + +out_journal: @@ -66,7 +66,7 @@ Index: linux-3.10.0-123.9.3.el7.x86_64/fs/ext4/namei.c + err = ext4_handle_dirty_dirent_node(handle, dir, dir_block); + ext4_mark_inode_dirty(handle, dir); + } -+ brelse (dir_block); ++ brelse(dir_block); + +out: + return err; diff --git a/ldiskfs/kernel_patches/patches/rhel7/ext4-inode-version.patch b/ldiskfs/kernel_patches/patches/rhel7/ext4-inode-version.patch index dafdac7..bb7ac10 100644 --- a/ldiskfs/kernel_patches/patches/rhel7/ext4-inode-version.patch +++ b/ldiskfs/kernel_patches/patches/rhel7/ext4-inode-version.patch @@ -5,30 +5,30 @@ Index: linux-3.10.0-123.el7.x86_64/fs/ext4/inode.c @@ -4286,10 +4286,10 @@ struct inode *ext4_iget(struct super_blo EXT4_EINODE_GET_XTIME(i_crtime, ei, raw_inode); - if (likely(!test_opt2(inode->i_sb, HURD_COMPAT))) { + if (likely(!test_opt2(inode->i_sb, HURD_COMPAT))) { - inode->i_version = le32_to_cpu(raw_inode->i_disk_version); + ei->i_fs_version = le32_to_cpu(raw_inode->i_disk_version); if (EXT4_INODE_SIZE(inode->i_sb) > EXT4_GOOD_OLD_INODE_SIZE) { if (EXT4_FITS_IN_INODE(raw_inode, ei, i_version_hi)) - inode->i_version |= + ei->i_fs_version |= - (__u64)(le32_to_cpu(raw_inode->i_version_hi)) << 32; - } - } + (__u64)(le32_to_cpu(raw_inode->i_version_hi)) << 32; + } + } @@ -4506,11 +4506,11 @@ static int ext4_do_update_inode(handle_t } - if (likely(!test_opt2(inode->i_sb, HURD_COMPAT))) { + if (likely(!test_opt2(inode->i_sb, HURD_COMPAT))) { - raw_inode->i_disk_version = cpu_to_le32(inode->i_version); + raw_inode->i_disk_version = cpu_to_le32(ei->i_fs_version); if (ei->i_extra_isize) { if (EXT4_FITS_IN_INODE(raw_inode, ei, i_version_hi)) - raw_inode->i_version_hi = + raw_inode->i_version_hi = - cpu_to_le32(inode->i_version >> 32); + cpu_to_le32(ei->i_fs_version >> 32); - raw_inode->i_extra_isize = - cpu_to_le16(ei->i_extra_isize); - } + raw_inode->i_extra_isize = + cpu_to_le16(ei->i_extra_isize); + } Index: linux-3.10.0-123.el7.x86_64/fs/ext4/ialloc.c =================================================================== --- linux-3.10.0-123.el7.x86_64.orig/fs/ext4/ialloc.c diff --git a/ldiskfs/kernel_patches/patches/rhel7/ext4-kill-dx-root.patch b/ldiskfs/kernel_patches/patches/rhel7/ext4-kill-dx-root.patch index f368040..37caa04 100644 --- a/ldiskfs/kernel_patches/patches/rhel7/ext4-kill-dx-root.patch +++ b/ldiskfs/kernel_patches/patches/rhel7/ext4-kill-dx-root.patch @@ -39,15 +39,15 @@ Index: linux-3.10.0-123.9.3.el7.x86_64/fs/ext4/namei.c * Future: use high four bits of block for coalesce-on-delete flags * Mask them off for now. */ -+struct dx_root_info * dx_get_dx_info(struct ext4_dir_entry_2 *de) ++struct dx_root_info *dx_get_dx_info(struct ext4_dir_entry_2 *de) +{ -+ /* get dotdot first */ -+ de = (struct ext4_dir_entry_2 *)((char *)de + EXT4_DIR_REC_LEN(1)); ++ /* get dotdot first */ ++ de = (struct ext4_dir_entry_2 *)((char *)de + EXT4_DIR_REC_LEN(1)); + -+ /* dx root info is after dotdot entry */ -+ de = (struct ext4_dir_entry_2 *)((char *)de + EXT4_DIR_REC_LEN(2)); ++ /* dx root info is after dotdot entry */ ++ de = (struct ext4_dir_entry_2 *)((char *)de + EXT4_DIR_REC_LEN(2)); + -+ return (struct dx_root_info *) de; ++ return (struct dx_root_info *)de; +} static inline ext4_lblk_t dx_get_block(struct dx_entry *entry) @@ -57,7 +57,7 @@ Index: linux-3.10.0-123.9.3.el7.x86_64/fs/ext4/namei.c unsigned count, indirect; struct dx_entry *at, *entries, *p, *q, *m; - struct dx_root *root; -+ struct dx_root_info * info; ++ struct dx_root_info *info; struct buffer_head *bh; struct dx_frame *frame = frame_in; u32 hash; @@ -69,14 +69,15 @@ Index: linux-3.10.0-123.9.3.el7.x86_64/fs/ext4/namei.c - if (root->info.hash_version != DX_HASH_TEA && - root->info.hash_version != DX_HASH_HALF_MD4 && - root->info.hash_version != DX_HASH_LEGACY) { +- ext4_warning(dir->i_sb, "Unrecognised inode hash code %d for directory " +- "#%lu", root->info.hash_version, dir->i_ino); + -+ info = dx_get_dx_info((struct ext4_dir_entry_2*)bh->b_data); ++ info = dx_get_dx_info((struct ext4_dir_entry_2 *)bh->b_data); + if (info->hash_version != DX_HASH_TEA && + info->hash_version != DX_HASH_HALF_MD4 && + info->hash_version != DX_HASH_LEGACY) { - ext4_warning(dir->i_sb, "Unrecognised inode hash code %d for directory " -- "#%lu", root->info.hash_version, dir->i_ino); -+ "#%lu", info->hash_version, dir->i_ino); ++ ext4_warning(dir->i_sb, "inode #%lu: unrecognised hash code %u", ++ dir->i_ino, info->hash_version); brelse(bh); *err = ERR_BAD_DX_DIR; goto fail; @@ -86,25 +87,30 @@ Index: linux-3.10.0-123.9.3.el7.x86_64/fs/ext4/namei.c if (hinfo->hash_version <= DX_HASH_TEA) hinfo->hash_version += EXT4_SB(dir->i_sb)->s_hash_unsigned; hinfo->seed = EXT4_SB(dir->i_sb)->s_hash_seed; -@@ -702,27 +704,26 @@ dx_probe(const struct qstr *d_name, stru +@@ -702,28 +704,33 @@ dx_probe(const struct qstr *d_name, stru ext4fs_dirhash(d_name->name, d_name->len, hinfo); hash = hinfo->hash; - if (root->info.unused_flags & 1) { -+ if (info->unused_flags & 1) { - ext4_warning(dir->i_sb, "Unimplemented inode hash flags: %#06x", +- ext4_warning(dir->i_sb, "Unimplemented inode hash flags: %#06x", - root->info.unused_flags); -+ info->unused_flags); ++ if (info->unused_flags & 1) { ++ ext4_warning(dir->i_sb, ++ "inode #%lu: unimplemented hash flags: %#06x", ++ dir->i_ino, info->unused_flags); brelse(bh); *err = ERR_BAD_DX_DIR; goto fail; } - if ((indirect = root->info.indirect_levels) > 1) { -+ if ((indirect = info->indirect_levels) > 1) { - ext4_warning(dir->i_sb, "Unimplemented inode hash depth: %#06x", +- ext4_warning(dir->i_sb, "Unimplemented inode hash depth: %#06x", - root->info.indirect_levels); -+ info->indirect_levels); ++ indirect = info->indirect_levels; ++ if (indirect > 1) { ++ ext4_warning(dir->i_sb, ++ "inode #%lu: unimplemented hash depth %u", ++ dir->i_ino, info->indirect_levels); brelse(bh); *err = ERR_BAD_DX_DIR; goto fail; @@ -112,14 +118,19 @@ Index: linux-3.10.0-123.9.3.el7.x86_64/fs/ext4/namei.c - entries = (struct dx_entry *) (((char *)&root->info) + - root->info.info_length); -+ entries = (struct dx_entry *) (((char *)info) + info->info_length); ++ entries = (struct dx_entry *)(((char *)info) + info->info_length); if (dx_get_limit(entries) != dx_root_limit(dir, - root->info.info_length)) { +- ext4_warning(dir->i_sb, "dx entry: limit != root limit"); + info->info_length)) { - ext4_warning(dir->i_sb, "dx entry: limit != root limit"); ++ ext4_warning(dir->i_sb, "dx entry: limit != root limit " ++ "inode #%lu: dx entry: limit %u != root limit %u", ++ dir->i_ino, dx_get_limit(entries), ++ dx_root_limit(dir, info->info_length)); brelse(bh); *err = ERR_BAD_DX_DIR; + goto fail; @@ -807,10 +808,12 @@ fail: static void dx_release (struct dx_frame *frames) @@ -129,7 +140,7 @@ Index: linux-3.10.0-123.9.3.el7.x86_64/fs/ext4/namei.c return; - if (((struct dx_root *) frames[0].bh->b_data)->info.indirect_levels) -+ info = dx_get_dx_info((struct ext4_dir_entry_2*)frames[0].bh->b_data); ++ info = dx_get_dx_info((struct ext4_dir_entry_2 *)frames[0].bh->b_data); + if (info->indirect_levels) brelse(frames[1].bh); brelse(frames[0].bh); @@ -161,7 +172,7 @@ Index: linux-3.10.0-123.9.3.el7.x86_64/fs/ext4/namei.c } - root = (struct dx_root *) bh->b_data; + -+ dot_de = (struct ext4_dir_entry_2 *) bh->b_data; ++ dot_de = (struct ext4_dir_entry_2 *)bh->b_data; + dotdot_de = ext4_next_entry(dot_de, blocksize); /* The 0th block becomes the root, move the dirents out */ @@ -171,17 +182,17 @@ Index: linux-3.10.0-123.9.3.el7.x86_64/fs/ext4/namei.c - if ((char *) de >= (((char *) root) + blocksize)) { + de = (struct ext4_dir_entry_2 *)((char *)dotdot_de + + ext4_rec_len_from_disk(dotdot_de->rec_len, blocksize)); -+ if ((char *) de >= (((char *) dot_de) + blocksize)) { ++ if ((char *)de >= (((char *)dot_de) + blocksize)) { EXT4_ERROR_INODE(dir, "invalid rec_len for '..'"); brelse(bh); return -EIO; } - len = ((char *) root) + (blocksize - csum_size) - (char *) de; -+ len = ((char *) dot_de) + (blocksize - csum_size) - (char *) de; ++ len = ((char *)dot_de) + (blocksize - csum_size) - (char *)de; /* Allocate new block for the 0th block's dirents */ bh2 = ext4_append(handle, dir, &block); -@@ -1850,19 +1853,23 @@ static int make_indexed_dir(handle_t *ha +@@ -1850,19 +1853,24 @@ static int make_indexed_dir(handle_t *ha } /* Initialize the root; the dot dirents already exist */ @@ -192,12 +203,13 @@ Index: linux-3.10.0-123.9.3.el7.x86_64/fs/ext4/namei.c - root->info.info_length = sizeof(root->info); - root->info.hash_version = EXT4_SB(dir->i_sb)->s_def_hash_version; - entries = root->entries; -+ dotdot_de->rec_len = ext4_rec_len_to_disk(blocksize - -+ le16_to_cpu(dot_de->rec_len), blocksize); ++ dotdot_de->rec_len = ++ ext4_rec_len_to_disk(blocksize - le16_to_cpu(dot_de->rec_len), ++ blocksize); + + /* initialize hashing info */ + dx_info = dx_get_dx_info(dot_de); -+ memset (dx_info, 0, sizeof(*dx_info)); ++ memset(dx_info, 0, sizeof(*dx_info)); + dx_info->info_length = sizeof(*dx_info); + dx_info->hash_version = EXT4_SB(dir->i_sb)->s_def_hash_version; + @@ -218,7 +230,7 @@ Index: linux-3.10.0-123.9.3.el7.x86_64/fs/ext4/namei.c goto journal_error; brelse (bh2); } else { -+ struct dx_root_info * info; ++ struct dx_root_info *info; dxtrace(printk(KERN_DEBUG "Creating second level index...\n")); memcpy((char *) entries2, (char *) entries, @@ -227,8 +239,8 @@ Index: linux-3.10.0-123.9.3.el7.x86_64/fs/ext4/namei.c dx_set_count(entries, 1); dx_set_block(entries + 0, newblock); - ((struct dx_root *) frames[0].bh->b_data)->info.indirect_levels = 1; -+ info = dx_get_dx_info((struct ext4_dir_entry_2*) -+ frames[0].bh->b_data); ++ info = dx_get_dx_info((struct ext4_dir_entry_2 *) ++ frames[0].bh->b_data); + info->indirect_levels = 1; /* Add new access path frame */ diff --git a/ldiskfs/kernel_patches/patches/rhel7/ext4-large-dir.patch b/ldiskfs/kernel_patches/patches/rhel7/ext4-large-dir.patch index 24ef03e..cd250e0 100644 --- a/ldiskfs/kernel_patches/patches/rhel7/ext4-large-dir.patch +++ b/ldiskfs/kernel_patches/patches/rhel7/ext4-large-dir.patch @@ -79,14 +79,14 @@ Index: linux-3.10.0-229.1.2.fc21.x86_64/fs/ext4/namei.c bh = ext4_read_dirblock(dir, 0, INDEX); if (IS_ERR(bh)) { *err = PTR_ERR(bh); -@@ -714,9 +721,16 @@ dx_probe(const struct qstr *d_name, stru - goto fail; +@@ -714,10 +721,15 @@ dx_probe(const struct qstr *d_name, stru } -- if ((indirect = info->indirect_levels) > 1) { -- ext4_warning(dir->i_sb, "Unimplemented inode hash depth: %#06x", -- info->indirect_levels); -+ indirect = info->indirect_levels; + indirect = info->indirect_levels; +- if (indirect > 1) { +- ext4_warning(dir->i_sb, +- "inode #%lu: unimplemented hash depth %u", +- dir->i_ino, info->indirect_levels); + if (indirect >= ext4_dir_htree_level(dir->i_sb)) { + ext4_warning(dir->i_sb, + "inode #%lu: comm %s: htree depth %#06x exceed max depth %u", @@ -108,7 +108,7 @@ Index: linux-3.10.0-229.1.2.fc21.x86_64/fs/ext4/namei.c if (frames[0].bh == NULL) return; - info = dx_get_dx_info((struct ext4_dir_entry_2*)frames[0].bh->b_data); + info = dx_get_dx_info((struct ext4_dir_entry_2 *)frames[0].bh->b_data); - if (info->indirect_levels) - brelse(frames[1].bh); - brelse(frames[0].bh); @@ -268,7 +268,7 @@ Index: linux-3.10.0-229.1.2.fc21.x86_64/fs/ext4/namei.c + goto cleanup; + } } else { - struct dx_root_info * info; + struct dx_root_info *info; - dxtrace(printk(KERN_DEBUG - "Creating second level index...\n")); - memcpy((char *) entries2, (char *) entries, @@ -280,7 +280,7 @@ Index: linux-3.10.0-229.1.2.fc21.x86_64/fs/ext4/namei.c @@ -2224,21 +2267,14 @@ static int ext4_dx_add_entry(handle_t *h dx_set_block(entries + 0, newblock); info = dx_get_dx_info((struct ext4_dir_entry_2*) - frames[0].bh->b_data); + frames[0].bh->b_data); - info->indirect_levels = 1; - - /* Add new access path frame */ diff --git a/ldiskfs/kernel_patches/patches/rhel7/ext4-large-eas.patch b/ldiskfs/kernel_patches/patches/rhel7/ext4-large-eas.patch index da71240..f5e02d5 100644 --- a/ldiskfs/kernel_patches/patches/rhel7/ext4-large-eas.patch +++ b/ldiskfs/kernel_patches/patches/rhel7/ext4-large-eas.patch @@ -53,7 +53,7 @@ Index: linux-3.10.0-123.13.2.el7.x86_64/fs/ext4/inode.c --- linux-3.10.0-123.13.2.el7.x86_64.orig/fs/ext4/inode.c +++ linux-3.10.0-123.13.2.el7.x86_64/fs/ext4/inode.c @@ -133,8 +183,6 @@ void ext4_evict_inode(struct inode *inod - unsigned int length); + unsigned int length); static int __ext4_journalled_writepage(struct page *page, unsigned int len); static int ext4_bh_delay_or_unwritten(handle_t *handle, struct buffer_head *bh); -static int ext4_meta_trans_blocks(struct inode *inode, int lblocks, @@ -135,7 +135,7 @@ Index: linux-3.10.0-123.13.2.el7.x86_64/fs/ext4/inode.c */ -static int ext4_meta_trans_blocks(struct inode *inode, int lblocks, +int ext4_meta_trans_blocks(struct inode *inode, int lblocks, - int pextents) + int pextents) { ext4_group_t groups, ngroups = ext4_get_groups_count(inode->i_sb); int gdpblocks; @@ -345,7 +345,7 @@ Index: linux-3.10.0-123.13.2.el7.x86_64/fs/ext4/xattr.c size_t offs = le16_to_cpu(last->e_value_offs); if (offs < *min_offs) *min_offs = offs; -@@ -577,16 +693,171 @@ static size_t ext4_xattr_free_space(stru +@@ -577,16 +693,172 @@ static size_t ext4_xattr_free_space(stru return (*min_offs - ((void *)last - base) - sizeof(__u32)); } @@ -370,7 +370,8 @@ Index: linux-3.10.0-123.13.2.el7.x86_64/fs/ext4/xattr.c + map.m_lblk = block += ret; + map.m_len = max_blocks -= ret; + -+ ret = ext4_map_blocks(handle, ea_inode, &map, EXT4_GET_BLOCKS_CREATE); ++ ret = ext4_map_blocks(handle, ea_inode, &map, ++ EXT4_GET_BLOCKS_CREATE); + if (ret <= 0) { + ext4_mark_inode_dirty(handle, ea_inode); + if (ret == -ENOSPC && @@ -772,7 +773,7 @@ Index: linux-3.10.0-123.13.2.el7.x86_64/fs/ext4/xattr.c + return -ENOMEM; + memcpy(new_array, *lea_ino_array, + offsetof(struct ext4_xattr_ino_array, -+ xia_inodes[count])); ++ xia_inodes[count])); + kfree(*lea_ino_array); + *lea_ino_array = new_array; + } diff --git a/ldiskfs/kernel_patches/patches/rhel7/ext4-lookup-dotdot.patch b/ldiskfs/kernel_patches/patches/rhel7/ext4-lookup-dotdot.patch index f4318c5..4b9e658 100644 --- a/ldiskfs/kernel_patches/patches/rhel7/ext4-lookup-dotdot.patch +++ b/ldiskfs/kernel_patches/patches/rhel7/ext4-lookup-dotdot.patch @@ -2,15 +2,16 @@ Index: linux-3.10.9-200.fc17.x86_64/fs/ext4/namei.c =================================================================== --- linux-3.10.9-200.fc17.x86_64.orig/fs/ext4/namei.c +++ linux-3.10.9-200.fc17.x86_64/fs/ext4/namei.c -@@ -1438,6 +1438,32 @@ static struct dentry *ext4_lookup(struct +@@ -1438,6 +1438,33 @@ static struct dentry *ext4_lookup(struct return ERR_PTR(-EIO); } } + /* ".." shouldn't go into dcache to preserve dcache hierarchy + * otherwise we'll get parent being a child of actual child. + * see bug 10458 for details -bzzz */ -+ if (inode && (dentry->d_name.name[0] == '.' && (dentry->d_name.len == 1 || -+ (dentry->d_name.len == 2 && dentry->d_name.name[1] == '.')))) { ++ if (inode && (dentry->d_name.name[0] == '.' && ++ (dentry->d_name.len == 1 || (dentry->d_name.len == 2 && ++ dentry->d_name.name[1] == '.')))) { + struct dentry *goal = NULL; + + /* first, look for an existing dentry - any one is good */ diff --git a/ldiskfs/kernel_patches/patches/rhel7/ext4-max-dir-size.patch b/ldiskfs/kernel_patches/patches/rhel7/ext4-max-dir-size.patch index 9c8fc00..c8be84e 100644 --- a/ldiskfs/kernel_patches/patches/rhel7/ext4-max-dir-size.patch +++ b/ldiskfs/kernel_patches/patches/rhel7/ext4-max-dir-size.patch @@ -7,7 +7,7 @@ Index: linux-3.10.0-123.13.2.el7.x86_64/fs/ext4/super.c @@ -2476,8 +2476,11 @@ static ssize_t sbi_ui_show(struct ext4_a struct ext4_sb_info *sbi, char *buf) { - unsigned int *ui = (unsigned int *) (((char *) sbi) + a->u.offset); + unsigned int *ui = (unsigned int *) (((char *) sbi) + a->u.offset); + unsigned int v = *ui; - return snprintf(buf, PAGE_SIZE, "%u\n", *ui); diff --git a/ldiskfs/kernel_patches/patches/rhel7/ext4-mballoc-extra-checks.patch b/ldiskfs/kernel_patches/patches/rhel7/ext4-mballoc-extra-checks.patch index 1716625..e207262 100644 --- a/ldiskfs/kernel_patches/patches/rhel7/ext4-mballoc-extra-checks.patch +++ b/ldiskfs/kernel_patches/patches/rhel7/ext4-mballoc-extra-checks.patch @@ -50,7 +50,7 @@ Index: linux-3.10.0-123.el7.x86_64/fs/ext4/mballoc.c - grp->bb_free); - set_bit(EXT4_GROUP_INFO_BBITMAP_CORRUPT_BIT, &grp->bb_state); + struct ext4_group_desc *gdp; -+ gdp = ext4_get_group_desc (sb, group, NULL); ++ gdp = ext4_get_group_desc(sb, group, NULL); + ext4_error(sb, "group %lu: %u blocks in bitmap, %u in bb, " + "%u in gd, %lu pa's\n", (long unsigned int)group, + free, grp->bb_free, ext4_free_group_clusters(sb, gdp), @@ -209,7 +209,7 @@ Index: linux-3.10.0-123.el7.x86_64/fs/ext4/mballoc.c + int err; int len; -+ gdp = ext4_get_group_desc (sb, group, NULL); ++ gdp = ext4_get_group_desc(sb, group, NULL); + if (gdp == NULL) + return -EIO; + @@ -233,7 +233,7 @@ Index: linux-3.10.0-123.el7.x86_64/fs/ext4/mballoc.c BUG_ON(groupnr != group); ext4_set_bits(bitmap, start, len); preallocated += len; -+ count ++; ++ count++; + } + if (count + skip != grp->bb_prealloc_nr) { + ext4_error(sb, "lost preallocations: " diff --git a/ldiskfs/kernel_patches/patches/rhel7/ext4-misc.patch b/ldiskfs/kernel_patches/patches/rhel7/ext4-misc.patch index a7acd6d..1af746a 100644 --- a/ldiskfs/kernel_patches/patches/rhel7/ext4-misc.patch +++ b/ldiskfs/kernel_patches/patches/rhel7/ext4-misc.patch @@ -121,10 +121,10 @@ Index: linux-3.10.0-123.13.2.el7.x86_64/fs/ext4/mballoc.c --- linux-3.10.0-123.13.2.el7.x86_64.orig/fs/ext4/mballoc.c +++ linux-3.10.0-123.13.2.el7.x86_64/fs/ext4/mballoc.c @@ -5281,7 +5281,6 @@ out: - void *buddy, void *bitmap, ext4_group_t group) + void *buddy, void *bitmap, ext4_group_t group) { - struct ext4_group_info *grp = ext4_get_group_info(sb, group); + struct ext4_group_info *grp = ext4_get_group_info(sb, group); - struct ext4_sb_info *sbi = EXT4_SB(sb); - ext4_grpblk_t max = EXT4_CLUSTERS_PER_GROUP(sb); - ext4_grpblk_t i = 0; - ext4_grpblk_t first; + ext4_grpblk_t max = EXT4_CLUSTERS_PER_GROUP(sb); + ext4_grpblk_t i = 0; + ext4_grpblk_t first; diff --git a/ldiskfs/kernel_patches/patches/rhel7/ext4-nocmtime.patch b/ldiskfs/kernel_patches/patches/rhel7/ext4-nocmtime.patch index 403627a..2212a34 100644 --- a/ldiskfs/kernel_patches/patches/rhel7/ext4-nocmtime.patch +++ b/ldiskfs/kernel_patches/patches/rhel7/ext4-nocmtime.patch @@ -11,7 +11,7 @@ Index: linux-3.10.0-123.13.2.el7.x86_64/fs/ext4/ext4.h static inline struct timespec ext4_current_time(struct inode *inode) { + if (IS_NOCMTIME(inode)) -+ return inode->i_ctime; ++ return inode->i_ctime; return (inode->i_sb->s_time_gran < NSEC_PER_SEC) ? current_fs_time(inode->i_sb) : CURRENT_TIME_SEC; } diff --git a/ldiskfs/kernel_patches/patches/rhel7/ext4-osd-iop-common.patch b/ldiskfs/kernel_patches/patches/rhel7/ext4-osd-iop-common.patch index a351b61..ddbe93d 100644 --- a/ldiskfs/kernel_patches/patches/rhel7/ext4-osd-iop-common.patch +++ b/ldiskfs/kernel_patches/patches/rhel7/ext4-osd-iop-common.patch @@ -7,10 +7,10 @@ Index: linux-3.10.0-123.13.2.el7.x86_64/fs/ext4/ext4.h extern int ext4_htree_fill_tree(struct file *dir_file, __u32 start_hash, __u32 start_minor_hash, __u32 *next_hash); +extern struct inode *ext4_create_inode(handle_t *handle, -+ struct inode * dir, int mode); ++ struct inode *dir, int mode); +extern int ext4_delete_entry(handle_t *handle, struct inode * dir, -+ struct ext4_dir_entry_2 * de_del, -+ struct buffer_head * bh); ++ struct ext4_dir_entry_2 *de_del, ++ struct buffer_head *bh); +extern int ext4_add_dot_dotdot(handle_t *handle, struct inode *dir, + struct inode *inode); extern int search_dir(struct buffer_head *bh, @@ -44,7 +44,7 @@ Index: linux-3.10.0-123.13.2.el7.x86_64/fs/ext4/namei.c + /* Return locked inode, then the caller can modify the inode's states/flags + * before others finding it. The caller should unlock the inode by itself. */ -+struct inode * ext4_create_inode(handle_t *handle, struct inode * dir, int mode) ++struct inode *ext4_create_inode(handle_t *handle, struct inode *dir, int mode) +{ + struct inode *inode; + @@ -73,7 +73,7 @@ Index: linux-3.10.0-123.13.2.el7.x86_64/fs/ext4/namei.c +/* Initialize @inode as a subdirectory of @dir, and add the + * "." and ".." entries into the first directory block. */ -+int ext4_add_dot_dotdot(handle_t *handle, struct inode * dir, ++int ext4_add_dot_dotdot(handle_t *handle, struct inode *dir, + struct inode *inode) +{ + if (IS_ERR(handle)) diff --git a/ldiskfs/kernel_patches/patches/rhel7/ext4-pdirop.patch b/ldiskfs/kernel_patches/patches/rhel7/ext4-pdirop.patch index 3e1b56a..a59671a 100644 --- a/ldiskfs/kernel_patches/patches/rhel7/ext4-pdirop.patch +++ b/ldiskfs/kernel_patches/patches/rhel7/ext4-pdirop.patch @@ -1516,7 +1516,7 @@ Index: linux-3.10.0-229.1.2.fc21.x86_64/fs/ext4/namei.c unsigned count, indirect; - struct dx_entry *at, *entries, *p, *q, *m; + struct dx_entry *at, *entries, *p, *q, *m, *dx = NULL; - struct dx_root_info * info; + struct dx_root_info *info; struct buffer_head *bh; struct dx_frame *frame = frame_in; @@ -750,8 +980,15 @@ dx_probe(const struct qstr *d_name, stru diff --git a/ldiskfs/kernel_patches/patches/rhel7/ext4-prealloc.patch b/ldiskfs/kernel_patches/patches/rhel7/ext4-prealloc.patch index 63f8837..622d542 100644 --- a/ldiskfs/kernel_patches/patches/rhel7/ext4-prealloc.patch +++ b/ldiskfs/kernel_patches/patches/rhel7/ext4-prealloc.patch @@ -48,7 +48,7 @@ Index: linux-3.10.0-123.el7.x86_64/fs/ext4/mballoc.c /* * The routine scans buddy structures (not bitmap!) from given order * to max order and tries to find big enough chunk to satisfy the req -@@ -2263,6 +2282,86 @@ static const struct seq_operations ext4_ +@@ -2263,6 +2282,91 @@ static const struct seq_operations ext4_ .show = ext4_mb_seq_groups_show, }; @@ -77,8 +77,12 @@ Index: linux-3.10.0-123.el7.x86_64/fs/ext4/mballoc.c + cur = str; + end = str + cnt; + while (cur < end) { -+ while ((cur < end) && (*cur == ' ')) cur++; -+ value = simple_strtol(cur, &cur, 0); ++ int rc; ++ while ((cur < end) && (*cur == ' ')) ++ cur++; ++ rc = kstrtol(cur, 0, &value); ++ if (rc != 0) ++ return -EINVAL; + if (value == 0) + break; + if (value <= prev) @@ -97,7 +101,8 @@ Index: linux-3.10.0-123.el7.x86_64/fs/ext4/mballoc.c + cur = str; + end = str + cnt; + while (cur < end && i < num) { -+ while ((cur < end) && (*cur == ' ')) cur++; ++ while (cur < end && *cur == ' ') ++ cur++; + value = simple_strtol(cur, &cur, 0); + ext4_mb_prealloc_table_add(sbi, value); + i++; @@ -108,7 +113,7 @@ Index: linux-3.10.0-123.el7.x86_64/fs/ext4/mballoc.c + +static int mb_prealloc_table_seq_show(struct seq_file *m, void *v) +{ -+ struct ext4_sb_info *sbi = EXT4_SB(m->private); ++ struct ext4_sb_info *sbi = EXT4_SB(m->private); + int i; + + for (i = 0; i < sbi->s_mb_prealloc_table_size; i++) @@ -123,7 +128,7 @@ Index: linux-3.10.0-123.el7.x86_64/fs/ext4/mballoc.c + return single_open(file, mb_prealloc_table_seq_show, PDE_DATA(inode)); +} + -+struct file_operations ext4_mb_prealloc_seq_fops = { ++static const struct file_operations ext4_mb_prealloc_seq_fops = { + .owner = THIS_MODULE, + .open = mb_prealloc_table_seq_open, + .read = seq_read, @@ -375,13 +380,12 @@ Index: linux-3.10.0-123.el7.x86_64/fs/ext4/inode.c =================================================================== --- linux-3.10.0-123.el7.x86_64.orig/fs/ext4/inode.c +++ linux-3.10.0-123.el7.x86_64/fs/ext4/inode.c -@@ -2476,6 +2476,10 @@ static int ext4_da_writepages(struct add +@@ -2476,6 +2476,9 @@ static int ext4_da_writepages(struct add if (unlikely(sbi->s_mount_flags & EXT4_MF_FS_ABORTED)) return -EROFS; -+ if (wbc->nr_to_write < sbi->s_mb_small_req) { ++ if (wbc->nr_to_write < sbi->s_mb_small_req) + wbc->nr_to_write = sbi->s_mb_small_req; -+ } + if (wbc->range_start == 0 && wbc->range_end == LLONG_MAX) range_whole = 1; diff --git a/ldiskfs/kernel_patches/patches/sles11sp2/export-ext4-3.0.patch b/ldiskfs/kernel_patches/patches/sles11sp2/export-ext4-3.0.patch index 7a950a2..3595d48 100644 --- a/ldiskfs/kernel_patches/patches/sles11sp2/export-ext4-3.0.patch +++ b/ldiskfs/kernel_patches/patches/sles11sp2/export-ext4-3.0.patch @@ -203,14 +203,6 @@ Index: linux-stage/fs/ext4/super.c void ext4_block_bitmap_set(struct super_block *sb, struct ext4_group_desc *bg, ext4_fsblk_t blk) -@@ -386,6 +387,7 @@ void ext4_journal_abort_handle(const cha - - jbd2_journal_abort_handle(handle); - } -+EXPORT_SYMBOL(ext4_journal_abort_handle); - - static void __save_error_info(struct super_block *sb, const char *func, - unsigned int line) @@ -4280,6 +4282,7 @@ int ext4_force_commit(struct super_block return ret; @@ -219,12 +211,10 @@ Index: linux-stage/fs/ext4/super.c static void ext4_write_super(struct super_block *sb) { -@@ -5210,6 +5213,12 @@ static void __exit ext4_exit_fs(void) +@@ -5210,6 +5213,10 @@ static void __exit ext4_exit_fs(void) ext4_exit_pageio(); } -+EXPORT_SYMBOL(ext4_xattr_get); -+EXPORT_SYMBOL(ext4_xattr_set_handle); +EXPORT_SYMBOL(ext4_bread); +EXPORT_SYMBOL(ext4_journal_start_sb); +EXPORT_SYMBOL(__ext4_journal_stop); -- 1.8.3.1