Whamcloud - gitweb
Add slab patches to chaos patch.
authorbraam <braam>
Sat, 15 Jun 2002 14:51:24 +0000 (14:51 +0000)
committerbraam <braam>
Sat, 15 Jun 2002 14:51:24 +0000 (14:51 +0000)
lustre/patches/patch-2.4.18
lustre/patches/patch-2.4.18-chaos1

index 3117f8d..2540c4c 100644 (file)
@@ -1,5 +1,5 @@
---- /usr/src/lum-pristine/arch/i386/mm/init.c  Fri Dec 21 10:41:53 2001
-+++ /usr/src/lum/arch/i386/mm/init.c   Sat Jun 15 00:31:15 2002
+--- lum-pristine/arch/i386/mm/init.c   Fri Dec 21 10:41:53 2001
++++ lum/arch/i386/mm/init.c    Sat Jun 15 00:31:15 2002
 @@ -43,6 +43,12 @@
  static unsigned long totalram_pages;
  static unsigned long totalhigh_pages;
@@ -13,8 +13,8 @@
  int do_check_pgt_cache(int low, int high)
  {
        int freed = 0;
---- /usr/src/lum-pristine/arch/um/kernel/mem.c Thu Jun 13 14:07:26 2002
-+++ /usr/src/lum/arch/um/kernel/mem.c  Fri Jun 14 17:00:21 2002
+--- lum-pristine/arch/um/kernel/mem.c  Thu Jun 13 14:07:26 2002
++++ lum/arch/um/kernel/mem.c   Fri Jun 14 17:00:21 2002
 @@ -489,6 +489,22 @@
        return(phys_mem_map(pte_val(pte)));
  }
@@ -54,8 +54,8 @@
        return((struct page *) page_region(page, NULL)->mem_map);
  }
  
---- /usr/src/lum-pristine/mm/slab.c    Fri Dec 21 10:42:05 2001
-+++ /usr/src/lum/mm/slab.c     Fri Jun 14 23:57:09 2002
+--- lum-pristine/mm/slab.c     Fri Dec 21 10:42:05 2001
++++ lum/mm/slab.c      Fri Jun 14 23:57:09 2002
 @@ -1187,6 +1187,59 @@
   * Called with the cache-lock held.
   */
  #if DEBUG
  static int kmem_extra_free_checks (kmem_cache_t * cachep,
                        slab_t *slabp, void * objp)
---- /usr/src/lum-pristine/drivers/block/blkpg.c        Mon Feb 25 12:37:57 2002
-+++ /usr/src/lum/drivers/block/blkpg.c Fri Jun  7 12:49:14 2002
+--- lum-pristine/drivers/block/blkpg.c Mon Feb 25 12:37:57 2002
++++ lum/drivers/block/blkpg.c  Fri Jun  7 12:49:14 2002
 @@ -294,3 +294,38 @@
  }
  
 +EXPORT_SYMBOL(dev_set_rdonly);
 +EXPORT_SYMBOL(dev_check_rdonly);
 +EXPORT_SYMBOL(dev_clear_rdonly);
---- /usr/src/lum-pristine/drivers/block/loop.c Fri Dec 21 10:41:53 2001
-+++ /usr/src/lum/drivers/block/loop.c  Fri Jun  7 12:49:14 2002
+--- lum-pristine/drivers/block/loop.c  Fri Dec 21 10:41:53 2001
++++ lum/drivers/block/loop.c   Fri Jun  7 12:49:14 2002
 @@ -471,6 +471,11 @@
        spin_unlock_irq(&lo->lo_lock);
  
                if (lo->lo_flags & LO_FLAGS_READ_ONLY)
                        goto err;
        } else if (rw == READA) {
---- /usr/src/lum-pristine/drivers/ide/ide-disk.c       Fri Dec 21 10:41:54 2001
-+++ /usr/src/lum/drivers/ide/ide-disk.c        Fri Jun  7 12:49:14 2002
+--- lum-pristine/drivers/ide/ide-disk.c        Fri Dec 21 10:41:54 2001
++++ lum/drivers/ide/ide-disk.c Fri Jun  7 12:49:14 2002
 @@ -367,6 +367,12 @@
   */
  static ide_startstop_t do_rw_disk (ide_drive_t *drive, struct request *rq, unsigned long block)
        if (IDE_CONTROL_REG)
                OUT_BYTE(drive->ctl,IDE_CONTROL_REG);
        OUT_BYTE(0x00, IDE_FEATURE_REG);
---- /usr/src/lum-pristine/fs/ext3/Makefile     Fri Dec 21 10:41:55 2001
-+++ /usr/src/lum/fs/ext3/Makefile      Fri Jun  7 12:49:13 2002
+--- lum-pristine/fs/ext3/Makefile      Fri Dec 21 10:41:55 2001
++++ lum/fs/ext3/Makefile       Fri Jun  7 12:49:13 2002
 @@ -9,6 +9,8 @@
  
  O_TARGET := ext3.o
  obj-y    := balloc.o bitmap.o dir.o file.o fsync.o ialloc.o inode.o \
                ioctl.o namei.o super.o symlink.o
  obj-m    := $(O_TARGET)
---- /usr/src/lum-pristine/fs/ext3/super.c      Mon Feb 25 12:38:08 2002
-+++ /usr/src/lum/fs/ext3/super.c       Fri Jun  7 12:49:14 2002
+--- lum-pristine/fs/ext3/super.c       Mon Feb 25 12:38:08 2002
++++ lum/fs/ext3/super.c        Fri Jun  7 12:49:14 2002
 @@ -1744,7 +1744,7 @@
        unregister_filesystem(&ext3_fs_type);
  }
  
  MODULE_AUTHOR("Remy Card, Stephen Tweedie, Andrew Morton, Andreas Dilger, Theodore Ts'o and others");
  MODULE_DESCRIPTION("Second Extended Filesystem with journaling extensions");
