All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 6/10] Reiser4: fix calls to kmem_cache_destroy
       [not found]         ` <11650653921405-git-send-email-laurent.riffard@free.fr>
@ 2006-12-02 13:16           ` Laurent Riffard
  0 siblings, 0 replies; 13+ messages in thread
From: Laurent Riffard @ 2006-12-02 13:16 UTC (permalink / raw)
  To: reiserfs-list; +Cc: Laurent Riffard

Since Linux v2.6.19-rc1, kmem_cache_destroy() returns void because there
is very little filesystem driver code can do upon failed
kmem_cache_destroy().

This patch updates Reiser4 code to reflect this change. BTW, we do not
test anymore for null argument since kmem_cache_destroy does this check.
---
 fs/reiser4/super_ops.c |    6 +-----
 1 files changed, 1 insertions(+), 5 deletions(-)

diff --git a/fs/reiser4/super_ops.c b/fs/reiser4/super_ops.c
index 0f39702..04fa72d 100644
--- a/fs/reiser4/super_ops.c
+++ b/fs/reiser4/super_ops.c
@@ -589,11 +589,7 @@ static struct file_system_type reiser4_fs_type = {
 
 void destroy_reiser4_cache(kmem_cache_t **cachep)
 {
-	int result;
-
-	BUG_ON(*cachep == NULL);
-	result = kmem_cache_destroy(*cachep);
-	BUG_ON(result != 0);
+	kmem_cache_destroy(*cachep);
 	*cachep = NULL;
 }
 
-- 
1.4.4.1.gaed4


^ permalink raw reply related	[flat|nested] 13+ messages in thread

* Reiser4 for 2.6.19
@ 2006-12-03 13:49 Laurent Riffard
  2006-12-03 13:49 ` [PATCH 1/10] Reiser4 for 2.6.18 version 3 Laurent Riffard
                   ` (10 more replies)
  0 siblings, 11 replies; 13+ messages in thread
From: Laurent Riffard @ 2006-12-03 13:49 UTC (permalink / raw)
  To: reiserfs-list@namesys.com

[this is a repost, since half of my previous mails didn't reach 
 reiserfs mailing-list]

Hi,

There is 10 patches in this series, first one is "Reiser4 for 2.6.18
version 3". It's made up from the last Namesys Reiser4 patch for vanilla
kernel
(http://ftp.namesys.com/pub/reiser4-for-2.6/2.6.18/reiser4-for-2.6.18-3.patch.gz),
updated to apply cleanly on top of 2.6.19 kernel. One can alternatively
apply the original patch from Namesys (reiser4-for-2.6.18-3.patch.gz) on
top of 2.6.19 kernel, it will successfully apply with some oddities.

The 9 next patches are compile-fixes for 2.6.19 or bug-fixes I picked up from
reiserfs mailing-list.

Andrew Wade (3):
    Reiser4: fix use after free in jrelse_tail
    Reiser4: release d_ref
    Reiser4: release d_ref (fix)

Edward Shishkin (2):
    Reiser4 for 2.6.18 version 3
    reiser4-generic_file_read-fix

Laurent Riffard (5):
    Reiser4: cometics changes in mm/filemap.c.
    Reiser4: fix calls to kmem_cache_destroy
    Reiser4: Replace inode.u.generic_ip with inode.i_private
    Reiser4: inode.i_blksize suppression
    Reiser4: remove unnecessary config.h includes.

The whole series is available as in a single patch:
http://laurent.riffard.free.fr/reiser4/reiser4-for-2.6.19.patch.gz.

I'm not a filesystem guru, nor I'm affiliated with Namesys. These
patches just suit my needs. It works for me and I hope it will help
somebody else. 

~~
laurent 






^ permalink raw reply	[flat|nested] 13+ messages in thread

* [PATCH 1/10] Reiser4 for 2.6.18 version 3
  2006-12-03 13:49 Reiser4 for 2.6.19 Laurent Riffard
@ 2006-12-03 13:49 ` Laurent Riffard
  2006-12-03 13:50 ` [PATCH 2/10] Reiser4: cometics changes in mm/filemap.c Laurent Riffard
                   ` (9 subsequent siblings)
  10 siblings, 0 replies; 13+ messages in thread
From: Laurent Riffard @ 2006-12-03 13:49 UTC (permalink / raw)
  To: reiserfs-list@namesys.com


This is the last reiser4 patch for vanilla kernel from namesys.com 
(http://ftp.namesys.com/pub/reiser4-for-2.6/2.6.18/reiser4-for-2.6.18-3.patch.gz).

---
Documentation/Changes                         |   12 +
Documentation/filesystems/reiser4.txt         |   75 +
arch/i386/lib/usercopy.c                      |    2 +
fs/Kconfig                                    |    2 +
fs/Makefile                                   |    1 +
fs/fs-writeback.c                             |   26 +-
fs/reiser4/Kconfig                            |   31 +
fs/reiser4/Makefile                           |  100 +
fs/reiser4/README                             |  125 +
fs/reiser4/as_ops.c                           |  391 +++
fs/reiser4/block_alloc.c                      | 1139 ++++++++
fs/reiser4/block_alloc.h                      |  175 ++
fs/reiser4/blocknrset.c                       |  368 +++
fs/reiser4/carry.c                            | 1381 +++++++++
fs/reiser4/carry.h                            |  442 +++
fs/reiser4/carry_ops.c                        | 2103 ++++++++++++++
fs/reiser4/carry_ops.h                        |   42 +
fs/reiser4/context.c                          |  278 ++
fs/reiser4/context.h                          |  228 ++
fs/reiser4/coord.c                            |  937 ++++++
fs/reiser4/coord.h                            |  389 +++
fs/reiser4/debug.c                            |  300 ++
fs/reiser4/debug.h                            |  350 +++
fs/reiser4/dformat.h                          |   71 +
fs/reiser4/dscale.c                           |  174 ++
fs/reiser4/dscale.h                           |   27 +
fs/reiser4/entd.c                             |  354 +++
fs/reiser4/entd.h                             |   90 +
fs/reiser4/eottl.c                            |  510 ++++
fs/reiser4/estimate.c                         |  111 +
fs/reiser4/export_ops.c                       |  296 ++
fs/reiser4/flush.c                            | 3626 +++++++++++++++++++++++
fs/reiser4/flush.h                            |  274 ++
fs/reiser4/flush_queue.c                      |  681 +++++
fs/reiser4/forward.h                          |  258 ++
fs/reiser4/fsdata.c                           |  803 ++++++
fs/reiser4/fsdata.h                           |  218 ++
fs/reiser4/init_super.c                       |  739 +++++
fs/reiser4/inode.c                            |  727 +++++
fs/reiser4/inode.h                            |  430 +++
fs/reiser4/ioctl.h                            |   41 +
fs/reiser4/jnode.c                            | 1922 +++++++++++++
fs/reiser4/jnode.h                            |  707 +++++
fs/reiser4/kassign.c                          |  659 +++++
fs/reiser4/kassign.h                          |  110 +
fs/reiser4/key.c                              |  137 +
fs/reiser4/key.h                              |  384 +++
fs/reiser4/ktxnmgrd.c                         |  214 ++
fs/reiser4/ktxnmgrd.h                         |   52 +
fs/reiser4/lock.c                             | 1261 ++++++++
fs/reiser4/lock.h                             |  272 ++
fs/reiser4/oid.c                              |  141 +
fs/reiser4/page_cache.c                       |  712 +++++
fs/reiser4/page_cache.h                       |   62 +
fs/reiser4/plugin/Makefile                    |   26 +
fs/reiser4/plugin/cluster.c                   |   66 +
fs/reiser4/plugin/cluster.h                   |  315 ++
fs/reiser4/plugin/compress/Makefile           |    6 +
fs/reiser4/plugin/compress/compress.c         |  370 +++
fs/reiser4/plugin/compress/compress.h         |   38 +
fs/reiser4/plugin/compress/compress_mode.c    |  163 ++
fs/reiser4/plugin/compress/lzoconf.h          |  420 +++
fs/reiser4/plugin/compress/minilzo.c          | 2155 ++++++++++++++
fs/reiser4/plugin/compress/minilzo.h          |   94 +
fs/reiser4/plugin/crypto/cipher.c             |  116 +
fs/reiser4/plugin/crypto/cipher.h             |   67 +
fs/reiser4/plugin/crypto/digest.c             |   58 +
fs/reiser4/plugin/dir/Makefile                |    5 +
fs/reiser4/plugin/dir/dir.h                   |   36 +
fs/reiser4/plugin/dir/hashed_dir.c            |   81 +
fs/reiser4/plugin/dir/seekable_dir.c          |   46 +
fs/reiser4/plugin/dir_plugin_common.c         |  864 ++++++
fs/reiser4/plugin/disk_format/Makefile        |    5 +
fs/reiser4/plugin/disk_format/disk_format.c   |   37 +
fs/reiser4/plugin/disk_format/disk_format.h   |   27 +
fs/reiser4/plugin/disk_format/disk_format40.c |  556 ++++
fs/reiser4/plugin/disk_format/disk_format40.h |   99 +
fs/reiser4/plugin/fibration.c                 |  174 ++
fs/reiser4/plugin/fibration.h                 |   37 +
fs/reiser4/plugin/file/Makefile               |    7 +
fs/reiser4/plugin/file/cryptcompress.c        | 3819 +++++++++++++++++++++++++
fs/reiser4/plugin/file/cryptcompress.h        |  549 ++++
fs/reiser4/plugin/file/file.c                 | 2713 ++++++++++++++++++
fs/reiser4/plugin/file/file.h                 |  257 ++
fs/reiser4/plugin/file/invert.c               |  493 ++++
fs/reiser4/plugin/file/symfile.c              |   87 +
fs/reiser4/plugin/file/symlink.c              |   92 +
fs/reiser4/plugin/file/tail_conversion.c      |  728 +++++
fs/reiser4/plugin/file_ops.c                  |  167 ++
fs/reiser4/plugin/file_ops_readdir.c          |  655 +++++
fs/reiser4/plugin/file_plugin_common.c        |  929 ++++++
fs/reiser4/plugin/hash.c                      |  350 +++
fs/reiser4/plugin/inode_ops.c                 |  886 ++++++
fs/reiser4/plugin/inode_ops_rename.c          |  904 ++++++
fs/reiser4/plugin/item/Makefile               |   18 +
fs/reiser4/plugin/item/acl.h                  |   66 +
fs/reiser4/plugin/item/blackbox.c             |  142 +
fs/reiser4/plugin/item/blackbox.h             |   33 +
fs/reiser4/plugin/item/cde.c                  | 1007 +++++++
fs/reiser4/plugin/item/cde.h                  |   87 +
fs/reiser4/plugin/item/ctail.c                | 1588 ++++++++++
fs/reiser4/plugin/item/ctail.h                |   89 +
fs/reiser4/plugin/item/extent.c               |  197 ++
fs/reiser4/plugin/item/extent.h               |  228 ++
fs/reiser4/plugin/item/extent_file_ops.c      | 1710 +++++++++++
fs/reiser4/plugin/item/extent_flush_ops.c     | 1018 +++++++
fs/reiser4/plugin/item/extent_item_ops.c      |  882 ++++++
fs/reiser4/plugin/item/internal.c             |  392 +++
fs/reiser4/plugin/item/internal.h             |   57 +
fs/reiser4/plugin/item/item.c                 |  727 +++++
fs/reiser4/plugin/item/item.h                 |  399 +++
fs/reiser4/plugin/item/sde.c                  |  190 ++
fs/reiser4/plugin/item/sde.h                  |   66 +
fs/reiser4/plugin/item/static_stat.c          | 1040 +++++++
fs/reiser4/plugin/item/static_stat.h          |  219 ++
fs/reiser4/plugin/item/tail.c                 |  805 ++++++
fs/reiser4/plugin/item/tail.h                 |   58 +
fs/reiser4/plugin/node/Makefile               |    5 +
fs/reiser4/plugin/node/node.c                 |  131 +
fs/reiser4/plugin/node/node.h                 |  272 ++
fs/reiser4/plugin/node/node40.c               | 2924 +++++++++++++++++++
fs/reiser4/plugin/node/node40.h               |  125 +
fs/reiser4/plugin/object.c                    |  501 ++++
fs/reiser4/plugin/object.h                    |  121 +
fs/reiser4/plugin/plugin.c                    |  535 ++++
fs/reiser4/plugin/plugin.h                    |  935 ++++++
fs/reiser4/plugin/plugin_header.h             |  136 +
fs/reiser4/plugin/plugin_set.c                |  378 +++
fs/reiser4/plugin/plugin_set.h                |   82 +
fs/reiser4/plugin/regular.c                   |   44 +
fs/reiser4/plugin/security/Makefile           |    4 +
fs/reiser4/plugin/security/perm.c             |   44 +
fs/reiser4/plugin/security/perm.h             |   82 +
fs/reiser4/plugin/space/Makefile              |    4 +
fs/reiser4/plugin/space/bitmap.c              | 1592 +++++++++++
fs/reiser4/plugin/space/bitmap.h              |   47 +
fs/reiser4/plugin/space/space_allocator.h     |   80 +
fs/reiser4/plugin/tail_policy.c               |  113 +
fs/reiser4/pool.c                             |  236 ++
fs/reiser4/pool.h                             |   54 +
fs/reiser4/readahead.c                        |  138 +
fs/reiser4/readahead.h                        |   48 +
fs/reiser4/reiser4.h                          |  276 ++
fs/reiser4/safe_link.c                        |  351 +++
fs/reiser4/safe_link.h                        |   29 +
fs/reiser4/seal.c                             |  217 ++
fs/reiser4/seal.h                             |   49 +
fs/reiser4/search.c                           | 1611 +++++++++++
fs/reiser4/status_flags.c                     |  176 ++
fs/reiser4/status_flags.h                     |   43 +
fs/reiser4/super.c                            |  313 ++
fs/reiser4/super.h                            |  467 +++
fs/reiser4/super_ops.c                        |  724 +++++
fs/reiser4/tap.c                              |  377 +++
fs/reiser4/tap.h                              |   69 +
fs/reiser4/tree.c                             | 1875 ++++++++++++
fs/reiser4/tree.h                             |  579 ++++
fs/reiser4/tree_mod.c                         |  383 +++
fs/reiser4/tree_mod.h                         |   29 +
fs/reiser4/tree_walk.c                        |  926 ++++++
fs/reiser4/tree_walk.h                        |  125 +
fs/reiser4/txnmgr.c                           | 3158 ++++++++++++++++++++
fs/reiser4/txnmgr.h                           |  703 +++++
fs/reiser4/type_safe_hash.h                   |  320 +++
fs/reiser4/vfs_ops.c                          |  267 ++
fs/reiser4/vfs_ops.h                          |   58 +
fs/reiser4/wander.c                           | 1799 ++++++++++++
fs/reiser4/wander.h                           |  135 +
fs/reiser4/writeout.h                         |   21 +
fs/reiser4/znode.c                            | 1028 +++++++
fs/reiser4/znode.h                            |  434 +++
include/linux/fs.h                            |    3 +
lib/radix-tree.c                              |    1 +
mm/filemap.c                                  |    5 +
mm/readahead.c                                |    1 +
175 files changed, 79648 insertions(+), 10 deletions(-)


Since this patch is really big, it is available from 
http://laurent.riffard.free.fr/reiser4/reiser4-for-2.6.18-3-for-2.6.19.patch.gz
[597 kiB].

-- 1.4.4.1.gaed4 


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [PATCH 2/10] Reiser4: cometics changes in mm/filemap.c.
  2006-12-03 13:49 Reiser4 for 2.6.19 Laurent Riffard
  2006-12-03 13:49 ` [PATCH 1/10] Reiser4 for 2.6.18 version 3 Laurent Riffard
@ 2006-12-03 13:50 ` Laurent Riffard
  2006-12-03 13:50 ` [PATCH 3/10] Reiser4: fix use after free in jrelse_tail Laurent Riffard
                   ` (8 subsequent siblings)
  10 siblings, 0 replies; 13+ messages in thread
From: Laurent Riffard @ 2006-12-03 13:50 UTC (permalink / raw)
  To: reiserfs-list@namesys.com

This patch moves some EXPORT_SYMOLs near the functions definition.
---
mm/filemap.c |    6 +++---
1 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/mm/filemap.c b/mm/filemap.c
index ffe6dcc..c117b52 100644
--- a/mm/filemap.c
+++ b/mm/filemap.c
@@ -467,6 +467,7 @@ int add_to_page_cache_lru(struct page *page, struct address_space *mapping,
		lru_cache_add(page);
	return ret;
}
+EXPORT_SYMBOL(add_to_page_cache_lru);

#ifdef CONFIG_NUMA
struct page *__page_cache_alloc(gfp_t gfp)
@@ -740,7 +741,7 @@ unsigned find_get_pages(struct address_space *mapping, pgoff_t start,
	read_unlock_irq(&mapping->tree_lock);
	return ret;
}
-EXPORT_SYMBOL(add_to_page_cache_lru);
+EXPORT_SYMBOL(find_get_pages);

/**
 * find_get_pages_contig - gang contiguous pagecache lookup
@@ -801,7 +802,7 @@ unsigned find_get_pages_tag(struct address_space *mapping, pgoff_t *index,
	read_unlock_irq(&mapping->tree_lock);
	return ret;
}
-EXPORT_SYMBOL(find_get_pages);
+EXPORT_SYMBOL(find_get_pages_tag);

/**
 * grab_cache_page_nowait - returns locked page at given index in given cache
@@ -859,7 +860,6 @@ static void shrink_readahead_size_eio(struct file *filp,

	ra->ra_pages /= 4;
}
-EXPORT_SYMBOL(find_get_pages_tag);

/**
 * do_generic_mapping_read - generic file read routine
-- 1.4.4.1.gaed4 


^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH 3/10] Reiser4: fix use after free in jrelse_tail
  2006-12-03 13:49 Reiser4 for 2.6.19 Laurent Riffard
  2006-12-03 13:49 ` [PATCH 1/10] Reiser4 for 2.6.18 version 3 Laurent Riffard
  2006-12-03 13:50 ` [PATCH 2/10] Reiser4: cometics changes in mm/filemap.c Laurent Riffard
@ 2006-12-03 13:50 ` Laurent Riffard
  2006-12-03 13:50 ` [PATCH 4/10] Reiser4: release d_ref Laurent Riffard
                   ` (7 subsequent siblings)
  10 siblings, 0 replies; 13+ messages in thread
From: Laurent Riffard @ 2006-12-03 13:50 UTC (permalink / raw)
  To: reiserfs-list@namesys.com

(From Andrew Wade <andrew.j.wade@gmail.com>)

"[nikita-1936] assertion failed: reiser4_no_counters_are_held()" turned
out to be a bug in the debugging code. I've applied the patch below and
haven't had a recurrence.
---
fs/reiser4/jnode.c |    4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/fs/reiser4/jnode.c b/fs/reiser4/jnode.c
index e814712..8e4c026 100644
--- a/fs/reiser4/jnode.c
+++ b/fs/reiser4/jnode.c
@@ -999,10 +999,10 @@ void jrelse_tail(jnode * node /* jnode to release references to */ )
{
	assert("nikita-489", atomic_read(&node->d_count) > 0);
	atomic_dec(&node->d_count);
-	/* release reference acquired in jload_gfp() or jinit_new() */
-	jput(node);
	if (jnode_is_unformatted(node) || jnode_is_znode(node))
		LOCK_CNT_DEC(d_refs);
+	/* release reference acquired in jload_gfp() or jinit_new() */
+	jput(node);
}

/* drop reference to node data. When last reference is dropped, data are
-- 1.4.4.1.gaed4 






^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH 4/10] Reiser4: release d_ref
  2006-12-03 13:49 Reiser4 for 2.6.19 Laurent Riffard
                   ` (2 preceding siblings ...)
  2006-12-03 13:50 ` [PATCH 3/10] Reiser4: fix use after free in jrelse_tail Laurent Riffard
@ 2006-12-03 13:50 ` Laurent Riffard
  2006-12-03 13:50 ` [PATCH 5/10] Reiser4: release d_ref (fix) Laurent Riffard
                   ` (6 subsequent siblings)
  10 siblings, 0 replies; 13+ messages in thread
From: Laurent Riffard @ 2006-12-03 13:50 UTC (permalink / raw)
  To: reiserfs-list@namesys.com

(From Andrew Wade <andrew.j.wade@gmail.com>)

Hello Alexander,

In addition to your patch, I've also applied the patch below. With
these two patches the fs is much more stable for me.

However, something is holding a d_ref across the calls to
reiser4_writepage. It's not clear to me that this is allowed so my
patch may not be a full fix.

Andrew Wade
---
fs/reiser4/plugin/item/extent_file_ops.c |   12 +++++++++---
1 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/fs/reiser4/plugin/item/extent_file_ops.c b/fs/reiser4/plugin/item/extent_file_ops.c
index af4c89e..7afbca3 100644
--- a/fs/reiser4/plugin/item/extent_file_ops.c
+++ b/fs/reiser4/plugin/item/extent_file_ops.c
@@ -1313,20 +1313,22 @@ static int extent_readpage_filler(void *data, struct page *page)
				      TWIG_LEVEL, CBK_UNIQUE, NULL);
		if (result != CBK_COORD_FOUND) {
			unset_hint(hint);
-			return result;
+			goto out;
		}
		ext_coord->valid = 0;
	}

	if (zload(ext_coord->coord.node)) {
		unset_hint(hint);
-		return RETERR(-EIO);
+		result = RETERR(-EIO);
+		goto out;
	}
	if (!item_is_extent(&ext_coord->coord)) {
		/* tail conversion is running in parallel */
		zrelse(ext_coord->coord.node);
		unset_hint(hint);
-		return RETERR(-EIO);
+		result = RETERR(-EIO);
+		goto out;
	}

	if (ext_coord->valid == 0)
@@ -1351,6 +1353,10 @@ static int extent_readpage_filler(void *data, struct page *page)
	} else
		unset_hint(hint);
	zrelse(ext_coord->coord.node);
