rpms/kernel/F-9 linux-2.6.27-ext4-2.6.28-backport-fixups.patch, NONE, 1.1 linux-2.6.27-ext4-2.6.28-rc3-git6.patch, NONE, 1.1 kernel.spec, 1.843, 1.844 linux-2.6.27-delay-ext4-free-block-cap-check.patch, 1.1, NONE linux-2.6.27-ext4-calculate-journal-credits-correctly.patch, 1.1, NONE linux-2.6.27-ext4-stable-patch-queue.patch, 1.1, NONE linux-2.6.27-fs-disable-fiemap.patch, 1.1, NONE linux-2.6.28-ext4-wait-on-all-pending-commits-in-ext4_sync_fs.patch, 1.1, NONE linux-2.6.28-jbd2-dont-give-up-looking-for-space-so-easily.patch, 1.1, NONE
Chuck Ebbert
cebbert at fedoraproject.org
Sun Nov 9 20:35:35 UTC 2008
- Previous message (by thread): rpms/em8300/F-10 .cvsignore, 1.18, 1.19 em8300.spec, 1.24, 1.25 sources, 1.18, 1.19
- Next message (by thread): rpms/kernel/F-10 linux-2.6.27-ext4-2.6.28-backport-fixups.patch, NONE, 1.1 linux-2.6.27-ext4-2.6.28-rc3-git6.patch, NONE, 1.1 kernel.spec, 1.1125, 1.1126 linux-2.6.27-delay-ext4-free-block-cap-check.patch, 1.1, NONE linux-2.6.27-ext4-stable-patch-queue.patch, 1.2, NONE linux-2.6.27-fs-disable-fiemap.patch, 1.1, NONE
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Author: cebbert
Update of /cvs/pkgs/rpms/kernel/F-9
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv3341
Modified Files:
kernel.spec
Added Files:
linux-2.6.27-ext4-2.6.28-backport-fixups.patch
linux-2.6.27-ext4-2.6.28-rc3-git6.patch
Removed Files:
linux-2.6.27-delay-ext4-free-block-cap-check.patch
linux-2.6.27-ext4-calculate-journal-credits-correctly.patch
linux-2.6.27-ext4-stable-patch-queue.patch
linux-2.6.27-fs-disable-fiemap.patch
linux-2.6.28-ext4-wait-on-all-pending-commits-in-ext4_sync_fs.patch
linux-2.6.28-jbd2-dont-give-up-looking-for-space-so-easily.patch
Log Message:
ext4 updates to 2.6.28-rc3
linux-2.6.27-ext4-2.6.28-backport-fixups.patch:
--- NEW FILE linux-2.6.27-ext4-2.6.28-backport-fixups.patch ---
Index: linux-2.6.27.x86_64/include/linux/writeback.h
===================================================================
--- linux-2.6.27.x86_64.orig/include/linux/writeback.h
+++ linux-2.6.27.x86_64/include/linux/writeback.h
@@ -63,7 +63,15 @@ struct writeback_control {
unsigned for_writepages:1; /* This is a writepages() call */
unsigned range_cyclic:1; /* range_start is cyclic */
unsigned more_io:1; /* more io to be dispatched */
- unsigned range_cont:1;
+ /*
+ * write_cache_pages() won't update wbc->nr_to_write and
+ * mapping->writeback_index if no_nrwrite_index_update
+ * is set. write_cache_pages() may write more than we
+ * requested and we want to make sure nr_to_write and
+ * writeback_index are updated in a consistent manner
+ * so we use a single control to update them
+ */
+ unsigned no_nrwrite_index_update:1;
};
/*
Index: linux-2.6.27.x86_64/mm/page-writeback.c
===================================================================
--- linux-2.6.27.x86_64.orig/mm/page-writeback.c
+++ linux-2.6.27.x86_64/mm/page-writeback.c
@@ -876,6 +876,7 @@ int write_cache_pages(struct address_spa
pgoff_t end; /* Inclusive */
int scanned = 0;
int range_whole = 0;
+ long nr_to_write = wbc->nr_to_write;
if (wbc->nonblocking && bdi_write_congested(bdi)) {
wbc->encountered_congestion = 1;
@@ -939,7 +940,7 @@ retry:
unlock_page(page);
ret = 0;
}
- if (ret || (--(wbc->nr_to_write) <= 0))
+ if (ret || (--nr_to_write <= 0))
done = 1;
if (wbc->nonblocking && bdi_write_congested(bdi)) {
wbc->encountered_congestion = 1;
@@ -958,11 +959,12 @@ retry:
index = 0;
goto retry;
}
- if (wbc->range_cyclic || (range_whole && wbc->nr_to_write > 0))
- mapping->writeback_index = index;
+ if (!wbc->no_nrwrite_index_update) {
+ if (wbc->range_cyclic || (range_whole && nr_to_write > 0))
+ mapping->writeback_index = index;
+ wbc->nr_to_write = nr_to_write;
+ }
- if (wbc->range_cont)
- wbc->range_start = index << PAGE_CACHE_SHIFT;
return ret;
}
EXPORT_SYMBOL(write_cache_pages);
Index: linux-2.6.27.x86_64/include/linux/percpu_counter.h
===================================================================
--- linux-2.6.27.x86_64.orig/include/linux/percpu_counter.h
+++ linux-2.6.27.x86_64/include/linux/percpu_counter.h
@@ -35,7 +35,7 @@ int percpu_counter_init_irq(struct percp
void percpu_counter_destroy(struct percpu_counter *fbc);
void percpu_counter_set(struct percpu_counter *fbc, s64 amount);
void __percpu_counter_add(struct percpu_counter *fbc, s64 amount, s32 batch);
-s64 __percpu_counter_sum(struct percpu_counter *fbc, int set);
+s64 __percpu_counter_sum(struct percpu_counter *fbc);
static inline void percpu_counter_add(struct percpu_counter *fbc, s64 amount)
{
@@ -44,19 +44,13 @@ static inline void percpu_counter_add(st
static inline s64 percpu_counter_sum_positive(struct percpu_counter *fbc)
{
- s64 ret = __percpu_counter_sum(fbc, 0);
+ s64 ret = __percpu_counter_sum(fbc);
return ret < 0 ? 0 : ret;
}
-static inline s64 percpu_counter_sum_and_set(struct percpu_counter *fbc)
-{
- return __percpu_counter_sum(fbc, 1);
-}
-
-
static inline s64 percpu_counter_sum(struct percpu_counter *fbc)
{
- return __percpu_counter_sum(fbc, 0);
+ return __percpu_counter_sum(fbc);
}
static inline s64 percpu_counter_read(struct percpu_counter *fbc)
Index: linux-2.6.27.x86_64/lib/percpu_counter.c
===================================================================
--- linux-2.6.27.x86_64.orig/lib/percpu_counter.c
+++ linux-2.6.27.x86_64/lib/percpu_counter.c
@@ -52,7 +52,7 @@ EXPORT_SYMBOL(__percpu_counter_add);
* Add up all the per-cpu counts, return the result. This is a more accurate
* but much slower version of percpu_counter_read_positive()
*/
-s64 __percpu_counter_sum(struct percpu_counter *fbc, int set)
+s64 __percpu_counter_sum(struct percpu_counter *fbc)
{
s64 ret;
int cpu;
@@ -62,11 +62,9 @@ s64 __percpu_counter_sum(struct percpu_c
for_each_online_cpu(cpu) {
s32 *pcount = per_cpu_ptr(fbc->counters, cpu);
ret += *pcount;
- if (set)
- *pcount = 0;
+ *pcount = 0;
}
- if (set)
- fbc->count = ret;
+ fbc->count = ret;
spin_unlock(&fbc->lock);
return ret;
Index: linux-2.6.27.x86_64/fs/ext4/namei.c
===================================================================
--- linux-2.6.27.x86_64.orig/fs/ext4/namei.c
+++ linux-2.6.27.x86_64/fs/ext4/namei.c
@@ -1061,6 +1061,7 @@ static struct dentry *ext4_lookup(struct
struct dentry *ext4_get_parent(struct dentry *child)
{
unsigned long ino;
+ struct dentry *parent;
struct inode *inode;
static const struct qstr dotdot = {
.name = "..",
@@ -1082,7 +1083,16 @@ struct dentry *ext4_get_parent(struct de
return ERR_PTR(-EIO);
}
- return d_obtain_alias(ext4_iget(child->d_inode->i_sb, ino));
+ inode = ext4_iget(child->d_inode->i_sb, ino);
+ if (IS_ERR(inode))
+ return ERR_CAST(inode);
+
+ parent = d_alloc_anon(inode);
+ if (!parent) {
+ iput(inode);
+ parent = ERR_PTR(-ENOMEM);
+ }
+ return parent;
}
#define S_SHIFT 12
Index: linux-2.6.27.x86_64/fs/ext4/super.c
===================================================================
--- linux-2.6.27.x86_64.orig/fs/ext4/super.c
+++ linux-2.6.27.x86_64/fs/ext4/super.c
@@ -400,7 +400,7 @@ fail:
static int ext4_blkdev_put(struct block_device *bdev)
{
bd_release(bdev);
- return blkdev_put(bdev, FMODE_READ|FMODE_WRITE);
+ return blkdev_put(bdev);
}
static int ext4_blkdev_remove(struct ext4_sb_info *sbi)
@@ -862,7 +862,7 @@ enum {
Opt_inode_readahead_blks
};
-static const match_table_t tokens = {
+static match_table_t tokens = {
{Opt_bsd_df, "bsddf"},
{Opt_minix_df, "minixdf"},
{Opt_grpid, "grpid"},
@@ -2555,7 +2555,7 @@ static journal_t *ext4_get_dev_journal(s
if (bd_claim(bdev, sb)) {
printk(KERN_ERR
"EXT4: failed to claim external journal device.\n");
- blkdev_put(bdev, FMODE_READ|FMODE_WRITE);
+ blkdev_put(bdev);
return NULL;
}
@@ -3327,30 +3327,30 @@ static int ext4_quota_on_mount(struct su
* Standard function to be called on quota_on
*/
static int ext4_quota_on(struct super_block *sb, int type, int format_id,
- char *name, int remount)
+ char *path, int remount)
{
int err;
- struct path path;
+ struct nameidata nd;
if (!test_opt(sb, QUOTA))
return -EINVAL;
- /* When remounting, no checks are needed and in fact, name is NULL */
+ /* When remounting, no checks are needed and in fact, path is NULL */
if (remount)
- return vfs_quota_on(sb, type, format_id, name, remount);
+ return vfs_quota_on(sb, type, format_id, path, remount);
- err = kern_path(name, LOOKUP_FOLLOW, &path);
+ err = path_lookup(path, LOOKUP_FOLLOW, &nd);
if (err)
return err;
/* Quotafile not on the same filesystem? */
- if (path.mnt->mnt_sb != sb) {
- path_put(&path);
+ if (nd.path.mnt->mnt_sb != sb) {
+ path_put(&nd.path);
return -EXDEV;
}
/* Journaling quota? */
if (EXT4_SB(sb)->s_qf_names[type]) {
/* Quotafile not in fs root? */
- if (path.dentry->d_parent != sb->s_root)
+ if (nd.path.dentry->d_parent->d_inode != sb->s_root->d_inode)
printk(KERN_WARNING
"EXT4-fs: Quota file not on filesystem root. "
"Journaled quota will not work.\n");
@@ -3360,7 +3360,7 @@ static int ext4_quota_on(struct super_bl
* When we journal data on quota file, we have to flush journal to see
* all updates to the file when we bypass pagecache...
*/
- if (ext4_should_journal_data(path.dentry->d_inode)) {
+ if (ext4_should_journal_data(nd.path.dentry->d_inode)) {
/*
* We don't need to lock updates but journal_flush() could
* otherwise be livelocked...
@@ -3369,13 +3369,13 @@ static int ext4_quota_on(struct super_bl
err = jbd2_journal_flush(EXT4_SB(sb)->s_journal);
jbd2_journal_unlock_updates(EXT4_SB(sb)->s_journal);
if (err) {
- path_put(&path);
+ path_put(&nd.path);
return err;
}
}
- err = vfs_quota_on_path(sb, type, format_id, &path);
- path_put(&path);
+ err = vfs_quota_on_path(sb, type, format_id, &nd.path);
+ path_put(&nd.path);
return err;
}
Index: linux-2.6.27.x86_64/fs/ext4/mballoc.c
===================================================================
--- linux-2.6.27.x86_64.orig/fs/ext4/mballoc.c
+++ linux-2.6.27.x86_64/fs/ext4/mballoc.c
@@ -2646,7 +2646,6 @@ static void release_blocks_on_commit(jou
struct ext4_group_info *db;
int err, count = 0, count2 = 0;
struct ext4_free_data *entry;
- ext4_fsblk_t discard_block;
struct list_head *l, *ltmp;
list_for_each_safe(l, ltmp, &txn->t_private_list) {
@@ -2676,12 +2675,6 @@ static void release_blocks_on_commit(jou
page_cache_release(e4b.bd_bitmap_page);
}
ext4_unlock_group(sb, entry->group);
- discard_block = (ext4_fsblk_t) entry->group * EXT4_BLOCKS_PER_GROUP(sb)
- + entry->start_blk
- + le32_to_cpu(EXT4_SB(sb)->s_es->s_first_data_block);
- trace_mark(ext4_discard_blocks, "dev %s blk %llu count %u", sb->s_id,
- (unsigned long long) discard_block, entry->count);
- sb_issue_discard(sb, discard_block, entry->count);
kmem_cache_free(ext4_free_ext_cachep, entry);
ext4_mb_release_desc(&e4b);
Index: linux-2.6.27.x86_64/fs/ext4/file.c
===================================================================
--- linux-2.6.27.x86_64.orig/fs/ext4/file.c
+++ linux-2.6.27.x86_64/fs/ext4/file.c
@@ -140,9 +140,6 @@ static int ext4_file_mmap(struct file *f
return 0;
}
-extern int ext4_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo,
- __u64 start, __u64 len);
-
const struct file_operations ext4_file_operations = {
.llseek = generic_file_llseek,
.read = do_sync_read,
@@ -173,6 +170,5 @@ const struct inode_operations ext4_file_
#endif
.permission = ext4_permission,
.fallocate = ext4_fallocate,
- .fiemap = ext4_fiemap,
};
Index: linux-2.6.27.x86_64/fs/ext4/extents.c
===================================================================
--- linux-2.6.27.x86_64.orig/fs/ext4/extents.c
+++ linux-2.6.27.x86_64/fs/ext4/extents.c
@@ -40,7 +40,6 @@
#include <linux/slab.h>
#include <linux/falloc.h>
#include <asm/uaccess.h>
-#include <linux/fiemap.h>
#include "ext4_jbd2.h"
#include "ext4_extents.h"
@@ -3079,143 +3078,3 @@ retry:
mutex_unlock(&inode->i_mutex);
return ret > 0 ? ret2 : ret;
}
-
-/*
- * Callback function called for each extent to gather FIEMAP information.
- */
-int ext4_ext_fiemap_cb(struct inode *inode, struct ext4_ext_path *path,
- struct ext4_ext_cache *newex, struct ext4_extent *ex,
- void *data)
-{
- struct fiemap_extent_info *fieinfo = data;
- unsigned long blksize_bits = inode->i_sb->s_blocksize_bits;
- __u64 logical;
- __u64 physical;
- __u64 length;
- __u32 flags = 0;
- int error;
-
- logical = (__u64)newex->ec_block << blksize_bits;
-
- if (newex->ec_type == EXT4_EXT_CACHE_GAP) {
- pgoff_t offset;
- struct page *page;
- struct buffer_head *bh = NULL;
-
- offset = logical >> PAGE_SHIFT;
- page = find_get_page(inode->i_mapping, offset);
- if (!page || !page_has_buffers(page))
- return EXT_CONTINUE;
-
- bh = page_buffers(page);
-
- if (!bh)
- return EXT_CONTINUE;
-
- if (buffer_delay(bh)) {
- flags |= FIEMAP_EXTENT_DELALLOC;
- page_cache_release(page);
- } else {
- page_cache_release(page);
- return EXT_CONTINUE;
- }
- }
-
- physical = (__u64)newex->ec_start << blksize_bits;
- length = (__u64)newex->ec_len << blksize_bits;
-
- if (ex && ext4_ext_is_uninitialized(ex))
- flags |= FIEMAP_EXTENT_UNWRITTEN;
-
- /*
- * If this extent reaches EXT_MAX_BLOCK, it must be last.
- *
- * Or if ext4_ext_next_allocated_block is EXT_MAX_BLOCK,
- * this also indicates no more allocated blocks.
- *
- * XXX this might miss a single-block extent at EXT_MAX_BLOCK
- */
- if (logical + length - 1 == EXT_MAX_BLOCK ||
- ext4_ext_next_allocated_block(path) == EXT_MAX_BLOCK)
- flags |= FIEMAP_EXTENT_LAST;
-
- error = fiemap_fill_next_extent(fieinfo, logical, physical,
- length, flags);
- if (error < 0)
- return error;
- if (error == 1)
- return EXT_BREAK;
-
- return EXT_CONTINUE;
-}
-
-/* fiemap flags we can handle specified here */
-#define EXT4_FIEMAP_FLAGS (FIEMAP_FLAG_SYNC|FIEMAP_FLAG_XATTR)
-
-int ext4_xattr_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo)
-{
- __u64 physical = 0;
- __u64 length;
- __u32 flags = FIEMAP_EXTENT_LAST;
- int blockbits = inode->i_sb->s_blocksize_bits;
- int error = 0;
-
- /* in-inode? */
- if (EXT4_I(inode)->i_state & EXT4_STATE_XATTR) {
- struct ext4_iloc iloc;
- int offset; /* offset of xattr in inode */
-
- error = ext4_get_inode_loc(inode, &iloc);
- if (error)
- return error;
- physical = iloc.bh->b_blocknr << blockbits;
- offset = EXT4_GOOD_OLD_INODE_SIZE +
- EXT4_I(inode)->i_extra_isize;
- physical += offset;
- length = EXT4_SB(inode->i_sb)->s_inode_size - offset;
- flags |= FIEMAP_EXTENT_DATA_INLINE;
- } else { /* external block */
- physical = EXT4_I(inode)->i_file_acl << blockbits;
- length = inode->i_sb->s_blocksize;
- }
-
- if (physical)
- error = fiemap_fill_next_extent(fieinfo, 0, physical,
- length, flags);
- return (error < 0 ? error : 0);
-}
-
-int ext4_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo,
- __u64 start, __u64 len)
-{
- ext4_lblk_t start_blk;
- ext4_lblk_t len_blks;
- int error = 0;
-
- /* fallback to generic here if not in extents fmt */
- if (!(EXT4_I(inode)->i_flags & EXT4_EXTENTS_FL))
- return generic_block_fiemap(inode, fieinfo, start, len,
- ext4_get_block);
-
- if (fiemap_check_flags(fieinfo, EXT4_FIEMAP_FLAGS))
- return -EBADR;
-
- if (fieinfo->fi_flags & FIEMAP_FLAG_XATTR) {
- error = ext4_xattr_fiemap(inode, fieinfo);
- } else {
- start_blk = start >> inode->i_sb->s_blocksize_bits;
- len_blks = len >> inode->i_sb->s_blocksize_bits;
-
- /*
- * Walk the extent tree gathering extent information.
- * ext4_ext_fiemap_cb will push extents back to user.
- */
- down_write(&EXT4_I(inode)->i_data_sem);
- error = ext4_ext_walk_space(inode, start_blk, len_blks,
- ext4_ext_fiemap_cb, fieinfo);
- up_write(&EXT4_I(inode)->i_data_sem);
- }
-
- return error;
-}
-
linux-2.6.27-ext4-2.6.28-rc3-git6.patch:
--- NEW FILE linux-2.6.27-ext4-2.6.28-rc3-git6.patch ---
Index: linux-2.6.27.x86_64/MAINTAINERS
===================================================================
--- linux-2.6.27.x86_64.orig/MAINTAINERS
+++ linux-2.6.27.x86_64/MAINTAINERS
@@ -1648,9 +1648,10 @@ L: linux-ext4 at vger.kernel.org
S: Maintained
EXT4 FILE SYSTEM
-P: Stephen Tweedie, Andrew Morton
-M: sct at redhat.com, akpm at linux-foundation.org, adilger at sun.com
+P: Theodore Ts'o
+M: tytso at mit.edu, adilger at sun.com
L: linux-ext4 at vger.kernel.org
+W: http://ext4.wiki.kernel.org
S: Maintained
F71805F HARDWARE MONITORING DRIVER
Index: linux-2.6.27.x86_64/fs/Makefile
===================================================================
--- linux-2.6.27.x86_64.orig/fs/Makefile
+++ linux-2.6.27.x86_64/fs/Makefile
@@ -69,7 +69,7 @@ obj-$(CONFIG_DLM) += dlm/
# Do not add any filesystems before this line
obj-$(CONFIG_REISERFS_FS) += reiserfs/
obj-$(CONFIG_EXT3_FS) += ext3/ # Before ext2 so root fs can be ext3
-obj-$(CONFIG_EXT4DEV_FS) += ext4/ # Before ext2 so root fs can be ext4dev
+obj-$(CONFIG_EXT4_FS) += ext4/ # Before ext2 so root fs can be ext4
obj-$(CONFIG_JBD) += jbd/
obj-$(CONFIG_JBD2) += jbd2/
obj-$(CONFIG_EXT2_FS) += ext2/
Index: linux-2.6.27.x86_64/fs/ext4/acl.h
===================================================================
--- linux-2.6.27.x86_64.orig/fs/ext4/acl.h
+++ linux-2.6.27.x86_64/fs/ext4/acl.h
@@ -51,18 +51,18 @@ static inline int ext4_acl_count(size_t
}
}
-#ifdef CONFIG_EXT4DEV_FS_POSIX_ACL
+#ifdef CONFIG_EXT4_FS_POSIX_ACL
/* Value for inode->u.ext4_i.i_acl and inode->u.ext4_i.i_default_acl
if the ACL has not been cached */
#define EXT4_ACL_NOT_CACHED ((void *)-1)
/* acl.c */
-extern int ext4_permission (struct inode *, int);
-extern int ext4_acl_chmod (struct inode *);
-extern int ext4_init_acl (handle_t *, struct inode *, struct inode *);
+extern int ext4_permission(struct inode *, int);
+extern int ext4_acl_chmod(struct inode *);
+extern int ext4_init_acl(handle_t *, struct inode *, struct inode *);
-#else /* CONFIG_EXT4DEV_FS_POSIX_ACL */
+#else /* CONFIG_EXT4_FS_POSIX_ACL */
#include <linux/sched.h>
#define ext4_permission NULL
@@ -77,5 +77,5 @@ ext4_init_acl(handle_t *handle, struct i
{
return 0;
}
-#endif /* CONFIG_EXT4DEV_FS_POSIX_ACL */
+#endif /* CONFIG_EXT4_FS_POSIX_ACL */
Index: linux-2.6.27.x86_64/fs/ext4/balloc.c
===================================================================
--- linux-2.6.27.x86_64.orig/fs/ext4/balloc.c
+++ linux-2.6.27.x86_64/fs/ext4/balloc.c
@@ -83,6 +83,7 @@ static int ext4_group_used_meta_blocks(s
}
return used_blocks;
}
+
/* Initializes an uninitialized block bitmap if given, and returns the
* number of blocks free in the group. */
unsigned ext4_init_block_bitmap(struct super_block *sb, struct buffer_head *bh,
@@ -132,7 +133,7 @@ unsigned ext4_init_block_bitmap(struct s
*/
group_blocks = ext4_blocks_count(sbi->s_es) -
le32_to_cpu(sbi->s_es->s_first_data_block) -
- (EXT4_BLOCKS_PER_GROUP(sb) * (sbi->s_groups_count -1));
+ (EXT4_BLOCKS_PER_GROUP(sb) * (sbi->s_groups_count - 1));
} else {
group_blocks = EXT4_BLOCKS_PER_GROUP(sb);
}
@@ -200,20 +201,20 @@ unsigned ext4_init_block_bitmap(struct s
* @bh: pointer to the buffer head to store the block
* group descriptor
*/
-struct ext4_group_desc * ext4_get_group_desc(struct super_block * sb,
+struct ext4_group_desc * ext4_get_group_desc(struct super_block *sb,
ext4_group_t block_group,
- struct buffer_head ** bh)
+ struct buffer_head **bh)
{
unsigned long group_desc;
unsigned long offset;
- struct ext4_group_desc * desc;
+ struct ext4_group_desc *desc;
struct ext4_sb_info *sbi = EXT4_SB(sb);
if (block_group >= sbi->s_groups_count) {
- ext4_error (sb, "ext4_get_group_desc",
- "block_group >= groups_count - "
- "block_group = %lu, groups_count = %lu",
- block_group, sbi->s_groups_count);
+ ext4_error(sb, "ext4_get_group_desc",
+ "block_group >= groups_count - "
+ "block_group = %lu, groups_count = %lu",
+ block_group, sbi->s_groups_count);
return NULL;
}
@@ -222,10 +223,10 @@ struct ext4_group_desc * ext4_get_group_
group_desc = block_group >> EXT4_DESC_PER_BLOCK_BITS(sb);
offset = block_group & (EXT4_DESC_PER_BLOCK(sb) - 1);
if (!sbi->s_group_desc[group_desc]) {
- ext4_error (sb, "ext4_get_group_desc",
- "Group descriptor not loaded - "
- "block_group = %lu, group_desc = %lu, desc = %lu",
- block_group, group_desc, offset);
+ ext4_error(sb, "ext4_get_group_desc",
+ "Group descriptor not loaded - "
+ "block_group = %lu, group_desc = %lu, desc = %lu",
+ block_group, group_desc, offset);
return NULL;
}
@@ -302,8 +303,8 @@ err_out:
struct buffer_head *
ext4_read_block_bitmap(struct super_block *sb, ext4_group_t block_group)
{
- struct ext4_group_desc * desc;
- struct buffer_head * bh = NULL;
+ struct ext4_group_desc *desc;
+ struct buffer_head *bh = NULL;
ext4_fsblk_t bitmap_blk;
desc = ext4_get_group_desc(sb, block_group, NULL);
@@ -318,9 +319,11 @@ ext4_read_block_bitmap(struct super_bloc
block_group, bitmap_blk);
return NULL;
}
- if (bh_uptodate_or_lock(bh))
+ if (buffer_uptodate(bh) &&
+ !(desc->bg_flags & cpu_to_le16(EXT4_BG_BLOCK_UNINIT)))
return bh;
+ lock_buffer(bh);
spin_lock(sb_bgl_lock(EXT4_SB(sb), block_group));
if (desc->bg_flags & cpu_to_le16(EXT4_BG_BLOCK_UNINIT)) {
ext4_init_block_bitmap(sb, bh, block_group, desc);
@@ -345,301 +348,6 @@ ext4_read_block_bitmap(struct super_bloc
*/
return bh;
}
-/*
- * The reservation window structure operations
- * --------------------------------------------
- * Operations include:
- * dump, find, add, remove, is_empty, find_next_reservable_window, etc.
- *
- * We use a red-black tree to represent per-filesystem reservation
- * windows.
- *
- */
-
-/**
- * __rsv_window_dump() -- Dump the filesystem block allocation reservation map
- * @rb_root: root of per-filesystem reservation rb tree
- * @verbose: verbose mode
- * @fn: function which wishes to dump the reservation map
- *
- * If verbose is turned on, it will print the whole block reservation
- * windows(start, end). Otherwise, it will only print out the "bad" windows,
- * those windows that overlap with their immediate neighbors.
- */
-#if 1
-static void __rsv_window_dump(struct rb_root *root, int verbose,
- const char *fn)
-{
- struct rb_node *n;
- struct ext4_reserve_window_node *rsv, *prev;
- int bad;
-
-restart:
- n = rb_first(root);
- bad = 0;
- prev = NULL;
-
- printk("Block Allocation Reservation Windows Map (%s):\n", fn);
- while (n) {
- rsv = rb_entry(n, struct ext4_reserve_window_node, rsv_node);
- if (verbose)
- printk("reservation window 0x%p "
- "start: %llu, end: %llu\n",
- rsv, rsv->rsv_start, rsv->rsv_end);
- if (rsv->rsv_start && rsv->rsv_start >= rsv->rsv_end) {
[...8651 lines suppressed...]
-stats stream_req
-
-mb_groups:
-This file gives the details of multiblock allocator buddy cache of free blocks
-
-mb_history:
-Multiblock allocation history.
-
-stats:
-This file indicate whether the multiblock allocator should start collecting
-statistics. The statistics are shown during unmount
-
-group_prealloc:
-The multiblock allocator normalize the block allocation request to
-group_prealloc filesystem blocks if we don't have strip value set.
-The stripe value can be specified at mount time or during mke2fs.
-
-max_to_scan:
-How long multiblock allocator can look for a best extent (in found extents)
-
-min_to_scan:
-How long multiblock allocator must look for a best extent
-
-order2_req:
-Multiblock allocator use 2^N search using buddies only for requests greater
-than or equal to order2_req. The request size is specfied in file system
-blocks. A value of 2 indicate only if the requests are greater than or equal
-to 4 blocks.
-
-stream_req:
-Files smaller than stream_req are served by the stream allocator, whose
-purpose is to pack requests as close each to other as possible to
-produce smooth I/O traffic. Avalue of 16 indicate that file smaller than 16
-filesystem block size will use group based preallocation.
+
+Information about mounted ext4 file systems can be found in
+/proc/fs/ext4. Each mounted filesystem will have a directory in
+/proc/fs/ext4 based on its device name (i.e., /proc/fs/ext4/hdc or
+/proc/fs/ext4/dm-0). The files in each per-device directory are shown
+in Table 1-10, below.
+
+Table 1-10: Files in /proc/fs/ext4/<devname>
+..............................................................................
+ File Content
+ mb_groups details of multiblock allocator buddy cache of free blocks
+ mb_history multiblock allocation history
+ stats controls whether the multiblock allocator should start
+ collecting statistics, which are shown during the unmount
+ group_prealloc the multiblock allocator will round up allocation
+ requests to a multiple of this tuning parameter if the
+ stripe size is not set in the ext4 superblock
+ max_to_scan The maximum number of extents the multiblock allocator
+ will search to find the best extent
+ min_to_scan The minimum number of extents the multiblock allocator
+ will search to find the best extent
+ order2_req Tuning parameter which controls the minimum size for
+ requests (as a power of 2) where the buddy cache is
+ used
+ stream_req Files which have fewer blocks than this tunable
+ parameter will have their blocks allocated out of a
+ block group specific preallocation pool, so that small
+ files are packed closely together. Each large file
+ will have its blocks allocated out of its own unique
+ preallocation pool.
+inode_readahead Tuning parameter which controls the maximum number of
+ inode table blocks that ext4's inode table readahead
+ algorithm will pre-read into the buffer cache
+..............................................................................
+
------------------------------------------------------------------------------
Summary
Index: linux-2.6.27.x86_64/fs/Kconfig
===================================================================
--- linux-2.6.27.x86_64.orig/fs/Kconfig
+++ linux-2.6.27.x86_64/fs/Kconfig
@@ -136,71 +136,7 @@ config EXT3_FS_SECURITY
If you are not using a security module that requires using
extended attributes for file security labels, say N.
-config EXT4DEV_FS
- tristate "Ext4dev/ext4 extended fs support development (EXPERIMENTAL)"
- depends on EXPERIMENTAL
- select JBD2
- select CRC16
- help
- Ext4dev is a predecessor filesystem of the next generation
- extended fs ext4, based on ext3 filesystem code. It will be
- renamed ext4 fs later, once ext4dev is mature and stabilized.
-
- Unlike the change from ext2 filesystem to ext3 filesystem,
- the on-disk format of ext4dev is not the same as ext3 any more:
- it is based on extent maps and it supports 48-bit physical block
- numbers. These combined on-disk format changes will allow
- ext4dev/ext4 to handle more than 16 TB filesystem volumes --
- a hard limit that ext3 cannot overcome without changing the
- on-disk format.
-
- Other than extent maps and 48-bit block numbers, ext4dev also is
- likely to have other new features such as persistent preallocation,
- high resolution time stamps, and larger file support etc. These
- features will be added to ext4dev gradually.
-
- To compile this file system support as a module, choose M here. The
- module will be called ext4dev.
-
- If unsure, say N.
-
-config EXT4DEV_FS_XATTR
- bool "Ext4dev extended attributes"
- depends on EXT4DEV_FS
- default y
- help
- Extended attributes are name:value pairs associated with inodes by
- the kernel or by users (see the attr(5) manual page, or visit
- <http://acl.bestbits.at/> for details).
-
- If unsure, say N.
-
- You need this for POSIX ACL support on ext4dev/ext4.
-
-config EXT4DEV_FS_POSIX_ACL
- bool "Ext4dev POSIX Access Control Lists"
- depends on EXT4DEV_FS_XATTR
- select FS_POSIX_ACL
- help
- POSIX Access Control Lists (ACLs) support permissions for users and
- groups beyond the owner/group/world scheme.
-
- To learn more about Access Control Lists, visit the POSIX ACLs for
- Linux website <http://acl.bestbits.at/>.
-
- If you don't know what Access Control Lists are, say N
-
-config EXT4DEV_FS_SECURITY
- bool "Ext4dev Security Labels"
- depends on EXT4DEV_FS_XATTR
- help
- Security labels support alternative access control models
- implemented by security modules like SELinux. This option
- enables an extended attribute handler for file security
- labels in the ext4dev/ext4 filesystem.
-
- If you are not using a security module that requires using
- extended attributes for file security labels, say N.
+source "fs/ext4/Kconfig"
config JBD
tristate
@@ -234,45 +170,15 @@ config JBD_DEBUG
output is generated. To turn debugging off again, do
"echo 0 > /sys/kernel/debug/jbd/jbd-debug".
-config JBD2
- tristate
- select CRC32
- help
- This is a generic journaling layer for block devices that support
- both 32-bit and 64-bit block numbers. It is currently used by
- the ext4dev/ext4 filesystem, but it could also be used to add
- journal support to other file systems or block devices such
- as RAID or LVM.
-
- If you are using ext4dev/ext4, you need to say Y here. If you are not
- using ext4dev/ext4 then you will probably want to say N.
-
- To compile this device as a module, choose M here. The module will be
- called jbd2. If you are compiling ext4dev/ext4 into the kernel,
- you cannot compile this code as a module.
-
-config JBD2_DEBUG
- bool "JBD2 (ext4dev/ext4) debugging support"
- depends on JBD2 && DEBUG_FS
- help
- If you are using the ext4dev/ext4 journaled file system (or
- potentially any other filesystem/device using JBD2), this option
- allows you to enable debugging output while the system is running,
- in order to help track down any problems you are having.
- By default, the debugging output will be turned off.
-
- If you select Y here, then you will be able to turn on debugging
- with "echo N > /sys/kernel/debug/jbd2/jbd2-debug", where N is a
- number between 1 and 5. The higher the number, the more debugging
- output is generated. To turn debugging off again, do
- "echo 0 > /sys/kernel/debug/jbd2/jbd2-debug".
+source "fs/jbd2/Kconfig"
config FS_MBCACHE
# Meta block cache for Extended Attributes (ext2/ext3/ext4)
tristate
- depends on EXT2_FS_XATTR || EXT3_FS_XATTR || EXT4DEV_FS_XATTR
- default y if EXT2_FS=y || EXT3_FS=y || EXT4DEV_FS=y
- default m if EXT2_FS=m || EXT3_FS=m || EXT4DEV_FS=m
+ default y if EXT2_FS=y && EXT2_FS_XATTR
+ default y if EXT3_FS=y && EXT3_FS_XATTR
+ default y if EXT4_FS=y && EXT4_FS_XATTR
+ default m if EXT2_FS_XATTR || EXT3_FS_XATTR || EXT4_FS_XATTR
config REISERFS_FS
tristate "Reiserfs support"
Index: kernel.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-9/kernel.spec,v
retrieving revision 1.843
retrieving revision 1.844
diff -u -r1.843 -r1.844
--- kernel.spec 8 Nov 2008 22:13:48 -0000 1.843
+++ kernel.spec 9 Nov 2008 20:35:04 -0000 1.844
@@ -704,15 +704,10 @@
Patch2600: linux-2.6-merge-efifb-imacfb.patch
# ext4 fun - new & improved, now with less dev!
-Patch2900: linux-2.6.27-ext4-stable-patch-queue.patch
-Patch2901: linux-2.6.27-fs-disable-fiemap.patch
+Patch2900: linux-2.6.27-ext4-2.6.28-rc3-git6.patch
+Patch2901: linux-2.6.27-ext4-2.6.28-backport-fixups.patch
# CVE-2008-3528
Patch2902: linux-2.6.27-ext-dir-corruption-fix.patch
-Patch2903: linux-2.6.27-delay-ext4-free-block-cap-check.patch
-
-Patch2905: linux-2.6.27-ext4-calculate-journal-credits-correctly.patch
-Patch2906: linux-2.6.28-ext4-wait-on-all-pending-commits-in-ext4_sync_fs.patch
-Patch2907: linux-2.6.28-jbd2-dont-give-up-looking-for-space-so-easily.patch
# cciss sysfs links are broken
Patch3000: linux-2.6-blk-cciss-fix-regression-sysfs-symlink-missing.patch
@@ -1273,18 +1268,14 @@
# Filesystem patches
# Pending ext4 patch queue, minus fiemap, includes s/ext4dev/ext4
-ApplyPatch linux-2.6.27-ext4-stable-patch-queue.patch
-# Disable fiemap until it is really truly upstream & released
-ApplyPatch linux-2.6.27-fs-disable-fiemap.patch
+# ext4/jbd changes up to 2.6.28-rc3-git6
+ApplyPatch linux-2.6.27-ext4-2.6.28-rc3-git6.patch
+# Fixups for the upstream ext4 code to build cleanly in 2.6.27.
+ApplyPatch linux-2.6.27-ext4-2.6.28-backport-fixups.patch
# CVE-2008-3528, ext-fs dir corruption
+# reverted from the 2.6.27.4 patch in upstream-reverts
+# and applied here after the update
ApplyPatch linux-2.6.27-ext-dir-corruption-fix.patch
-# Delay capability() checks 'til last in ext4
-ApplyPatch linux-2.6.27-delay-ext4-free-block-cap-check.patch
-
-# minimal set of ext4 fixes from upstream
-ApplyPatch linux-2.6.27-ext4-calculate-journal-credits-correctly.patch
-ApplyPatch linux-2.6.28-ext4-wait-on-all-pending-commits-in-ext4_sync_fs.patch
-ApplyPatch linux-2.6.28-jbd2-dont-give-up-looking-for-space-so-easily.patch
# linux1394 git patches
ApplyPatch linux-2.6-firewire-git-update.patch
@@ -1900,6 +1891,9 @@
%kernel_variant_files -a /%{image_install_path}/xen*-%{KVERREL}.xen -e /etc/ld.so.conf.d/kernelcap-%{KVERREL}.xen.conf %{with_xen} xen
%changelog
+* Sun Nov 09 2008 Chuck Ebbert <cebbert at redhat.com> 2.6.27.5-31
+- ext4 updates to 2.6.28-rc3
+
* Sat Nov 08 2008 Chuck Ebbert <cebbert at redhat.com> 2.6.27.5-30
- Fix last-minute ext4 / jbd2 bugs (#469582)
--- linux-2.6.27-delay-ext4-free-block-cap-check.patch DELETED ---
--- linux-2.6.27-ext4-calculate-journal-credits-correctly.patch DELETED ---
--- linux-2.6.27-ext4-stable-patch-queue.patch DELETED ---
--- linux-2.6.27-fs-disable-fiemap.patch DELETED ---
--- linux-2.6.28-ext4-wait-on-all-pending-commits-in-ext4_sync_fs.patch DELETED ---
--- linux-2.6.28-jbd2-dont-give-up-looking-for-space-so-easily.patch DELETED ---
- Previous message (by thread): rpms/em8300/F-10 .cvsignore, 1.18, 1.19 em8300.spec, 1.24, 1.25 sources, 1.18, 1.19
- Next message (by thread): rpms/kernel/F-10 linux-2.6.27-ext4-2.6.28-backport-fixups.patch, NONE, 1.1 linux-2.6.27-ext4-2.6.28-rc3-git6.patch, NONE, 1.1 kernel.spec, 1.1125, 1.1126 linux-2.6.27-delay-ext4-free-block-cap-check.patch, 1.1, NONE linux-2.6.27-ext4-stable-patch-queue.patch, 1.2, NONE linux-2.6.27-fs-disable-fiemap.patch, 1.1, NONE
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the fedora-extras-commits
mailing list