---- /usr/src/lum-pristine/fs/jbd/commit.c      Mon Feb 25 12:38:08 2002
-+++ /usr/src/lum/fs/jbd/commit.c       Fri Jun  7 12:49:14 2002
+--- lum-pristine/fs/jbd/commit.c       Mon Feb 25 12:38:08 2002
++++ lum/fs/jbd/commit.c        Fri Jun  7 12:49:14 2002
 @@ -475,7 +475,7 @@
             transaction's t_log_list queue, and metadata buffers are on
             the t_iobuf_list queue.
        jbd_debug(3, "JBD: commit phase 7\n");
  
        J_ASSERT(commit_transaction->t_sync_datalist == NULL);
---- /usr/src/lum-pristine/fs/jbd/journal.c     Mon Feb 25 12:38:08 2002
-+++ /usr/src/lum/fs/jbd/journal.c      Fri Jun  7 12:49:14 2002
+--- lum-pristine/fs/jbd/journal.c      Mon Feb 25 12:38:08 2002
++++ lum/fs/jbd/journal.c       Fri Jun  7 12:49:14 2002
 @@ -58,6 +58,7 @@
  #endif
  EXPORT_SYMBOL(journal_flush);
  
  EXPORT_SYMBOL(journal_init_dev);
  EXPORT_SYMBOL(journal_init_inode);
---- /usr/src/lum-pristine/fs/jbd/transaction.c Mon Feb 25 12:38:08 2002
-+++ /usr/src/lum/fs/jbd/transaction.c  Fri Jun  7 12:49:14 2002
+--- lum-pristine/fs/jbd/transaction.c  Mon Feb 25 12:38:08 2002
++++ lum/fs/jbd/transaction.c   Fri Jun  7 12:49:14 2002
 @@ -57,6 +57,7 @@
        transaction->t_state = T_RUNNING;
        transaction->t_tid = journal->j_transaction_sequence++;
        /* 
         * If the handle is marked SYNC, we need to set another commit
         * going!  We also want to force a commit if the current
---- /usr/src/lum-pristine/include/asm-i386/page.h      Mon Feb 25 12:38:12 2002
-+++ /usr/src/lum/include/asm-i386/page.h       Sat Jun 15 00:29:05 2002
+--- lum-pristine/include/asm-i386/page.h       Mon Feb 25 12:38:12 2002
++++ lum/include/asm-i386/page.h        Sat Jun 15 00:29:05 2002
 @@ -132,6 +132,8 @@
  #define virt_to_page(kaddr)   (mem_map + (__pa(kaddr) >> PAGE_SHIFT))
  #define VALID_PAGE(page)      ((page - mem_map) < max_mapnr)
  #endif /* __KERNEL__ */
  
  #endif /* _I386_PAGE_H */
---- /usr/src/lum-pristine/include/linux/blkdev.h       Mon Nov 26 06:29:17 2001
-+++ /usr/src/lum/include/linux/blkdev.h        Sat Jun 15 00:34:24 2002
+--- lum-pristine/include/linux/blkdev.h        Mon Nov 26 06:29:17 2001
++++ lum/include/linux/blkdev.h Sat Jun 15 00:34:24 2002
 @@ -228,4 +228,8 @@
        return retval;
  }
 +int dev_check_rdonly(kdev_t);
 +void dev_clear_rdonly(int);
  #endif