+
+out:
+	/* Calls to this function may be intermingled with VM writeback. */
+	reiser4_txn_restart_current();
	return result;
}

-- 1.4.4.1.gaed4 






^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH 5/10] Reiser4: release d_ref (fix)
  2006-12-03 13:49 Reiser4 for 2.6.19 Laurent Riffard
                   ` (3 preceding siblings ...)
  2006-12-03 13:50 ` [PATCH 4/10] Reiser4: release d_ref Laurent Riffard
@ 2006-12-03 13:50 ` Laurent Riffard
  2006-12-03 13:50 ` [PATCH 6/10] Reiser4: fix calls to kmem_cache_destroy Laurent Riffard
                   ` (5 subsequent siblings)
  10 siblings, 0 replies; 13+ messages in thread
From: Laurent Riffard @ 2006-12-03 13:50 UTC (permalink / raw)
  To: reiserfs-list@namesys.com

(From Andrew Wade <andrew.j.wade@gmail.com>)

Fix erronous call to reiser4_txn_restart_current, should
be txn_restart_current.
---
fs/reiser4/plugin/item/extent_file_ops.c |    2 +-
1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/fs/reiser4/plugin/item/extent_file_ops.c b/fs/reiser4/plugin/item/extent_file_ops.c
index 7afbca3..6e1ac01 100644
--- a/fs/reiser4/plugin/item/extent_file_ops.c
+++ b/fs/reiser4/plugin/item/extent_file_ops.c
@@ -1356,7 +1356,7 @@ static int extent_readpage_filler(void *data, struct page *page)

out:
	/* Calls to this function may be intermingled with VM writeback. */
-	reiser4_txn_restart_current();
+	txn_restart_current();
	return result;
}

-- 1.4.4.1.gaed4 






^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH 6/10] Reiser4: fix calls to kmem_cache_destroy
  2006-12-03 13:49 Reiser4 for 2.6.19 Laurent Riffard
                   ` (4 preceding siblings ...)
  2006-12-03 13:50 ` [PATCH 5/10] Reiser4: release d_ref (fix) Laurent Riffard
@ 2006-12-03 13:50 ` Laurent Riffard
  2006-12-03 13:51 ` [PATCH 7/10] Reiser4: Replace inode.u.generic_ip with inode.i_private Laurent Riffard
                   ` (4 subsequent siblings)
  10 siblings, 0 replies; 13+ messages in thread
