Please find my reiser4 patch for 2.6.20 at http://public.efil.de/reiser4-for-2.6.20-0.patch.gz
See attachment for changes versus 2.6.19.2 from [1] I don't use cryptocompress and kindly ask you to confirm 'cancel_dirty_page(clust->pages[i], PAGE_CACHE_SIZE);' in plugin/file/cryptcompress.c, line 1303. As far as I understand forget_cluster_pages is only called _after_ the cluster's pages have successfully been flushed. That would make for case (b) in [2]. [1] ftp://ftp.namesys.com/pub/reiser4-for-2.6/2.6.19/reiser4-for-2.6.19-2.patch.gz [2] http://www2.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=fba2591bf4e418b6c3f9f8794c9dd8fe40ae7bd9 -- Ingo Bormuth, voicebox & fax: +49-(0)-12125-10226517 public key 86326EC9, http://ibormuth.efil.de/contact
diff -Nru linux-2.6.20-reiser4/fs/reiser4/entd.c
new-linux-2.6.20-reiser4/fs/reiser4/entd.c
--- linux-2.6.20-reiser4/fs/reiser4/entd.c 2007-02-05 01:55:43.000000000
+0100
+++ new-linux-2.6.20-reiser4/fs/reiser4/entd.c 2007-02-05 01:47:42.000000000
+0100
@@ -14,13 +14,12 @@
#include "page_cache.h"
#include "inode.h"
-#include <linux/sched.h> /* struct task_struct */
+#include <linux/freezer.h>
#include <linux/suspend.h>
#include <linux/kernel.h>
#include <linux/writeback.h>
#include <linux/time.h> /* INITIAL_JIFFIES */
#include <linux/backing-dev.h> /* bdi_write_congested */
-#include <linux/wait.h>
#include <linux/kthread.h>
#define DEF_PRIORITY 12
diff -Nru linux-2.6.20-reiser4/fs/reiser4/flush_queue.c
new-linux-2.6.20-reiser4/fs/reiser4/flush_queue.c
--- linux-2.6.20-reiser4/fs/reiser4/flush_queue.c 2007-02-05
01:55:43.000000000 +0100
+++ new-linux-2.6.20-reiser4/fs/reiser4/flush_queue.c 2007-02-05
01:30:45.000000000 +0100
@@ -107,7 +107,7 @@
}
/* slab for flush queues */
-static kmem_cache_t *fq_slab;
+static struct kmem_cache *fq_slab;
/**
* reiser4_init_fqs - create flush queue cache
diff -Nru linux-2.6.20-reiser4/fs/reiser4/fsdata.c
new-linux-2.6.20-reiser4/fs/reiser4/fsdata.c
--- linux-2.6.20-reiser4/fs/reiser4/fsdata.c 2007-02-05 01:55:43.000000000
+0100
+++ new-linux-2.6.20-reiser4/fs/reiser4/fsdata.c 2007-02-05
01:30:45.000000000 +0100
@@ -5,7 +5,7 @@
#include "inode.h"
/* cache or dir_cursors */
-static kmem_cache_t *d_cursor_cache;
+static struct kmem_cache *d_cursor_cache;
static struct shrinker *d_cursor_shrinker;
/* list of unused cursors */
@@ -594,7 +594,7 @@
}
/* slab for reiser4_dentry_fsdata */
-static kmem_cache_t *dentry_fsdata_cache;
+static struct kmem_cache *dentry_fsdata_cache;
/**
* reiser4_init_dentry_fsdata - create cache of dentry_fsdata
@@ -661,7 +661,7 @@
}
/* slab for reiser4_file_fsdata */
-static kmem_cache_t *file_fsdata_cache;
+static struct kmem_cache *file_fsdata_cache;
/**
* reiser4_init_file_fsdata - create cache of reiser4_file_fsdata
diff -Nru linux-2.6.20-reiser4/fs/reiser4/jnode.c
new-linux-2.6.20-reiser4/fs/reiser4/jnode.c
--- linux-2.6.20-reiser4/fs/reiser4/jnode.c 2007-02-05 01:55:43.000000000
+0100
+++ new-linux-2.6.20-reiser4/fs/reiser4/jnode.c 2007-02-05 01:30:46.000000000
+0100
@@ -123,7 +123,7 @@
#include <linux/fs.h> /* for struct address_space */
#include <linux/writeback.h> /* for inode_lock */
-static kmem_cache_t *_jnode_slab = NULL;
+static struct kmem_cache *_jnode_slab = NULL;
static void jnode_set_type(jnode * node, jnode_type type);
static int jdelete(jnode * node);
diff -Nru linux-2.6.20-reiser4/fs/reiser4/ktxnmgrd.c
new-linux-2.6.20-reiser4/fs/reiser4/ktxnmgrd.c
--- linux-2.6.20-reiser4/fs/reiser4/ktxnmgrd.c 2007-02-05 01:55:43.000000000
+0100
+++ new-linux-2.6.20-reiser4/fs/reiser4/ktxnmgrd.c 2007-02-05
01:48:14.000000000 +0100
@@ -29,12 +29,11 @@
#include "super.h"
#include "reiser4.h"
-#include <linux/sched.h> /* for struct task_struct */
-#include <linux/wait.h>
#include <linux/suspend.h>
#include <linux/kernel.h>
#include <linux/writeback.h>
#include <linux/kthread.h>
+#include <linux/freezer.h>
static int scan_mgr(struct super_block *);
diff -Nru linux-2.6.20-reiser4/fs/reiser4/plugin/file/cryptcompress.c
new-linux-2.6.20-reiser4/fs/reiser4/plugin/file/cryptcompress.c
--- linux-2.6.20-reiser4/fs/reiser4/plugin/file/cryptcompress.c 2007-02-05
01:55:43.000000000 +0100
+++ new-linux-2.6.20-reiser4/fs/reiser4/plugin/file/cryptcompress.c
2007-02-05 01:21:48.000000000 +0100
@@ -1300,7 +1300,7 @@
lock_page(clust->pages[i]);
if (PageDirty(clust->pages[i])) {
assert("edward-1277", PageUptodate(clust->pages[i]));
- test_clear_page_dirty(clust->pages[i]);
+ cancel_dirty_page(clust->pages[i], PAGE_CACHE_SIZE);
}
#if REISER4_DEBUG
else
diff -Nru linux-2.6.20-reiser4/fs/reiser4/plugin/plugin_set.c
new-linux-2.6.20-reiser4/fs/reiser4/plugin/plugin_set.c
--- linux-2.6.20-reiser4/fs/reiser4/plugin/plugin_set.c 2007-02-05
01:55:43.000000000 +0100
+++ new-linux-2.6.20-reiser4/fs/reiser4/plugin/plugin_set.c 2007-02-05
01:30:45.000000000 +0100
@@ -31,7 +31,7 @@
#include <linux/stddef.h>
/* slab for plugin sets */
-static kmem_cache_t *plugin_set_slab;
+static struct kmem_cache *plugin_set_slab;
static spinlock_t plugin_set_lock[8] __cacheline_aligned_in_smp = {
[0 ... 7] = SPIN_LOCK_UNLOCKED
diff -Nru linux-2.6.20-reiser4/fs/reiser4/super.h
new-linux-2.6.20-reiser4/fs/reiser4/super.h
--- linux-2.6.20-reiser4/fs/reiser4/super.h 2007-02-05 01:55:43.000000000
+0100
+++ new-linux-2.6.20-reiser4/fs/reiser4/super.h 2007-02-05 01:30:46.000000000
+0100
@@ -444,7 +444,7 @@
void print_fs_info(const char *prefix, const struct super_block *);
#endif
-extern void destroy_reiser4_cache(kmem_cache_t **);
+extern void destroy_reiser4_cache(struct kmem_cache **);
extern struct super_operations reiser4_super_operations;
extern struct export_operations reiser4_export_operations;
diff -Nru linux-2.6.20-reiser4/fs/reiser4/super_ops.c
new-linux-2.6.20-reiser4/fs/reiser4/super_ops.c
--- linux-2.6.20-reiser4/fs/reiser4/super_ops.c 2007-02-05 01:55:43.000000000
+0100
+++ new-linux-2.6.20-reiser4/fs/reiser4/super_ops.c 2007-02-05
01:30:46.000000000 +0100
@@ -14,7 +14,7 @@
#include <linux/debugfs.h>
/* slab cache for inodes */
-static kmem_cache_t *inode_cache;
+static struct kmem_cache *inode_cache;
static struct dentry *reiser4_debugfs_root = NULL;
@@ -27,7 +27,7 @@
* Initialization function to be called when new page is allocated by reiser4
* inode cache. It is set on inode cache creation.
*/
-static void init_once(void *obj, kmem_cache_t *cache, unsigned long flags)
+static void init_once(void *obj, struct kmem_cache *cache, unsigned long flags)
{
reiser4_inode_object *info;
@@ -595,7 +595,7 @@
.next = NULL
};
-void destroy_reiser4_cache(kmem_cache_t **cachep)
+void destroy_reiser4_cache(struct kmem_cache **cachep)
{
BUG_ON(*cachep == NULL);
kmem_cache_destroy(*cachep);
diff -Nru linux-2.6.20-reiser4/fs/reiser4/txnmgr.c
new-linux-2.6.20-reiser4/fs/reiser4/txnmgr.c
--- linux-2.6.20-reiser4/fs/reiser4/txnmgr.c 2007-02-05 01:55:43.000000000
+0100
+++ new-linux-2.6.20-reiser4/fs/reiser4/txnmgr.c 2007-02-05
01:30:46.000000000 +0100
@@ -90,7 +90,7 @@
For actually implementing these out-of-system-call-scopped transcrashes, the
reiser4_context has a "txn_handle *trans" pointer that may be set to an open
transcrash. Currently there are no dynamically-allocated transcrashes, but
there is a
- "kmem_cache_t *_txnh_slab" created for that purpose in this file.
+ "struct kmem_cache *_txnh_slab" created for that purpose in this file.
*/
/* Extending the other system call interfaces for future transaction features:
@@ -279,9 +279,9 @@
/* FIXME: In theory, we should be using the slab cache init & destructor
methods instead of, e.g., jnode_init, etc. */
-static kmem_cache_t *_atom_slab = NULL;
+static struct kmem_cache *_atom_slab = NULL;
/* this is for user-visible, cross system-call transactions. */
-static kmem_cache_t *_txnh_slab = NULL;
+static struct kmem_cache *_txnh_slab = NULL;
/**
* init_txnmgr_static - create transaction manager slab caches
diff -Nru linux-2.6.20-reiser4/fs/reiser4/znode.c
new-linux-2.6.20-reiser4/fs/reiser4/znode.c
--- linux-2.6.20-reiser4/fs/reiser4/znode.c 2007-02-05 01:55:43.000000000
+0100
+++ new-linux-2.6.20-reiser4/fs/reiser4/znode.c 2007-02-05 01:30:46.000000000
+0100
@@ -196,7 +196,7 @@
#undef KMALLOC
/* slab for znodes */
-static kmem_cache_t *znode_cache;
+static struct kmem_cache *znode_cache;
int znode_shift_order;
pgpyQc1t8EQty.pgp
Description: PGP signature
