SOURCES (LINUX_2_6): kernel-ext4.patch - kernel ext4 patchset

adamg adamg at pld-linux.org
Mon Feb 2 00:17:55 CET 2009


Author: adamg                        Date: Sun Feb  1 23:17:55 2009 GMT
Module: SOURCES                       Tag: LINUX_2_6
---- Log message:
- kernel ext4 patchset

---- Files affected:
SOURCES:
   kernel-ext4.patch (1.1 -> 1.1.2.1) 

---- Diffs:

================================================================
Index: SOURCES/kernel-ext4.patch
diff -u SOURCES/kernel-ext4.patch:1.1 SOURCES/kernel-ext4.patch:1.1.2.1
--- SOURCES/kernel-ext4.patch:1.1	Sat Oct 25 21:36:17 2008
+++ SOURCES/kernel-ext4.patch	Mon Feb  2 00:17:49 2009
@@ -1,8651 +1,2211 @@
-Patchset: 2.6.26-ext4-7
+http://git.kernel.org/?p=linux/kernel/git/tytso/ext4.git;a=commitdiff;h=e041093f35eee3bc7093788c3753bc4493e62d75
 
-This patch was created by combining the ext4-pushed-post-2.6.27-rc1.gz
-patches with the stable patches in 2.6.27-rc3-ext4-1 series.
+Aneesh Kumar K.V (14):
+      ext4: Fix the delalloc writepages to allocate blocks at the right offset.
+      ext4: avoid ext4_error when mounting a fs with a single bg
+      ext4: Don't overwrite allocation_context ac_status
+      ext4: Add blocks added during resize to bitmap
+      ext4: Use EXT4_GROUP_INFO_NEED_INIT_BIT during resize
+      ext4: cleanup mballoc header files
+      ext4: don't use blocks freed but not yet committed in buddy cache init
+      ext4: Fix race between read_block_bitmap() and mark_diskspace_used()
+      ext4: Fix the race between read_inode_bitmap() and ext4_new_inode()
+      ext4: Use new buffer_head flag to check uninit group bitmaps initialization
+      ext4: mark the blocks/inode bitmap beyond end of group as used
+      ext4: Don't allow new groups to be added during block allocation
+      ext4: Init the complete page while building buddy cache
+      ext4: Fix s_dirty_blocks_counter if block allocation failed with nodelalloc
 
- Documentation/filesystems/ext4.txt |  131 ++-
- fs/buffer.c                        |   19 +-
- fs/ext4/acl.c                      |  188 ++--
- fs/ext4/balloc.c                   |  221 +++--
- fs/ext4/dir.c                      |   37 +-
- fs/ext4/ext4.h                     |   64 +-
- fs/ext4/ext4_extents.h             |    5 +-
- fs/ext4/ext4_i.h                   |   10 +-
- fs/ext4/ext4_jbd2.h                |   29 +-
- fs/ext4/ext4_sb.h                  |    5 +-
- fs/ext4/extents.c                  |  277 +++---
- fs/ext4/file.c                     |   20 +-
- fs/ext4/fsync.c                    |    4 +
- fs/ext4/group.h                    |    2 +-
- fs/ext4/ialloc.c                   |  169 +++-
- fs/ext4/inode.c                    | 1931 ++++++++++++++++++++++++++++++------
- fs/ext4/mballoc.c                  |  744 +++++++++++----
- fs/ext4/mballoc.h                  |   10 +-
- fs/ext4/migrate.c                  |    3 +-
- fs/ext4/namei.c                    |   45 +-
- fs/ext4/resize.c                   |  134 ++-
- fs/ext4/super.c                    |  451 ++++++---
- fs/ext4/xattr.c                    |    4 +-
- fs/ext4/xattr_trusted.c            |    4 +-
- fs/ext4/xattr_user.c               |    4 +-
- fs/jbd2/checkpoint.c               |    1 -
- fs/jbd2/commit.c                   |  308 +++----
- fs/jbd2/journal.c                  |   54 +-
- fs/jbd2/transaction.c              |  365 +++----
- fs/mpage.c                         |   14 +-
- include/linux/fs.h                 |    2 +
- include/linux/jbd2.h               |   73 +-
- include/linux/mpage.h              |   10 +
- include/linux/percpu_counter.h     |   12 +-
- include/linux/writeback.h          |    1 +
- lib/percpu_counter.c               |    7 +-
- mm/filemap.c                       |    3 +-
- mm/page-writeback.c                |    3 +
- 38 files changed, 3822 insertions(+), 1542 deletions(-)
+Mark Fasheh (1):
+      jbd2: Add BH_JBDPrivateStart
 