From: Laurent Riffard @ 2006-12-03 13:50 UTC (permalink / raw)
  To: reiserfs-list@namesys.com

Since Linux v2.6.19-rc1, kmem_cache_destroy() returns void because there
is very little filesystem driver code can do upon failed
kmem_cache_destroy().

This patch updates Reiser4 code to reflect this change. BTW, we do not
test anymore for null argument since kmem_cache_destroy does this check.
---
fs/reiser4/super_ops.c |    6 +-----
1 files changed, 1 insertions(+), 5 deletions(-)

diff --git a/fs/reiser4/super_ops.c b/fs/reiser4/super_ops.c
index 0f39702..04fa72d 100644
--- a/fs/reiser4/super_ops.c
+++ b/fs/reiser4/super_ops.c
@@ -589,11 +589,7 @@ static struct file_system_type reiser4_fs_type = {

void destroy_reiser4_cache(kmem_cache_t **cachep)
{
-	int result;
-
-	BUG_ON(*cachep == NULL);
-	result = kmem_cache_destroy(*cachep);
-	BUG_ON(result != 0);
+	kmem_cache_destroy(*cachep);
	*cachep = NULL;
}

-- 1.4.4.1.gaed4 



^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH 7/10] Reiser4: Replace inode.u.generic_ip with inode.i_private
  2006-12-03 13:49 Reiser4 for 2.6.19 Laurent Riffard
                   ` (5 preceding siblings ...)
  2006-12-03 13:50 ` [PATCH 6/10] Reiser4: fix calls to kmem_cache_destroy Laurent Riffard
