---- /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;
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)));
}
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;
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 *);