-diff --git a/Documentation/filesystems/ext4.txt b/Documentation/filesystems/ext4.txt
-index 0c5086d..0d53949 100644
---- a/Documentation/filesystems/ext4.txt
-+++ b/Documentation/filesystems/ext4.txt
-@@ -13,72 +13,99 @@ Mailing list: linux-ext4 at vger.kernel.org
- 1. Quick usage instructions:
- ===========================
- 
--  - Grab updated e2fsprogs from
--    ftp://ftp.kernel.org/pub/linux/kernel/people/tytso/e2fsprogs-interim/
--    This is a patchset on top of e2fsprogs-1.39, which can be found at
-+  - Compile and install the latest version of e2fsprogs (as of this
-+    writing version 1.41) from:
-+
-+    http://sourceforge.net/project/showfiles.php?group_id=2406
-+	
-+	or
-+
-     ftp://ftp.kernel.org/pub/linux/kernel/people/tytso/e2fsprogs/
- 
--  - It's still mke2fs -j /dev/hda1
-+	or grab the latest git repository from:
-+
-+    git://git.kernel.org/pub/scm/fs/ext2/e2fsprogs.git
-+
-+  - Note that it is highly important to install the mke2fs.conf file
-+    that comes with the e2fsprogs 1.41.x sources in /etc/mke2fs.conf. If
-+    you have edited the /etc/mke2fs.conf file installed on your system,
-+    you will need to merge your changes with the version from e2fsprogs
-+    1.41.x.
-+
-+  - Create a new filesystem using the ext4dev filesystem type:
-+
-+    	# mke2fs -t ext4dev /dev/hda1
-+
-+    Or configure an existing ext3 filesystem to support extents and set
-+    the test_fs flag to indicate that it's ok for an in-development
-+    filesystem to touch this filesystem:
- 
--  - mount /dev/hda1 /wherever -t ext4dev
-+	# tune2fs -O extents -E test_fs /dev/hda1
- 
--  - To enable extents,
-+    If the filesystem was created with 128 byte inodes, it can be
-+    converted to use 256 byte for greater efficiency via:
- 
--	mount /dev/hda1 /wherever -t ext4dev -o extents
-+        # tune2fs -I 256 /dev/hda1
- 
--  - The filesystem is compatible with the ext3 driver until you add a file
--    which has extents (ie: `mount -o extents', then create a file).
-+    (Note: we currently do not have tools to convert an ext4dev
-+    filesystem back to ext3; so please do not do try this on production
-+    filesystems.)
- 
--    NOTE: The "extents" mount flag is temporary.  It will soon go away and
--    extents will be enabled by the "-o extents" flag to mke2fs or tune2fs
-+  - Mounting:
-+
-+	# mount -t ext4dev /dev/hda1 /wherever
- 
-   - When comparing performance with other filesystems, remember that
--    ext3/4 by default offers higher data integrity guarantees than most.  So
--    when comparing with a metadata-only journalling filesystem, use `mount -o
--    data=writeback'.  And you might as well use `mount -o nobh' too along
--    with it.  Making the journal larger than the mke2fs default often helps
--    performance with metadata-intensive workloads.
-+    ext3/4 by default offers higher data integrity guarantees than most.
-+    So when comparing with a metadata-only journalling filesystem, such
-+    as ext3, use `mount -o data=writeback'.  And you might as well use
-+    `mount -o nobh' too along with it.  Making the journal larger than
-+    the mke2fs default often helps performance with metadata-intensive
-+    workloads.
- 
- 2. Features
- ===========
- 
- 2.1 Currently available
- 
--* ability to use filesystems > 16TB
-+* ability to use filesystems > 16TB (e2fsprogs support not available yet)
- * extent format reduces metadata overhead (RAM, IO for access, transactions)
- * extent format more robust in face of on-disk corruption due to magics,
- * internal redunancy in tree
--
--2.1 Previously available, soon to be enabled by default by "mkefs.ext4":
--
--* dir_index and resize inode will be on by default
--* large inodes will be used by default for fast EAs, nsec timestamps, etc
-+* improved file allocation (multi-block alloc)
-+* fix 32000 subdirectory limit
-+* nsec timestamps for mtime, atime, ctime, create time
-+* inode version field on disk (NFSv4, Lustre)
-+* reduced e2fsck time via uninit_bg feature
-+* journal checksumming for robustness, performance
-+* persistent file preallocation (e.g for streaming media, databases)
-+* ability to pack bitmaps and inode tables into larger virtual groups via the
-+  flex_bg feature
-+* large file support
-+* Inode allocation using large virtual block groups via flex_bg
-+* delayed allocation
-+* large block (up to pagesize) support
-+* efficent new ordered mode in JBD2 and ext4(avoid using buffer head to force
-+  the ordering)
- 
- 2.2 Candidate features for future inclusion
- 
--There are several under discussion, whether they all make it in is
--partly a function of how much time everyone has to work on them:
-+* Online defrag (patches available but not well tested)
-+* reduced mke2fs time via lazy itable initialization in conjuction with
-+  the uninit_bg feature (capability to do this is available in e2fsprogs
-+  but a kernel thread to do lazy zeroing of unused inode table blocks
-+  after filesystem is first mounted is required for safety)
- 
--* improved file allocation (multi-block alloc, delayed alloc; basically done)
--* fix 32000 subdirectory limit (patch exists, needs some e2fsck work)
--* nsec timestamps for mtime, atime, ctime, create time (patch exists,
--  needs some e2fsck work)
--* inode version field on disk (NFSv4, Lustre; prototype exists)
--* reduced mke2fs/e2fsck time via uninitialized groups (prototype exists)
--* journal checksumming for robustness, performance (prototype exists)
--* persistent file preallocation (e.g for streaming media, databases)
-+There are several others under discussion, whether they all make it in is
-+partly a function of how much time everyone has to work on them. Features like
-+metadata checksumming have been discussed and planned for a bit but no patches
-+exist yet so I'm not sure they're in the near-term roadmap.
- 
--Features like metadata checksumming have been discussed and planned for
--a bit but no patches exist yet so I'm not sure they're in the near-term
--roadmap.
-+The big performance win will come with mballoc, delalloc and flex_bg
-+grouping of bitmaps and inode tables.  Some test results available here:
- 
--The big performance win will come with mballoc and delalloc.  CFS has
--been using mballoc for a few years already with Lustre, and IBM + Bull
--did a lot of benchmarking on it.  The reason it isn't in the first set of
--patches is partly a manageability issue, and partly because it doesn't
--directly affect the on-disk format (outside of much better allocation)
--so it isn't critical to get into the first round of changes.  I believe
--Alex is working on a new set of patches right now.
-+ - http://www.bullopensource.org/ext4/20080530/ffsb-write-2.6.26-rc2.html
-+ - http://www.bullopensource.org/ext4/20080530/ffsb-readwrite-2.6.26-rc2.html
- 
- 3. Options
- ==========
-@@ -222,9 +249,11 @@ stripe=n		Number of filesystem blocks that mballoc will try
- 			to use for allocation size and alignment. For RAID5/6
- 			systems this should be the number of data
- 			disks *  RAID chunk size in file system blocks.
--
-+delalloc	(*)	Deferring block allocation until write-out time.
-+nodelalloc		Disable delayed allocation. Blocks are allocation
-+			when data is copied from user to page cache.
- Data Mode
-----------
-+=========
- There are 3 different data modes:
- 
- * writeback mode
-@@ -236,10 +265,10 @@ typically provide the best ext4 performance.
- 
- * ordered mode
- In data=ordered mode, ext4 only officially journals metadata, but it logically
--groups metadata and data blocks into a single unit called a transaction.  When
--it's time to write the new metadata out to disk, the associated data blocks
--are written first.  In general, this mode performs slightly slower than
--writeback but significantly faster than journal mode.
-+groups metadata information related to data changes with the data blocks into a
-+single unit called a transaction.  When it's time to write the new metadata
-+out to disk, the associated data blocks are written first.  In general,
-+this mode performs slightly slower than writeback but significantly faster than journal mode.
- 
- * journal mode
- data=journal mode provides full data and metadata journaling.  All new data is
-@@ -247,7 +276,8 @@ written to the journal first, and then to its final location.
- In the event of a crash, the journal can be replayed, bringing both data and
- metadata into a consistent state.  This mode is the slowest except when data
- needs to be read from and written to disk at the same time where it
--outperforms all others modes.
-+outperforms all others modes.  Curently ext4 does not have delayed
-+allocation support if this data journalling mode is selected.
- 
- References
- ==========
-@@ -256,7 +286,8 @@ kernel source:	<file:fs/ext4/>
- 		<file:fs/jbd2/>
- 
- programs:	http://e2fsprogs.sourceforge.net/
--		http://ext2resize.sourceforge.net
- 
- useful links:	http://fedoraproject.org/wiki/ext3-devel
- 		http://www.bullopensource.org/ext4/
-+		http://ext4.wiki.kernel.org/index.php/Main_Page
-+		http://fedoraproject.org/wiki/Features/Ext4
-diff --git a/fs/buffer.c b/fs/buffer.c
-index 0f51c0f..5fa1512 100644
---- a/fs/buffer.c
-+++ b/fs/buffer.c
-@@ -1691,11 +1691,13 @@ static int __block_write_full_page(struct inode *inode, struct page *page,
- 			 */
- 			clear_buffer_dirty(bh);
- 			set_buffer_uptodate(bh);
--		} else if (!buffer_mapped(bh) && buffer_dirty(bh)) {
-+		} else if ((!buffer_mapped(bh) || buffer_delay(bh)) &&
-+			   buffer_dirty(bh)) {
- 			WARN_ON(bh->b_size != blocksize);
- 			err = get_block(inode, block, bh, 1);
- 			if (err)
- 				goto recover;
-+			clear_buffer_delay(bh);
- 			if (buffer_new(bh)) {
- 				/* blockdev mappings never come here */
- 				clear_buffer_new(bh);
-@@ -1774,7 +1776,8 @@ recover:
- 	bh = head;
- 	/* Recovery: lock and submit the mapped buffers */
- 	do {
--		if (buffer_mapped(bh) && buffer_dirty(bh)) {
-+		if (buffer_mapped(bh) && buffer_dirty(bh) &&
-+		    !buffer_delay(bh)) {
- 			lock_buffer(bh);
- 			mark_buffer_async_write(bh);
- 		} else {
-@@ -2061,6 +2064,7 @@ int generic_write_end(struct file *file, struct address_space *mapping,
- 			struct page *page, void *fsdata)
- {
- 	struct inode *inode = mapping->host;
-+	int i_size_changed = 0;
- 
- 	copied = block_write_end(file, mapping, pos, len, copied, page, fsdata);
- 
-@@ -2073,12 +2077,21 @@ int generic_write_end(struct file *file, struct address_space *mapping,
- 	 */
- 	if (pos+copied > inode->i_size) {
- 		i_size_write(inode, pos+copied);
--		mark_inode_dirty(inode);
-+		i_size_changed = 1;
- 	}
- 
- 	unlock_page(page);
- 	page_cache_release(page);
- 
-+	/*
-+	 * Don't mark the inode dirty under page lock. First, it unnecessarily
-+	 * makes the holding time of page lock longer. Second, it forces lock
-+	 * ordering of page lock and transaction start for journaling
-+	 * filesystems.
-+	 */
-+	if (i_size_changed)
-+		mark_inode_dirty(inode);
-+
- 	return copied;
- }
- EXPORT_SYMBOL(generic_write_end);
-diff --git a/fs/ext4/acl.c b/fs/ext4/acl.c
-index 3c8dab8..a234b54 100644
---- a/fs/ext4/acl.c
-+++ b/fs/ext4/acl.c
-@@ -40,34 +40,35 @@ ext4_acl_from_disk(const void *value, size_t size)
- 	acl = posix_acl_alloc(count, GFP_NOFS);
- 	if (!acl)
- 		return ERR_PTR(-ENOMEM);
--	for (n=0; n < count; n++) {
-+	for (n = 0; n < count; n++) {
- 		ext4_acl_entry *entry =
- 			(ext4_acl_entry *)value;
- 		if ((char *)value + sizeof(ext4_acl_entry_short) > end)
- 			goto fail;
- 		acl->a_entries[n].e_tag  = le16_to_cpu(entry->e_tag);
- 		acl->a_entries[n].e_perm = le16_to_cpu(entry->e_perm);
--		switch(acl->a_entries[n].e_tag) {
--			case ACL_USER_OBJ:
--			case ACL_GROUP_OBJ:
--			case ACL_MASK:
--			case ACL_OTHER:
--				value = (char *)value +
--					sizeof(ext4_acl_entry_short);
--				acl->a_entries[n].e_id = ACL_UNDEFINED_ID;
--				break;
--
--			case ACL_USER:
--			case ACL_GROUP:
--				value = (char *)value + sizeof(ext4_acl_entry);
--				if ((char *)value > end)
--					goto fail;
--				acl->a_entries[n].e_id =
--					le32_to_cpu(entry->e_id);
--				break;
--
--			default:
-+
-+		switch (acl->a_entries[n].e_tag) {
-+		case ACL_USER_OBJ:
-+		case ACL_GROUP_OBJ:
-+		case ACL_MASK:
-+		case ACL_OTHER:
-+			value = (char *)value +
-+				sizeof(ext4_acl_entry_short);
-+			acl->a_entries[n].e_id = ACL_UNDEFINED_ID;
-+			break;
-+
-+		case ACL_USER:
-+		case ACL_GROUP:
-+			value = (char *)value + sizeof(ext4_acl_entry);
-+			if ((char *)value > end)
- 				goto fail;
-+			acl->a_entries[n].e_id =
-+				le32_to_cpu(entry->e_id);
-+			break;
-+
-+		default:
-+			goto fail;
- 		}
- 	}
- 	if (value != end)
-@@ -96,27 +97,26 @@ ext4_acl_to_disk(const struct posix_acl *acl, size_t *size)
- 		return ERR_PTR(-ENOMEM);
- 	ext_acl->a_version = cpu_to_le32(EXT4_ACL_VERSION);
- 	e = (char *)ext_acl + sizeof(ext4_acl_header);
--	for (n=0; n < acl->a_count; n++) {
-+	for (n = 0; n < acl->a_count; n++) {
- 		ext4_acl_entry *entry = (ext4_acl_entry *)e;
- 		entry->e_tag  = cpu_to_le16(acl->a_entries[n].e_tag);
- 		entry->e_perm = cpu_to_le16(acl->a_entries[n].e_perm);
--		switch(acl->a_entries[n].e_tag) {
--			case ACL_USER:
--			case ACL_GROUP:
--				entry->e_id =
--					cpu_to_le32(acl->a_entries[n].e_id);
--				e += sizeof(ext4_acl_entry);
--				break;
--
--			case ACL_USER_OBJ:
--			case ACL_GROUP_OBJ:
--			case ACL_MASK:
--			case ACL_OTHER:
--				e += sizeof(ext4_acl_entry_short);
--				break;
--
--			default:
--				goto fail;
-+		switch (acl->a_entries[n].e_tag) {
-+		case ACL_USER:
-+		case ACL_GROUP:
-+			entry->e_id = cpu_to_le32(acl->a_entries[n].e_id);
-+			e += sizeof(ext4_acl_entry);
-+			break;
-+
-+		case ACL_USER_OBJ:
-+		case ACL_GROUP_OBJ:
-+		case ACL_MASK:
-+		case ACL_OTHER:
-+			e += sizeof(ext4_acl_entry_short);
-+			break;
-+
-+		default:
-+			goto fail;
- 		}
- 	}
- 	return (char *)ext_acl;
-@@ -167,23 +167,23 @@ ext4_get_acl(struct inode *inode, int type)
- 	if (!test_opt(inode->i_sb, POSIX_ACL))
- 		return NULL;
- 
--	switch(type) {
--		case ACL_TYPE_ACCESS:
--			acl = ext4_iget_acl(inode, &ei->i_acl);
--			if (acl != EXT4_ACL_NOT_CACHED)
--				return acl;
--			name_index = EXT4_XATTR_INDEX_POSIX_ACL_ACCESS;
--			break;
--
--		case ACL_TYPE_DEFAULT:
--			acl = ext4_iget_acl(inode, &ei->i_default_acl);
--			if (acl != EXT4_ACL_NOT_CACHED)
--				return acl;
--			name_index = EXT4_XATTR_INDEX_POSIX_ACL_DEFAULT;
--			break;
--
--		default:
--			return ERR_PTR(-EINVAL);
-+	switch (type) {
-+	case ACL_TYPE_ACCESS:
-+		acl = ext4_iget_acl(inode, &ei->i_acl);
-+		if (acl != EXT4_ACL_NOT_CACHED)
-+			return acl;
-+		name_index = EXT4_XATTR_INDEX_POSIX_ACL_ACCESS;
-+		break;
-+
-+	case ACL_TYPE_DEFAULT:
-+		acl = ext4_iget_acl(inode, &ei->i_default_acl);
-+		if (acl != EXT4_ACL_NOT_CACHED)
-+			return acl;
-+		name_index = EXT4_XATTR_INDEX_POSIX_ACL_DEFAULT;
-+		break;
-+
-+	default:
-+		return ERR_PTR(-EINVAL);
- 	}
- 	retval = ext4_xattr_get(inode, name_index, "", NULL, 0);
- 	if (retval > 0) {
-@@ -201,14 +201,14 @@ ext4_get_acl(struct inode *inode, int type)
- 	kfree(value);
- 
- 	if (!IS_ERR(acl)) {
--		switch(type) {
--			case ACL_TYPE_ACCESS:
--				ext4_iset_acl(inode, &ei->i_acl, acl);
--				break;
--
--			case ACL_TYPE_DEFAULT:
--				ext4_iset_acl(inode, &ei->i_default_acl, acl);
--				break;
-+		switch (type) {
-+		case ACL_TYPE_ACCESS:
-+			ext4_iset_acl(inode, &ei->i_acl, acl);
-+			break;
-+
-+		case ACL_TYPE_DEFAULT:
-+			ext4_iset_acl(inode, &ei->i_default_acl, acl);
-+			break;
- 		}
- 	}
- 	return acl;
-@@ -232,31 +232,31 @@ ext4_set_acl(handle_t *handle, struct inode *inode, int type,
- 	if (S_ISLNK(inode->i_mode))
- 		return -EOPNOTSUPP;
- 
--	switch(type) {
--		case ACL_TYPE_ACCESS:
--			name_index = EXT4_XATTR_INDEX_POSIX_ACL_ACCESS;
--			if (acl) {
--				mode_t mode = inode->i_mode;
--				error = posix_acl_equiv_mode(acl, &mode);
--				if (error < 0)
--					return error;
--				else {
--					inode->i_mode = mode;
--					ext4_mark_inode_dirty(handle, inode);
--					if (error == 0)
--						acl = NULL;
--				}
-+	switch (type) {
-+	case ACL_TYPE_ACCESS:
-+		name_index = EXT4_XATTR_INDEX_POSIX_ACL_ACCESS;
-+		if (acl) {
-+			mode_t mode = inode->i_mode;
-+			error = posix_acl_equiv_mode(acl, &mode);
-+			if (error < 0)
-+				return error;
-+			else {
-+				inode->i_mode = mode;
-+				ext4_mark_inode_dirty(handle, inode);
-+				if (error == 0)
-+					acl = NULL;
- 			}
--			break;
-+		}
-+		break;
- 
--		case ACL_TYPE_DEFAULT:
--			name_index = EXT4_XATTR_INDEX_POSIX_ACL_DEFAULT;
--			if (!S_ISDIR(inode->i_mode))
--				return acl ? -EACCES : 0;
--			break;
-+	case ACL_TYPE_DEFAULT:
-+		name_index = EXT4_XATTR_INDEX_POSIX_ACL_DEFAULT;
-+		if (!S_ISDIR(inode->i_mode))
-+			return acl ? -EACCES : 0;
-+		break;
- 
--		default:
--			return -EINVAL;
-+	default:
-+		return -EINVAL;
- 	}
- 	if (acl) {
- 		value = ext4_acl_to_disk(acl, &size);
-@@ -269,14 +269,14 @@ ext4_set_acl(handle_t *handle, struct inode *inode, int type,
- 
- 	kfree(value);
- 	if (!error) {
--		switch(type) {
--			case ACL_TYPE_ACCESS:
--				ext4_iset_acl(inode, &ei->i_acl, acl);
--				break;
--
--			case ACL_TYPE_DEFAULT:
--				ext4_iset_acl(inode, &ei->i_default_acl, acl);
--				break;
-+		switch (type) {
-+		case ACL_TYPE_ACCESS:
-+			ext4_iset_acl(inode, &ei->i_acl, acl);
-+			break;
+Theodore Ts'o (9):
+      ext4: Add support for non-native signed/unsigned htree hash algorithms
+      ext4: tone down ext4_da_writepages warnings
+      jbd2: Add barrier not supported test to journal_wait_on_commit_record
+      ext4: Add sanity checks for the superblock before mounting the filesystem
+      ext4: only use i_size_high for regular files
+      ext4: Add sanity check to make_indexed_dir
+      ext3: Add sanity check to make_indexed_dir
+      jbd2: On a __journal_expect() assertion failure printk "JBD2", not "EXT3-fs"
+      ext4: Initialize the new group descriptor when resizing the filesystem
+
+Yasunori Goto (1):
+      ext4: Widen type of ext4_sb_info.s_mb_maxs[]
+
+diff --git a/fs/ext3/namei.c b/fs/ext3/namei.c
+index a48e965..83bd869 100644
+--- a/fs/ext3/namei.c
++++ b/fs/ext3/namei.c
+@@ -1357,7 +1357,7 @@ static int make_indexed_dir(handle_t *handle, struct dentry *dentry,
+ 	struct fake_dirent *fde;
+ 
+ 	blocksize =  dir->i_sb->s_blocksize;
+-	dxtrace(printk("Creating index\n"));
++	dxtrace(printk(KERN_DEBUG "Creating index: inode %lu\n", dir->i_ino));
+ 	retval = ext3_journal_get_write_access(handle, bh);
+ 	if (retval) {
+ 		ext3_std_error(dir->i_sb, retval);
+@@ -1366,6 +1366,19 @@ static int make_indexed_dir(handle_t *handle, struct dentry *dentry,
+ 	}
+ 	root = (struct dx_root *) bh->b_data;
+ 
++	/* The 0th block becomes the root, move the dirents out */
++	fde = &root->dotdot;
<<Diff was trimmed, longer than 597 lines>>

---- CVS-web:
    http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/SOURCES/kernel-ext4.patch?r1=1.1&r2=1.1.2.1&f=u



More information about the pld-cvs-commit mailing list