@ 2006-12-03 13:51 ` Laurent Riffard
  2006-12-03 13:51 ` [PATCH 8/10] Reiser4: inode.i_blksize suppression Laurent Riffard
                   ` (3 subsequent siblings)
  10 siblings, 0 replies; 13+ messages in thread
From: Laurent Riffard @ 2006-12-03 13:51 UTC (permalink / raw)
  To: reiserfs-list@namesys.com

inode.u.generic_ip was replaced with inode.i_private to reduce the size
of the VFS inode structure. This patch updates reiser4 code to reflect
this change.
---
fs/reiser4/inode.h                   |    2 +-
fs/reiser4/plugin/file/symlink.c     |   14 +++++++-------
fs/reiser4/plugin/inode_ops.c        |    6 +++---
fs/reiser4/plugin/item/static_stat.c |   18 +++++++++---------
4 files changed, 20 insertions(+), 20 deletions(-)

diff --git a/fs/reiser4/inode.h b/fs/reiser4/inode.h
index ed59b0f..88b155d 100644
--- a/fs/reiser4/inode.h
+++ b/fs/reiser4/inode.h
@@ -41,7 +41,7 @@ typedef enum {
	REISER4_IMMUTABLE = 2,
	/* inode was read from storage */
	REISER4_LOADED = 3,
-	/* this bit is set for symlinks. inode->u.generic_ip points to target
+	/* this bit is set for symlinks. inode->i_private points to target
	   name of symlink. */
	REISER4_GENERIC_PTR_USED = 4,
	/* set if size of stat-data item for this inode is known. If this is
diff --git a/fs/reiser4/plugin/file/symlink.c b/fs/reiser4/plugin/file/symlink.c
index 343e72e..4f3f05a 100644
--- a/fs/reiser4/plugin/file/symlink.c
+++ b/fs/reiser4/plugin/file/symlink.c
@@ -42,8 +42,8 @@ int create_symlink(struct inode *symlink,
	 */
	reiser4_inode_data(symlink)->extmask |= (1 << SYMLINK_STAT);

-	assert("vs-838", symlink->u.generic_ip == NULL);
-	symlink->u.generic_ip = (void *)data->name;
+	assert("vs-838", symlink->i_private == NULL);
+	symlink->i_private = (void *)data->name;

	assert("vs-843", symlink->i_size == 0);
	INODE_SET_FIELD(symlink, i_size, strlen(data->name));
@@ -51,14 +51,14 @@ int create_symlink(struct inode *symlink,
	/* insert stat data appended with data->name */
	result = inode_file_plugin(symlink)->write_sd_by_inode(symlink);
	if (result) {
-		/* FIXME-VS: Make sure that symlink->u.generic_ip is not attached
+		/* FIXME-VS: Make sure that symlink->i_private is not attached
		   to kmalloced data */
		INODE_SET_FIELD(symlink, i_size, 0);
	} else {
-		assert("vs-849", symlink->u.generic_ip
+		assert("vs-849", symlink->i_private
		       && inode_get_flag(symlink, REISER4_GENERIC_PTR_USED));
		assert("vs-850",
-		       !memcmp((char *)symlink->u.generic_ip, data->name,
+		       !memcmp((char *)symlink->i_private, data->name,
			       (size_t) symlink->i_size + 1));
	}
	return result;
@@ -76,8 +76,8 @@ void destroy_inode_symlink(struct inode *inode)
	assert("edward-801", inode_get_flag(inode, REISER4_GENERIC_PTR_USED));
	assert("vs-839", S_ISLNK(inode->i_mode));

-	kfree(inode->u.generic_ip);
-	inode->u.generic_ip = NULL;
+	kfree(inode->i_private);
+	inode->i_private = NULL;
	inode_clr_flag(inode, REISER4_GENERIC_PTR_USED);
}

diff --git a/fs/reiser4/plugin/inode_ops.c b/fs/reiser4/plugin/inode_ops.c
index 73e6cbd..7c215af 100644
--- a/fs/reiser4/plugin/inode_ops.c
+++ b/fs/reiser4/plugin/inode_ops.c
@@ -389,16 +389,16 @@ int mknod_common(struct inode *parent, struct dentry *dentry,
*
* This is common implementation of vfs's followlink method of struct
* inode_operations.
- * Assumes that inode's generic_ip points to the content of symbolic link.
+ * Assumes that inode's i_private points to the content of symbolic link.
*/
void *follow_link_common(struct dentry *dentry, struct nameidata *nd)
{
	assert("vs-851", S_ISLNK(dentry->d_inode->i_mode));

-	if (!dentry->d_inode->u.generic_ip
+	if (!dentry->d_inode->i_private
	    || !inode_get_flag(dentry->d_inode, REISER4_GENERIC_PTR_USED))
		return ERR_PTR(RETERR(-EINVAL));
-	nd_set_link(nd, dentry->d_inode->u.generic_ip);
+	nd_set_link(nd, dentry->d_inode->i_private);
	return NULL;
}

diff --git a/fs/reiser4/plugin/item/static_stat.c b/fs/reiser4/plugin/item/static_stat.c
index d1a4a40..0ef01e6 100644
--- a/fs/reiser4/plugin/item/static_stat.c
+++ b/fs/reiser4/plugin/item/static_stat.c
@@ -430,21 +430,21 @@ save_large_times_sd(struct inode *inode /* object being processed */ ,

/* symlink stat data extension */

-/* allocate memory for symlink target and attach it to inode->u.generic_ip */
+/* allocate memory for symlink target and attach it to inode->i_private */
static int
symlink_target_to_inode(struct inode *inode, const char *target, int len)
{
-	assert("vs-845", inode->u.generic_ip == NULL);
+	assert("vs-845", inode->i_private == NULL);
	assert("vs-846", !inode_get_flag(inode, REISER4_GENERIC_PTR_USED));

	/* FIXME-VS: this is prone to deadlock. Not more than other similar
	   places, though */
-	inode->u.generic_ip = kmalloc((size_t) len + 1, get_gfp_mask());
-	if (!inode->u.generic_ip)
+	inode->i_private = kmalloc((size_t) len + 1, get_gfp_mask());
+	if (!inode->i_private)
		return RETERR(-ENOMEM);

-	memcpy((char *)(inode->u.generic_ip), target, (size_t) len);
-	((char *)(inode->u.generic_ip))[len] = 0;
+	memcpy((char *)(inode->i_private), target, (size_t) len);
+	((char *)(inode->i_private))[len] = 0;
	inode_set_flag(inode, REISER4_GENERIC_PTR_USED);
	return 0;
}
@@ -499,8 +499,8 @@ static int save_symlink_sd(struct inode *inode, char **area)
	if (!inode_get_flag(inode, REISER4_GENERIC_PTR_USED)) {
		const char *target;

-		target = (const char *)(inode->u.generic_ip);
-		inode->u.generic_ip = NULL;
+		target = (const char *)(inode->i_private);
+		inode->i_private = NULL;

		result = symlink_target_to_inode(inode, target, length);

@@ -510,7 +510,7 @@ static int save_symlink_sd(struct inode *inode, char **area)
	} else {
		/* there is nothing to do in update but move area */
		assert("vs-844",
-		       !memcmp(inode->u.generic_ip, sd->body,
+		       !memcmp(inode->i_private, sd->body,
			       (size_t) length + 1));
	}

-- 1.4.4.1.gaed4 



^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH 8/10] Reiser4: inode.i_blksize suppression
  2006-12-03 13:49 Reiser4 for 2.6.19 Laurent Riffard
                   ` (6 preceding siblings ...)
  2006-12-03 13:51 ` [PATCH 7/10] Reiser4: Replace inode.u.generic_ip with inode.i_private Laurent Riffard
@ 2006-12-03 13:51 ` Laurent Riffard
  2006-12-03 13:51 ` [PATCH 9/10] Reiser4: remove unnecessary config.h includes Laurent Riffard
                   ` (2 subsequent siblings)
  10 siblings, 0 replies; 13+ messages in thread