---- /usr/src/lum-pristine/include/linux/slab.h Fri Dec 21 10:42:04 2001
-+++ /usr/src/lum/include/linux/slab.h  Sat Jun 15 00:34:24 2002
+--- lum-pristine/include/linux/slab.h  Fri Dec 21 10:42:04 2001
++++ lum/include/linux/slab.h   Sat Jun 15 00:34:24 2002
 @@ -57,6 +57,7 @@
  extern int kmem_cache_shrink(kmem_cache_t *);
  extern void *kmem_cache_alloc(kmem_cache_t *, int);
  
  extern void *kmalloc(size_t, int);
  extern void kfree(const void *);
---- /usr/src/lum-pristine/include/linux/jbd.h  Mon Feb 25 12:38:13 2002
-+++ /usr/src/lum/include/linux/jbd.h   Sat Jun 15 00:36:15 2002
+--- lum-pristine/include/linux/jbd.h   Mon Feb 25 12:38:13 2002
++++ lum/include/linux/jbd.h    Sat Jun 15 00:36:15 2002
 @@ -249,6 +249,13 @@
        return bh->b_private;
  }
  
  extern void    journal_lock_updates (journal_t *);
  extern void    journal_unlock_updates (journal_t *);
---- /usr/src/lum-pristine/kernel/ksyms.c       Mon Feb 25 12:38:13 2002
-+++ /usr/src/lum/kernel/ksyms.c        Fri Jun 14 16:47:50 2002
+--- lum-pristine/kernel/ksyms.c        Mon Feb 25 12:38:13 2002
++++ lum/kernel/ksyms.c Fri Jun 14 16:47:50 2002
 @@ -271,6 +271,11 @@
  EXPORT_SYMBOL(lock_may_write);
  EXPORT_SYMBOL(dcache_readdir);
  /* for stackable file systems (lofs, wrapfs, cryptfs, etc.) */
  EXPORT_SYMBOL(default_llseek);
  EXPORT_SYMBOL(dentry_open);
---- /usr/src/lum-pristine/include/linux/dcache.h       Thu Nov 22 12:46:18 2001
-+++ /usr/src/lum/include/linux/dcache.h        Fri Jun 14 16:50:42 2002
+--- lum-pristine/include/linux/dcache.h        Thu Nov 22 12:46:18 2001
++++ lum/include/linux/dcache.h Fri Jun 14 16:50:42 2002
 @@ -6,6 +6,31 @@
  #include <asm/atomic.h>
  #include <linux/mount.h>
  };
  
  /* the dentry parameter passed to d_hash and d_compare is the parent
---- /usr/src/lum-pristine/include/linux/fs.h   Thu Jun 13 14:07:26 2002
-+++ /usr/src/lum/include/linux/fs.h    Sat Jun 15 00:34:24 2002
+--- lum-pristine/include/linux/fs.h    Thu Jun 13 14:07:26 2002
++++ lum/include/linux/fs.h     Sat Jun 15 00:34:24 2002
 @@ -536,6 +536,7 @@
  
        /* needed for tty driver, and maybe others */
  
  extern void iput(struct inode *);
  extern void force_delete(struct inode *);
---- /usr/src/lum-pristine/fs/namei.c   Mon Feb 25 12:38:09 2002
-+++ /usr/src/lum/fs/namei.c    Wed Jun 12 19:18:36 2002
+--- lum-pristine/fs/namei.c    Mon Feb 25 12:38:09 2002
++++ lum/fs/namei.c     Wed Jun 12 19:18:36 2002
 @@ -94,6 +94,14 @@
   * XEmacs seems to be relying on it...
   */
        unlock_kernel();
  
        dput(new_dentry);
---- /usr/src/lum-pristine/fs/open.c    Fri Oct 12 14:48:42 2001
-+++ /usr/src/lum/fs/open.c     Fri Jun  7 12:49:14 2002
+--- lum-pristine/fs/open.c     Fri Oct 12 14:48:42 2001
++++ lum/fs/open.c      Fri Jun  7 12:49:14 2002
 @@ -19,6 +19,8 @@
  #include <asm/uaccess.h>
  
  /*
   * Find an empty file descriptor entry, and mark it busy.
   */
