]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux...
authorLinus Torvalds <torvalds@linux-foundation.org>
Tue, 11 Jan 2011 22:36:55 +0000 (14:36 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Tue, 11 Jan 2011 22:36:55 +0000 (14:36 -0800)
* 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs-2.6:
  ext2: Resolve 'dereferencing pointer to incomplete type' when enabling EXT2_XATTR_DEBUG
  ext3: Remove redundant unlikely()
  ext2: Remove redundant unlikely()
  ext3: speed up file creates by optimizing rec_len functions
  ext2: speed up file creates by optimizing rec_len functions
  ext3: Add more journal error check
  ext3: Add journal error check in resize.c
  quota: Use %pV and __attribute__((format (printf in __quota_error and fix fallout
  ext3: Add FITRIM handling
  ext3: Add batched discard support for ext3
  ext3: Add journal error check into ext3_rename()
  ext3: Use search_dirblock() in ext3_dx_find_entry()
  ext3: Avoid uninitialized memory references with a corrupted htree directory
  ext3: Return error code from generic_check_addressable
  ext3: Add journal error check into ext3_delete_entry()
  ext3: Add error check in ext3_mkdir()
  fs/ext3/super.c: Use printf extension %pV
  fs/ext2/super.c: Use printf extension %pV
  ext3: don't update sb journal_devnum when RO dev

1  2 
fs/ext2/super.c
fs/ext3/super.c

diff --combined fs/ext2/super.c
index e0c6380ff99272fac0b13998f4e60f87642d2e99,27822b98f74d2f9bee862586ed363a5ad1336a8a..7731695e65d9fd658ad56e1cdde2e463f6cb3d65
@@@ -43,9 -43,10 +43,10 @@@ static int ext2_remount (struct super_b
  static int ext2_statfs (struct dentry * dentry, struct kstatfs * buf);
  static int ext2_sync_fs(struct super_block *sb, int wait);
  
- void ext2_error (struct super_block * sb, const char * function,
-                const char * fmt, ...)
+ void ext2_error(struct super_block *sb, const char *function,
+               const char *fmt, ...)
  {
+       struct va_format vaf;
        va_list args;
        struct ext2_sb_info *sbi = EXT2_SB(sb);
        struct ext2_super_block *es = sbi->s_es;
        }
  
        va_start(args, fmt);
-       printk(KERN_CRIT "EXT2-fs (%s): error: %s: ", sb->s_id, function);
-       vprintk(fmt, args);
-       printk("\n");
+       vaf.fmt = fmt;
+       vaf.va = &args;
+       printk(KERN_CRIT "EXT2-fs (%s): error: %s: %pV\n",
+              sb->s_id, function, &vaf);
        va_end(args);
  
        if (test_opt(sb, ERRORS_PANIC))
  void ext2_msg(struct super_block *sb, const char *prefix,
                const char *fmt, ...)
  {
+       struct va_format vaf;
        va_list args;
  
        va_start(args, fmt);
-       printk("%sEXT2-fs (%s): ", prefix, sb->s_id);
-       vprintk(fmt, args);
-       printk("\n");
+       vaf.fmt = fmt;
+       vaf.va = &args;
+       printk("%sEXT2-fs (%s): %pV\n", prefix, sb->s_id, &vaf);
        va_end(args);
  }
  
@@@ -161,18 -170,11 +170,18 @@@ static struct inode *ext2_alloc_inode(s
        return &ei->vfs_inode;
  }
  
 -static void ext2_destroy_inode(struct inode *inode)
 +static void ext2_i_callback(struct rcu_head *head)
  {
 +      struct inode *inode = container_of(head, struct inode, i_rcu);
 +      INIT_LIST_HEAD(&inode->i_dentry);
        kmem_cache_free(ext2_inode_cachep, EXT2_I(inode));
  }
  
 +static void ext2_destroy_inode(struct inode *inode)
 +{
 +      call_rcu(&inode->i_rcu, ext2_i_callback);
 +}
 +
  static void init_once(void *foo)
  {
        struct ext2_inode_info *ei = (struct ext2_inode_info *) foo;
diff --combined fs/ext3/super.c
index 77ce1616f725d4cfe087a189ff84f1e2d793363a,ebc3a9c77067d3b6a60cd869c1bd4922f85efca4..b7d0554631e413c20afeff107beb855419abfceb
@@@ -143,12 -143,16 +143,16 @@@ void ext3_journal_abort_handle(const ch
  void ext3_msg(struct super_block *sb, const char *prefix,
                const char *fmt, ...)
  {
+       struct va_format vaf;
        va_list args;
  
        va_start(args, fmt);
-       printk("%sEXT3-fs (%s): ", prefix, sb->s_id);
-       vprintk(fmt, args);
-       printk("\n");
+       vaf.fmt = fmt;
+       vaf.va = &args;
+       printk("%sEXT3-fs (%s): %pV\n", prefix, sb->s_id, &vaf);
        va_end(args);
  }
  
@@@ -195,15 -199,20 +199,20 @@@ static void ext3_handle_error(struct su
                        sb->s_id);
  }
  
- void ext3_error (struct super_block * sb, const char * function,
-                const char * fmt, ...)
+ void ext3_error(struct super_block *sb, const char *function,
+               const char *fmt, ...)
  {
+       struct va_format vaf;
        va_list args;
  
        va_start(args, fmt);
-       printk(KERN_CRIT "EXT3-fs error (device %s): %s: ",sb->s_id, function);
-       vprintk(fmt, args);
-       printk("\n");
+       vaf.fmt = fmt;
+       vaf.va = &args;
+       printk(KERN_CRIT "EXT3-fs error (device %s): %s: %pV\n",
+              sb->s_id, function, &vaf);
        va_end(args);
  
        ext3_handle_error(sb);
@@@ -274,15 -283,20 +283,20 @@@ void __ext3_std_error (struct super_blo
   * case we take the easy way out and panic immediately.
   */
  
- void ext3_abort (struct super_block * sb, const char * function,
-                const char * fmt, ...)
+ void ext3_abort(struct super_block *sb, const char *function,
+                const char *fmt, ...)
  {
+       struct va_format vaf;
        va_list args;
  
        va_start(args, fmt);
-       printk(KERN_CRIT "EXT3-fs (%s): error: %s: ", sb->s_id, function);
-       vprintk(fmt, args);
-       printk("\n");
+       vaf.fmt = fmt;
+       vaf.va = &args;
+       printk(KERN_CRIT "EXT3-fs (%s): error: %s: %pV\n",
+              sb->s_id, function, &vaf);
        va_end(args);
  
        if (test_opt(sb, ERRORS_PANIC))
                journal_abort(EXT3_SB(sb)->s_journal, -EIO);
  }
  
- void ext3_warning (struct super_block * sb, const char * function,
-                  const char * fmt, ...)
+ void ext3_warning(struct super_block *sb, const char *function,
+                 const char *fmt, ...)
  {
+       struct va_format vaf;
        va_list args;
  
        va_start(args, fmt);
-       printk(KERN_WARNING "EXT3-fs (%s): warning: %s: ",
-              sb->s_id, function);
-       vprintk(fmt, args);
-       printk("\n");
+       vaf.fmt = fmt;
+       vaf.va = &args;
+       printk(KERN_WARNING "EXT3-fs (%s): warning: %s: %pV\n",
+              sb->s_id, function, &vaf);
        va_end(args);
  }
  
@@@ -479,13 -497,6 +497,13 @@@ static struct inode *ext3_alloc_inode(s
        return &ei->vfs_inode;
  }
  
 +static void ext3_i_callback(struct rcu_head *head)
 +{
 +      struct inode *inode = container_of(head, struct inode, i_rcu);
 +      INIT_LIST_HEAD(&inode->i_dentry);
 +      kmem_cache_free(ext3_inode_cachep, EXT3_I(inode));
 +}
 +
  static void ext3_destroy_inode(struct inode *inode)
  {
        if (!list_empty(&(EXT3_I(inode)->i_orphan))) {
                                false);
                dump_stack();
        }
 -      kmem_cache_free(ext3_inode_cachep, EXT3_I(inode));
 +      call_rcu(&inode->i_rcu, ext3_i_callback);
  }
  
  static void init_once(void *foo)
@@@ -1848,13 -1859,15 +1866,15 @@@ static int ext3_fill_super (struct supe
                goto failed_mount;
        }
  
-       if (generic_check_addressable(sb->s_blocksize_bits,
-                                     le32_to_cpu(es->s_blocks_count))) {
+       err = generic_check_addressable(sb->s_blocksize_bits,
+                                       le32_to_cpu(es->s_blocks_count));
+       if (err) {
                ext3_msg(sb, KERN_ERR,
                        "error: filesystem is too large to mount safely");
                if (sizeof(sector_t) < 8)
                        ext3_msg(sb, KERN_ERR,
                                "error: CONFIG_LBDAF not enabled");
+               ret = err;
                goto failed_mount;
        }
  
@@@ -2297,7 -2310,7 +2317,7 @@@ static int ext3_load_journal(struct sup
        EXT3_SB(sb)->s_journal = journal;
        ext3_clear_journal_err(sb, es);
  
-       if (journal_devnum &&
+       if (!really_read_only && journal_devnum &&
            journal_devnum != le32_to_cpu(es->s_journal_dev)) {
                es->s_journal_dev = cpu_to_le32(journal_devnum);