From: Laurent Riffard @ 2006-12-03 13:51 UTC (permalink / raw)
  To: reiserfs-list@namesys.com

This patch updates the reiser4 code to reflect the suppression of the
inode.i_blksize field (see commit
ba52de123d454b57369f291348266d86f4b35070).
---
fs/reiser4/plugin/item/static_stat.c |    2 --
1 files changed, 0 insertions(+), 2 deletions(-)

diff --git a/fs/reiser4/plugin/item/static_stat.c b/fs/reiser4/plugin/item/static_stat.c
index 0ef01e6..f53a5aa 100644
--- a/fs/reiser4/plugin/item/static_stat.c
+++ b/fs/reiser4/plugin/item/static_stat.c
@@ -168,8 +168,6 @@ int init_inode_static_sd(struct inode *inode /* object being processed */ ,
			break;
	}
	state->extmask = bigmask;
-	/* common initialisations */
-	inode->i_blksize = get_super_private(inode->i_sb)->optimal_io_size;
	if (len - (bit / 16 * sizeof(d16)) > 0) {
		/* alignment in save_len_static_sd() is taken into account
		   -edward */
-- 1.4.4.1.gaed4 



^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH 9/10] Reiser4: remove unnecessary config.h includes.
  2006-12-03 13:49 Reiser4 for 2.6.19 Laurent Riffard
                   ` (7 preceding siblings ...)
  2006-12-03 13:51 ` [PATCH 8/10] Reiser4: inode.i_blksize suppression Laurent Riffard
