Whamcloud - gitweb
b=16098
[fs/lustre-release.git] / ldiskfs / kernel_patches / patches / ext3-mballoc3-core.patch
index ac840d0..276cfbd 100644 (file)
@@ -1,7 +1,7 @@
-Index: linux-2.6.9-full/include/linux/ext3_fs.h
+Index: linux-2.6.5-7.311/include/linux/ext3_fs.h
 ===================================================================
---- linux-2.6.9-full.orig/include/linux/ext3_fs.h      2007-06-08 23:44:08.000000000 +0400
-+++ linux-2.6.9-full/include/linux/ext3_fs.h   2007-10-17 22:25:01.000000000 +0400
+--- linux-2.6.5-7.311.orig/include/linux/ext3_fs.h
++++ linux-2.6.5-7.311/include/linux/ext3_fs.h
 @@ -57,6 +57,30 @@ struct statfs;
  #define ext3_debug(f, a...)   do {} while (0)
  #endif
@@ -33,7 +33,7 @@ Index: linux-2.6.9-full/include/linux/ext3_fs.h
  /*
   * Special inodes numbers
   */
-@@ -387,6 +411,14 @@ struct ext3_inode {
+@@ -361,6 +385,14 @@ struct ext3_inode {
  #define ext3_find_first_zero_bit      ext2_find_first_zero_bit
  #define ext3_find_next_zero_bit               ext2_find_next_zero_bit
  
@@ -48,7 +48,7 @@ Index: linux-2.6.9-full/include/linux/ext3_fs.h
  /*
   * Maximal mount counts between two filesystem checks
   */
-@@ -763,6 +795,20 @@ extern unsigned long ext3_count_dirs (st
+@@ -735,6 +767,20 @@ extern unsigned long ext3_count_dirs (st
  extern void ext3_check_inodes_bitmap (struct super_block *);
  extern unsigned long ext3_count_free (struct buffer_head *, unsigned);
  
@@ -69,8 +69,8 @@ Index: linux-2.6.9-full/include/linux/ext3_fs.h
  
  /* inode.c */
  extern int ext3_block_truncate_page(handle_t *, struct page *,
-@@ -804,6 +850,10 @@ extern int ext3_group_extend(struct supe
-                               unsigned long n_blocks_count);
+@@ -769,6 +815,10 @@ extern int ext3_htree_fill_tree(struct f
+                               __u32 start_minor_hash, __u32 *next_hash);
  
  /* super.c */
 +extern struct proc_dir_entry *proc_root_ext3;
@@ -80,13 +80,13 @@ Index: linux-2.6.9-full/include/linux/ext3_fs.h
  extern void ext3_error (struct super_block *, const char *, const char *, ...)
        __attribute__ ((format (printf, 3, 4)));
  extern void __ext3_std_error (struct super_block *, const char *, int);
-Index: linux-2.6.9-full/include/linux/ext3_fs_sb.h
+Index: linux-2.6.5-7.311/include/linux/ext3_fs_sb.h
 ===================================================================
---- linux-2.6.9-full.orig/include/linux/ext3_fs_sb.h   2007-06-08 23:44:07.000000000 +0400
-+++ linux-2.6.9-full/include/linux/ext3_fs_sb.h        2007-10-17 22:25:01.000000000 +0400
-@@ -81,6 +81,61 @@ struct ext3_sb_info {
-       char *s_qf_names[MAXQUOTAS];            /* Names of quota files with journalled quota */
-       int s_jquota_fmt;                       /* Format of quota to use */
+--- linux-2.6.5-7.311.orig/include/linux/ext3_fs_sb.h
++++ linux-2.6.5-7.311/include/linux/ext3_fs_sb.h
+@@ -78,6 +78,61 @@ struct ext3_sb_info {
+       struct timer_list turn_ro_timer;        /* For turning read-only (crash simulation) */
+       wait_queue_head_t ro_wait_queue;        /* For people waiting for the fs to go read-only */
  #endif
 +
 +      /* for buddy allocator */
@@ -146,11 +146,11 @@ Index: linux-2.6.9-full/include/linux/ext3_fs_sb.h
 +                               [(group) & (EXT3_DESC_PER_BLOCK(sb) - 1)]
 +
  #endif        /* _LINUX_EXT3_FS_SB */
-Index: linux-2.6.9-full/fs/ext3/super.c
+Index: linux-2.6.5-7.311/fs/ext3/super.c
 ===================================================================
---- linux-2.6.9-full.orig/fs/ext3/super.c      2007-06-08 23:44:08.000000000 +0400
-+++ linux-2.6.9-full/fs/ext3/super.c   2007-10-17 22:26:27.000000000 +0400
-@@ -394,6 +394,7 @@ void ext3_put_super (struct super_block 
+--- linux-2.6.5-7.311.orig/fs/ext3/super.c
++++ linux-2.6.5-7.311/fs/ext3/super.c
+@@ -389,6 +389,7 @@ void ext3_put_super (struct super_block 
        struct ext3_super_block *es = sbi->s_es;
        int i;
  
@@ -158,7 +158,7 @@ Index: linux-2.6.9-full/fs/ext3/super.c
        ext3_ext_release(sb);
        ext3_xattr_put_super(sb);
        journal_destroy(sbi->s_journal);
-@@ -438,6 +439,8 @@ void ext3_put_super (struct super_block 
+@@ -428,6 +429,8 @@ void ext3_put_super (struct super_block 
                invalidate_bdev(sbi->journal_bdev, 0);
                ext3_blkdev_remove(sbi);
        }
@@ -167,7 +167,7 @@ Index: linux-2.6.9-full/fs/ext3/super.c
        sb->s_fs_info = NULL;
        kfree(sbi);
        return;
-@@ -463,6 +466,8 @@ static struct inode *ext3_alloc_inode(st
+@@ -453,6 +456,8 @@ static struct inode *ext3_alloc_inode(st
        ei->vfs_inode.i_version = 1;
        
        memset(&ei->i_cached_extent, 0, sizeof(ei->i_cached_extent));
@@ -176,7 +176,7 @@ Index: linux-2.6.9-full/fs/ext3/super.c
        return &ei->vfs_inode;
  }
  
-@@ -1353,6 +1358,13 @@ static int ext3_fill_super (struct super
+@@ -1151,6 +1156,13 @@ static int ext3_fill_super (struct super
        sbi->s_mount_opt = 0;
        sbi->s_resuid = EXT3_DEF_RESUID;
        sbi->s_resgid = EXT3_DEF_RESGID;
@@ -190,7 +190,7 @@ Index: linux-2.6.9-full/fs/ext3/super.c
  
        blocksize = sb_min_blocksize(sb, EXT3_MIN_BLOCK_SIZE);
        if (!blocksize) {
-@@ -1729,6 +1741,8 @@ failed_mount:
+@@ -1526,6 +1538,8 @@ failed_mount:
        ext3_blkdev_remove(sbi);
        brelse(bh);
  out_fail:
@@ -199,7 +199,7 @@ Index: linux-2.6.9-full/fs/ext3/super.c
        sb->s_fs_info = NULL;
        kfree(sbi);
        return -EINVAL;
-@@ -2593,9 +2607,47 @@ static struct file_system_type ext3_fs_t
+@@ -2158,9 +2172,46 @@ static struct file_system_type ext3_fs_t
        .fs_flags       = FS_REQUIRES_DEV,
  };
  
@@ -208,7 +208,6 @@ Index: linux-2.6.9-full/fs/ext3/super.c
 +
 +int __init init_ext3_proc(void)
 +{
-+      struct proc_dir_entry *proc;
 +      int ret;
 +
 +      if ((ret = init_ext3_mb_proc()))
@@ -248,7 +247,7 @@ Index: linux-2.6.9-full/fs/ext3/super.c
        if (err)
                return err;
        err = init_inodecache();
-@@ -2617,6 +2669,7 @@ static void __exit exit_ext3_fs(void)
+@@ -2189,6 +2240,7 @@ static void __exit exit_ext3_fs(void)
        unregister_filesystem(&ext3_fs_type);
        destroy_inodecache();
        exit_ext3_xattr();
@@ -256,13 +255,13 @@ Index: linux-2.6.9-full/fs/ext3/super.c
  }
  
  int ext3_map_inode_page(struct inode *inode, struct page *page,
-Index: linux-2.6.9-full/fs/ext3/mballoc.c
+Index: linux-2.6.5-7.311/fs/ext3/mballoc.c
 ===================================================================
---- linux-2.6.9-full.orig/fs/ext3/mballoc.c    2007-10-17 21:59:51.072534980 +0400
-+++ linux-2.6.9-full/fs/ext3/mballoc.c 2007-10-17 23:09:22.000000000 +0400
-@@ -0,0 +1,4380 @@
+--- /dev/null
++++ linux-2.6.5-7.311/fs/ext3/mballoc.c
+@@ -0,0 +1,4385 @@
 +/*
-+ * Copyright (c) 2003-2006, Cluster File Systems, Inc, info@clusterfs.com
++ * Copyright 2008 Sun Microsystems, Inc.
 + * Written by Alex Tomas <alex@clusterfs.com>
 + *
 + * This program is free software; you can redistribute it and/or modify
@@ -576,7 +575,7 @@ Index: linux-2.6.9-full/fs/ext3/mballoc.c
 +#define EXT3_BB_MAX_BLOCKS    30
 +
 +struct ext3_free_metadata {
-+      unsigned short group;
++      unsigned group;
 +      unsigned short num;
 +      unsigned short blocks[EXT3_BB_MAX_BLOCKS];
 +      struct list_head list;
@@ -705,8 +704,8 @@ Index: linux-2.6.9-full/fs/ext3/mballoc.c
 +      void *bd_bitmap;
 +      struct ext3_group_info *bd_info;
 +      struct super_block *bd_sb;
-+      __u16 bd_blkbits;
-+      __u16 bd_group;
++      unsigned bd_group;
++      unsigned bd_blkbits;
 +};
 +#define EXT3_MB_BITMAP(e3b)   ((e3b)->bd_bitmap)
 +#define EXT3_MB_BUDDY(e3b)    ((e3b)->bd_buddy)
@@ -1137,6 +1136,8 @@ Index: linux-2.6.9-full/fs/ext3/mballoc.c
 +              fragments++;
 +              first = i;
 +              i = ext2_find_next_le_bit(bitmap, max, i);
++              if (i > max)
++                      i = max;
 +              len = i - first;
 +              free += len;
 +              if (len > 1)
@@ -3623,7 +3624,7 @@ Index: linux-2.6.9-full/fs/ext3/mballoc.c
 +
 +      /* in this short window concurrent discard can set pa_deleted */
 +      spin_lock(&pa->pa_lock);
-+      if (pa->pa_deleted == 0) {
++      if (pa->pa_deleted == 1) {
 +              spin_unlock(&pa->pa_lock);
 +              return;
 +      }
@@ -4641,3 +4642,6 @@ Index: linux-2.6.9-full/fs/ext3/mballoc.c
 +      ext3_std_error(sb, err);
 +      return;
 +}
++
++EXPORT_SYMBOL(ext3_free_blocks);
++EXPORT_SYMBOL(ext3_mb_discard_inode_preallocations);