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: [email protected]
- 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

_______________________________________________
pld-cvs-commit mailing list
[email protected]
http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit

Reply via email to