@ 2006-12-03 13:51 ` Laurent Riffard
  2006-12-03 13:51 ` [PATCH 10/10] reiser4-generic_file_read-fix Laurent Riffard
  2006-12-04 10:53 ` Reiser4 for 2.6.19 Guilherme Covolo
  10 siblings, 0 replies; 13+ messages in thread
From: Laurent Riffard @ 2006-12-03 13:51 UTC (permalink / raw)
  To: reiserfs-list@namesys.com

---
fs/reiser4/plugin/compress/compress.c |    1 -
fs/reiser4/reiser4.h                  |    1 -
2 files changed, 0 insertions(+), 2 deletions(-)

diff --git a/fs/reiser4/plugin/compress/compress.c b/fs/reiser4/plugin/compress/compress.c
index 25d4dea..1a7122d 100644
--- a/fs/reiser4/plugin/compress/compress.c
+++ b/fs/reiser4/plugin/compress/compress.c
@@ -6,7 +6,6 @@
#include "../plugin.h"
#include "minilzo.h"

-#include <linux/config.h>
#include <linux/zlib.h>
#include <linux/types.h>
#include <linux/hardirq.h>
diff --git a/fs/reiser4/reiser4.h b/fs/reiser4/reiser4.h
index ec94eec..cdae341 100644
--- a/fs/reiser4/reiser4.h
+++ b/fs/reiser4/reiser4.h
@@ -6,7 +6,6 @@
#if !defined( __REISER4_H__ )
#define __REISER4_H__

-#include <linux/config.h>
#include <asm/param.h>		/* for HZ */
#include <linux/errno.h>
#include <linux/types.h>
-- 1.4.4.1.gaed4 



^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH 10/10] reiser4-generic_file_read-fix
  2006-12-03 13:49 Reiser4 for 2.6.19 Laurent Riffard
                   ` (8 preceding siblings ...)
  2006-12-03 13:51 ` [PATCH 9/10] Reiser4: remove unnecessary config.h includes Laurent Riffard
@ 2006-12-03 13:51 ` Laurent Riffard
  2006-12-04 10:53 ` Reiser4 for 2.6.19 Guilherme Covolo
  10 siblings, 0 replies; 13+ messages in thread
From: Laurent Riffard @ 2006-12-03 13:51 UTC (permalink / raw)
  To: reiserfs-list@namesys.com

(From Edward Shishkin <edward.shishkin@gmail.com>)

Use do_sync_read() instead of generic_file_read()
---
fs/reiser4/plugin/file/cryptcompress.c |    2 +-
fs/reiser4/plugin/object.c             |    1 +
2 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/fs/reiser4/plugin/file/cryptcompress.c b/fs/reiser4/plugin/file/cryptcompress.c
index b587933..64137dc 100644
--- a/fs/reiser4/plugin/file/cryptcompress.c
+++ b/fs/reiser4/plugin/file/cryptcompress.c
@@ -2883,7 +2883,7 @@ ssize_t read_cryptcompress(struct file * file, char __user *buf, size_t size,
	down_read(&info->lock);
	LOCK_CNT_INC(inode_sem_r);

-	result = generic_file_read(file, buf, size, off);
+	result = do_sync_read(file, buf, size, off);

	up_read(&info->lock);
	LOCK_CNT_DEC(inode_sem_r);
diff --git a/fs/reiser4/plugin/object.c b/fs/reiser4/plugin/object.c
index a57ce06..9f11dd6 100644
--- a/fs/reiser4/plugin/object.c
+++ b/fs/reiser4/plugin/object.c
@@ -305,6 +305,7 @@ file_plugin file_plugins[LAST_FILE_PLUGIN_ID] = {
			.llseek = generic_file_llseek,
			.read = read_cryptcompress,
			.write = write_cryptcompress,
+			.aio_read = generic_file_aio_read,
			.mmap = mmap_cryptcompress,
			.release = release_cryptcompress,
			.fsync = sync_common,
-- 1.4.4.1.gaed4 





^ permalink raw reply related	[flat|nested] 13+ messages in thread

* Re: Reiser4 for 2.6.19
  2006-12-03 13:49 Reiser4 for 2.6.19 Laurent Riffard
                   ` (9 preceding siblings ...)
  2006-12-03 13:51 ` [PATCH 10/10] reiser4-generic_file_read-fix Laurent Riffard
@ 2006-12-04 10:53 ` Guilherme Covolo
  10 siblings, 0 replies; 13+ messages in thread