---- /usr/src/lum-pristine/fs/stat.c    Thu Sep 13 17:04:43 2001
-+++ /usr/src/lum/fs/stat.c     Fri Jun  7 12:49:14 2002
+--- lum-pristine/fs/stat.c     Thu Sep 13 17:04:43 2001
++++ lum/fs/stat.c      Fri Jun  7 12:49:14 2002
 @@ -247,14 +247,16 @@
  {
        struct nameidata nd;
index fee90df..b7bac15 100644 (file)
        if (!err && EX_ISSYNC(tfhp->fh_export)) {
                nfsd_sync_dir(tdentry);
                nfsd_sync_dir(fdentry);
+--- lum-pristine/mm/slab.c     Fri Dec 21 10:42:05 2001
++++ lum/mm/slab.c      Fri Jun 14 23:57:09 2002
+@@ -1187,6 +1187,59 @@
+  * Called with the cache-lock held.
+  */
++extern struct page *check_get_page(unsigned long kaddr);
++struct page *page_mem_map(struct page *page);
++static int kmem_check_cache_obj (kmem_cache_t * cachep,
++                                 slab_t *slabp, void * objp)
++{
++      int i;
++      unsigned int objnr;
++
++      if (cachep->flags & SLAB_RED_ZONE) {
++              objp -= BYTES_PER_WORD;
++              if ( *(unsigned long *)objp != RED_MAGIC2)
++                      /* Either write before start, or a double free. */
++                        return 0;
++              if (*(unsigned long *)(objp+cachep->objsize -
++                              BYTES_PER_WORD) != RED_MAGIC2)
++                      /* Either write past end, or a double free. */
++                        return 0;
++      }
++
++        objnr = (objp-slabp->s_mem)/cachep->objsize;
++      if (objnr >= cachep->num)
++                return 0;
++      if (objp != slabp->s_mem + objnr*cachep->objsize)
++                return 0;
++
++      /* Check slab's freelist to see if this obj is there. */
++      for (i = slabp->free; i != BUFCTL_END; i = slab_bufctl(slabp)[i]) {
++              if (i == objnr)
++                        return 0;
++      }
++      return 1;
++}
++
++
++int kmem_cache_validate(kmem_cache_t *cachep, void *objp)
++{
++        struct page *page = check_get_page((unsigned long)objp); 
++
++        if (!VALID_PAGE(page)) {
++                return 0;
++        }
++
++        if (!PageSlab(page)) {
++                return 0;
++        }
++
++        /* XXX check for freed slab objects ? */ 
++        if (!kmem_check_cache_obj(cachep, GET_PAGE_SLAB(page), objp)) 
++                return 0;
++
++        return (cachep == GET_PAGE_CACHE(page));
++}
++
+ #if DEBUG
+ static int kmem_extra_free_checks (kmem_cache_t * cachep,
+                       slab_t *slabp, void * objp)
+--- lum-pristine/arch/i386/mm/init.c   Fri Dec 21 10:41:53 2001
++++ lum/arch/i386/mm/init.c    Sat Jun 15 00:31:15 2002
+@@ -43,6 +43,12 @@
+ static unsigned long totalram_pages;
+ static unsigned long totalhigh_pages;
++struct page *check_get_page(unsigned long kaddr)
++{
++#warning FIXME: Lustre team, is this solid?
++        return virt_to_page(kaddr);
++}
++
+ int do_check_pgt_cache(int low, int high)
+ {
+       int freed = 0;
+--- lum-pristine/arch/um/kernel/mem.c  Thu Jun 13 14:07:26 2002
++++ lum/arch/um/kernel/mem.c   Fri Jun 14 17:00:21 2002
+@@ -489,6 +489,22 @@
+       return(phys_mem_map(pte_val(pte)));
+ }
++struct page *check_get_page(unsigned long kaddr)
++{
++        struct page *page;
++        struct mem_region *mr;
++        unsigned long phys = __pa(kaddr);
++      unsigned int n = phys_region_index(phys);
++
++      if(regions[n] == NULL) 
++                return NULL; 
++
++        mr = regions[n];
++        page = (struct page *) mr->mem_map;
++      return page + ((phys_addr(phys)) >> PAGE_SHIFT);
++}
++
++
+ struct mem_region *page_region(struct page *page, int *index_out)
+ {
+       int i;
+@@ -504,12 +520,14 @@
+                       return(region);
+               }
+       }
+-      panic("No region found for page");
++//panic("No region found for page");
+       return(NULL);
+ }
+ struct page *page_mem_map(struct page *page)
+ {
++        if (!page_region(page, NULL))
++            return NULL; 
+       return((struct page *) page_region(page, NULL)->mem_map);
+ }
+--- lum-pristine/include/linux/slab.h  Fri Dec 21 10:42:04 2001
++++ lum/include/linux/slab.h   Sat Jun 15 00:34:24 2002
+@@ -57,6 +57,7 @@
+ extern int kmem_cache_shrink(kmem_cache_t *);
+ extern void *kmem_cache_alloc(kmem_cache_t *, int);
+ extern void kmem_cache_free(kmem_cache_t *, void *);
++extern int kmem_cache_validate(kmem_cache_t *cachep, void *objp);
+ extern void *kmalloc(size_t, int);
+ extern void kfree(const void *);