From: Guilherme Covolo @ 2006-12-04 10:53 UTC (permalink / raw)
  To: reiserfs-list

great job :)

Em Domingo 03 Dezembro 2006 11:49, Laurent Riffard escreveu:
> [this is a repost, since half of my previous mails didn't reach
>  reiserfs mailing-list]
>
> Hi,
>
> There is 10 patches in this series, first one is "Reiser4 for 2.6.18
> version 3". It's made up from the last Namesys Reiser4 patch for vanilla
> kernel
> (http://ftp.namesys.com/pub/reiser4-for-2.6/2.6.18/reiser4-for-2.6.18-3.pat
>ch.gz), updated to apply cleanly on top of 2.6.19 kernel. One can
> alternatively apply the original patch from Namesys
> (reiser4-for-2.6.18-3.patch.gz) on top of 2.6.19 kernel, it will
> successfully apply with some oddities.
>
> The 9 next patches are compile-fixes for 2.6.19 or bug-fixes I picked up
> from reiserfs mailing-list.
>
> Andrew Wade (3):
>     Reiser4: fix use after free in jrelse_tail
>     Reiser4: release d_ref
>     Reiser4: release d_ref (fix)
>
> Edward Shishkin (2):
>     Reiser4 for 2.6.18 version 3
>     reiser4-generic_file_read-fix
>
> Laurent Riffard (5):
>     Reiser4: cometics changes in mm/filemap.c.
>     Reiser4: fix calls to kmem_cache_destroy
>     Reiser4: Replace inode.u.generic_ip with inode.i_private
>     Reiser4: inode.i_blksize suppression
>     Reiser4: remove unnecessary config.h includes.
>
> The whole series is available as in a single patch:
> http://laurent.riffard.free.fr/reiser4/reiser4-for-2.6.19.patch.gz.
>
> I'm not a filesystem guru, nor I'm affiliated with Namesys. These
> patches just suit my needs. It works for me and I hope it will help
> somebody else.
>
> ~~
> laurent

^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2006-12-04 10:53 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-12-03 13:49 Reiser4 for 2.6.19 Laurent Riffard
2006-12-03 13:49 ` [PATCH 1/10] Reiser4 for 2.6.18 version 3 Laurent Riffard
2006-12-03 13:50 ` [PATCH 2/10] Reiser4: cometics changes in mm/filemap.c Laurent Riffard
2006-12-03 13:50 ` [PATCH 3/10] Reiser4: fix use after free in jrelse_tail Laurent Riffard
2006-12-03 13:50 ` [PATCH 4/10] Reiser4: release d_ref Laurent Riffard
2006-12-03 13:50 ` [PATCH 5/10] Reiser4: release d_ref (fix) Laurent Riffard
2006-12-03 13:50 ` [PATCH 6/10] Reiser4: fix calls to kmem_cache_destroy Laurent Riffard
2006-12-03 13:51 ` [PATCH 7/10] Reiser4: Replace inode.u.generic_ip with inode.i_private Laurent Riffard
2006-12-03 13:51 ` [PATCH 8/10] Reiser4: inode.i_blksize suppression Laurent Riffard
2006-12-03 13:51 ` [PATCH 9/10] Reiser4: remove unnecessary config.h includes Laurent Riffard
2006-12-03 13:51 ` [PATCH 10/10] reiser4-generic_file_read-fix Laurent Riffard
2006-12-04 10:53 ` Reiser4 for 2.6.19 Guilherme Covolo
  -- strict thread matches above, loose matches on Subject: below --
2006-12-02 13:16 Laurent Riffard
     [not found] ` <1165065391122-git-send-email-laurent.riffard@free.fr>
2006-12-02 13:16   ` [PATCH 2/10] Reiser4: cometics changes in mm/filemap.c Laurent Riffard
     [not found]     ` <11650653912299-git-send-email-laurent.riffard@free.fr>
     [not found]       ` <11650653921903-git-send-email-laurent.riffard@free.fr>
     [not found]         ` <11650653921405-git-send-email-laurent.riffard@free.fr>
2006-12-02 13:16           ` [PATCH 6/10] Reiser4: fix calls to kmem_cache_destroy Laurent Riffard

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.