All of lore.kernel.org
 help / color / mirror / Atom feed
* Reiser4fs and SPARC64?
@ 2005-02-16 13:17 mailinglists
  2005-02-16 14:09 ` Alex Zarochentsev
  0 siblings, 1 reply; 12+ messages in thread
From: mailinglists @ 2005-02-16 13:17 UTC (permalink / raw)
  To: reiserfs-list

Hi,
i just wondered about reiser4fs working on SPARC64? I use Gentoo Sparc64 
and it is working fine with kernel 2.4.28. But is the Reiser4 code 
SPARC64 ready?

Thanks for your help

Florian Engelmann

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

* Re: Reiser4fs and SPARC64?
  2005-02-16 13:17 Reiser4fs and SPARC64? mailinglists
@ 2005-02-16 14:09 ` Alex Zarochentsev
  2005-02-16 14:24   ` Vitaly Fertman
  0 siblings, 1 reply; 12+ messages in thread
From: Alex Zarochentsev @ 2005-02-16 14:09 UTC (permalink / raw)
  To: mailinglists@d-g-c.de; +Cc: reiserfs-list

[-- Attachment #1: Type: text/plain, Size: 651 bytes --]

On Wed, Feb 16, 2005 at 02:17:49PM +0100, mailinglists@d-g-c.de wrote:
> Hi,

> i just wondered about reiser4fs working on SPARC64? I use Gentoo Sparc64 
> and it is working fine with kernel 2.4.28. But is the Reiser4 code 
> SPARC64 ready?

It would be nice if you try it :) we have no reiser4/sparc64 reports yet.  

Reiser4 code is included into AKPM's -mm kernels.  mkfs and other utils are in
the ftp://ftp.namesys.com/pub/reiser4progs/

At least 3 additional patches are needed for running reiser4 on sparc64. They not yet
included into -mm kernels.  I am attaching them to this e-mail.

> Thanks for your help
> 
> Florian Engelmann

-- 
Alex.

[-- Attachment #2: reiser4-bitmap-amd64-fix-2.diff --]
[-- Type: text/plain, Size: 590 bytes --]

===== plugin/space/bitmap.c 1.186 vs edited =====
--- 1.186/plugin/space/bitmap.c	Wed Jan 19 18:52:52 2005
+++ edited/plugin/space/bitmap.c	Mon Feb  7 16:18:37 2005
@@ -165,7 +165,7 @@
 static int
 find_next_zero_bit_in_word(ulong_t word, int start_bit)
 {
-	ulong_t mask = 1 << start_bit;
+	ulong_t mask = 1UL << start_bit;
 	int i = start_bit;
 
 	while ((word & mask) != 0) {
@@ -235,7 +235,7 @@
 	assert ("zam-965", start_bit < BITS_PER_LONG);
 	assert ("zam-966", start_bit >= 0);
 
-	bit_mask = (1 << nr);
+	bit_mask = (1UL << nr);
 
 	while (bit_mask != 0) {
 		if (bit_mask & word)

[-- Attachment #3: bitmap-word-align-2.diff --]
[-- Type: text/plain, Size: 2528 bytes --]

===== plugin/space/bitmap.c 1.186 vs edited =====
--- 1.186/plugin/space/bitmap.c	Wed Jan 19 18:52:52 2005
+++ edited/plugin/space/bitmap.c	Sun Feb  6 19:23:01 2005
@@ -54,13 +54,15 @@
 
 #define CHECKSUM_SIZE    4
 
+#define BYTES_PER_LONG   (sizeof(long))
+
 #if BITS_PER_LONG == 64
 #  define LONG_INT_SHIFT (6)
 #else
 #  define LONG_INT_SHIFT (5)
 #endif
 
-#define LONG_INT_MASK (BITS_PER_LONG - 1)
+#define LONG_INT_MASK (BITS_PER_LONG - 1UL)
 
 typedef unsigned long ulong_t;
 
@@ -179,17 +181,46 @@
 
 #include <asm/bitops.h>
 
+#if BITS_PER_LONG == 64
+
+#define OFF(addr)  (((ulong_t)(addr) & (BYTES_PER_LONG - 1)) << 3)
+#define BASE(addr) ((ulong_t*) ((ulong_t)(addr) & ~(BYTES_PER_LONG - 1)))
+
+static inline void reiser4_set_bit(int nr, void * addr)
+{
+	ext2_set_bit(nr + OFF(addr), BASE(addr));
+}
+
+static inline void reiser4_clear_bit(int nr, void * addr)
+{
+	ext2_clear_bit(nr + OFF(addr), BASE(addr));
+}
+
+static inline int reiser4_test_bit(int nr, void * addr)
+{
+	return ext2_test_bit(nr + OFF(addr), BASE(addr));
+}
+static inline int reiser4_find_next_zero_bit(void * addr, int maxoffset, int offset) 
+{
+	int off = OFF(addr);
+
+	return ext2_find_next_zero_bit(BASE(addr), maxoffset + off, offset + off) - off;
+}
+
+#else
+
 #define reiser4_set_bit(nr, addr)    ext2_set_bit(nr, addr)
 #define reiser4_clear_bit(nr, addr)  ext2_clear_bit(nr, addr)
 #define reiser4_test_bit(nr, addr)  ext2_test_bit(nr, addr)
 
 #define reiser4_find_next_zero_bit(addr, maxoffset, offset) \
 ext2_find_next_zero_bit(addr, maxoffset, offset)
+#endif
 
 /* Search for a set bit in the bit array [@start_offset, @max_offset[, offsets
  * are counted from @addr, return the offset of the first bit if it is found,
  * @maxoffset otherwise. */
-static bmap_off_t reiser4_find_next_set_bit(
+static bmap_off_t __reiser4_find_next_set_bit(
 	void *addr, bmap_off_t max_offset, bmap_off_t start_offset)
 {
 	ulong_t *base = addr;
@@ -225,6 +256,21 @@
 
 	return max_offset;
 }
+
+#if BITS_PER_LONG == 64 
+
+static bmap_off_t reiser4_find_next_set_bit(
+	void *addr, bmap_off_t max_offset, bmap_off_t start_offset)
+{
+	bmap_off_t off = OFF(addr);
+
+	return __reiser4_find_next_set_bit(BASE(addr), max_offset + off, start_offset + off) - off;
+}
+
+#else
+#define reiser4_find_next_set_bit(addr, max_offset, start_offset) \
+  __reiser4_find_next_set_bit(addr, max_offset, start_offset) 
+#endif
 
 /* search for the first set bit in single word. */
 static int find_last_set_bit_in_word (ulong_t word, int start_bit)

[-- Attachment #4: reiser4-replace_extent-word-align-fix.diff --]
[-- Type: text/plain, Size: 741 bytes --]

# This is a BitKeeper generated diff -Nru style patch.
#
# ChangeSet
#   2005/02/12 18:55:16+03:00 zam@crimson.namesys.com 
#   replace_extent: unaligned access fix.
# 
# plugin/item/extent.c
#   2005/02/12 18:55:10+03:00 zam@crimson.namesys.com +1 -1
#   replace_extent: unaligned access fix.
# 
diff -Nru a/plugin/item/extent.c b/plugin/item/extent.c
--- a/plugin/item/extent.c	Tue Feb 15 21:25:22 2005
+++ b/plugin/item/extent.c	Tue Feb 15 21:25:22 2005
@@ -135,7 +135,7 @@
 			assert("vs-987", znode_is_loaded(coord_after.node));
 			assert("vs-988", !memcmp(ext, &orig_ext, sizeof (*ext)));
 
-			*ext = *replace;
+			memcpy(ext, replace, sizeof(*ext));
 			znode_make_dirty(coord_after.node);
 
 			if (coord_after.node != orig_znode)

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

* Re: Reiser4fs and SPARC64?
  2005-02-16 14:09 ` Alex Zarochentsev
@ 2005-02-16 14:24   ` Vitaly Fertman
  2005-02-17  9:38     ` mailinglists
                       ` (2 more replies)
  0 siblings, 3 replies; 12+ messages in thread
From: Vitaly Fertman @ 2005-02-16 14:24 UTC (permalink / raw)
  To: mailinglists@d-g-c.de; +Cc: reiserfs-list

[-- Attachment #1: Type: text/plain, Size: 760 bytes --]

On Wednesday 16 February 2005 17:09, Alex Zarochentsev wrote:
> On Wed, Feb 16, 2005 at 02:17:49PM +0100, mailinglists@d-g-c.de wrote:
> > Hi,
> >
> > i just wondered about reiser4fs working on SPARC64? I use Gentoo Sparc64
> > and it is working fine with kernel 2.4.28. But is the Reiser4 code
> > SPARC64 ready?
>
> It would be nice if you try it :) we have no reiser4/sparc64 reports yet.
>
> Reiser4 code is included into AKPM's -mm kernels.  mkfs and other utils are
> in the ftp://ftp.namesys.com/pub/reiser4progs/
>
> At least 3 additional patches are needed for running reiser4 on sparc64.
> They not yet included into -mm kernels.  I am attaching them to this
> e-mail.

and at least these 2 patches needs to applied also.

-- 
Thanks,
Vitaly Fertman

[-- Attachment #2: libaal-1.0.3-unaligned.patch --]
[-- Type: text/x-diff, Size: 3181 bytes --]

diff -rup libaal-1.0.3/include/aal/Makefile.am libaal-1.0.3-1/include/aal/Makefile.am
--- libaal-1.0.3/include/aal/Makefile.am	2004-01-08 15:49:40.000000000 +0100
+++ libaal-1.0.3-1/include/aal/Makefile.am	2005-01-16 22:18:51.000000000 +0100
@@ -2,4 +2,4 @@ aalincludedir		= $(includedir)/aal
 
 aalinclude_HEADERS   	= libaal.h device.h file.h exception.h list.h malloc.h \
 			  print.h string.h math.h endian.h debug.h bitops.h \
-                          gauge.h block.h ui.h stream.h hash.h types.h
+                          gauge.h block.h ui.h stream.h hash.h types.h unaligned.h
diff -rup libaal-1.0.3/include/aal/Makefile.in libaal-1.0.3-1/include/aal/Makefile.in
--- libaal-1.0.3/include/aal/Makefile.in	2004-12-06 19:04:14.000000000 +0100
+++ libaal-1.0.3-1/include/aal/Makefile.in	2005-01-16 15:24:49.000000000 +0100
@@ -146,7 +146,7 @@ aalincludedir = $(includedir)/aal
 
 aalinclude_HEADERS = libaal.h device.h file.h exception.h list.h malloc.h \
 			  print.h string.h math.h endian.h debug.h bitops.h \
-                          gauge.h block.h ui.h stream.h hash.h types.h
+                          gauge.h block.h ui.h stream.h hash.h types.h unaligned.h
 
 subdir = include/aal
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
diff -rup libaal-1.0.3/include/aal/endian.h libaal-1.0.3-1/include/aal/endian.h
--- libaal-1.0.3/include/aal/endian.h	2003-07-27 10:55:29.000000000 +0200
+++ libaal-1.0.3-1/include/aal/endian.h	2005-01-16 22:29:19.000000000 +0100
@@ -75,8 +75,8 @@
 
 #endif
 
-#define aal_get_leXX(xx, p, field)	(LE##xx##_TO_CPU ((p)->field))
-#define aal_set_leXX(xx, p, field, val)	((p)->field = CPU_TO_LE##xx(val))
+#define aal_get_leXX(xx, p, field)	(LE##xx##_TO_CPU (get_unaligned(&(p)->field)))
+#define aal_set_leXX(xx, p, field, val)	put_unaligned(&(p)->field, CPU_TO_LE##xx(val))
 
 #define aal_get_le16(p, field) 		aal_get_leXX(16, p, field)
 #define aal_set_le16(p, field, val) 	aal_set_leXX(16, p, field, val)
diff -rup libaal-1.0.3/include/aal/libaal.h libaal-1.0.3-1/include/aal/libaal.h
--- libaal-1.0.3/include/aal/libaal.h	2004-09-22 14:27:23.000000000 +0200
+++ libaal-1.0.3-1/include/aal/libaal.h	2005-01-16 22:18:51.000000000 +0100
@@ -26,6 +26,7 @@ extern "C" {
 #include "math.h"
 #include "bitops.h"
 #include "endian.h"
+#include "unaligned.h"
 #include "debug.h"
 #include "gauge.h"
 #include "block.h"
diff -rup libaal-1.0.3/include/aal/unaligned.h libaal-1.0.3-1/include/aal/unaligned.h
--- libaal-1.0.3/include/aal/unaligned.h	2005-01-16 23:09:05.000000000 +0100
+++ libaal-1.0.3-1/include/aal/unaligned.h	2005-01-16 22:18:51.000000000 +0100
@@ -0,0 +1,26 @@
+/* Copyright (C) 2001-2005 by Hans Reiser, licensing governed by libaal/COPYING.
+         
+   unaligned.h -- libaal unalignment declaration. */
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#ifndef AAL_UNALIGNED_H
+#define AAL_UNALIGNED_H
+
+#define get_unaligned(ptr)				\
+({							\
+	__typeof__(*(ptr)) __tmp;			\
+	aal_memcpy(&__tmp, (ptr), sizeof(*(ptr)));	\
+	__tmp;						\
+})
+
+#define put_unaligned(ptr, val)				\
+({							\
+	__typeof__(*(ptr)) __tmp = (val);		\
+	aal_memcpy((ptr), &__tmp, sizeof(*(ptr)));	\
+	(void)0;					\
+})
+
+#endif

[-- Attachment #3: reiser4progs-1.0.3-unaligned.patch --]
[-- Type: text/x-diff, Size: 13446 bytes --]

diff -rup reiser4progs-1.0.3/plugin/item/cde40/cde40.h reiser4progs-1.0.3-1/plugin/item/cde40/cde40.h
--- reiser4progs-1.0.3/plugin/item/cde40/cde40.h	2004-06-30 01:42:33.000000000 +0200
+++ reiser4progs-1.0.3-1/plugin/item/cde40/cde40.h	2005-01-16 22:57:58.000000000 +0100
@@ -33,6 +33,7 @@ struct objid3 {
 
 typedef struct objid3 objid3_t;
 
+
 struct hash3 {
 	d8_t objectid[8];
 	d8_t offset[8];
@@ -130,71 +131,76 @@ extern uint32_t cde40_cut(reiser4_place_
 extern uint16_t cde40_overhead();
 
 #if defined(ENABLE_SHORT_KEYS) && defined(ENABLE_LARGE_KEYS)
+
+/* objidN_t macroses. */
+#define ob_loc(ob, pol)							\
+	((pol == 3) ?							\
+	 ((objid3_t *)(ob))->locality :					\
+	 ((objid4_t *)(ob))->locality)
+ 
 #define ob_get_locality(ob, pol)					\
-        ((pol == 3) ?							\
-	 LE64_TO_CPU(*((d64_t *)((objid3_t *)(ob))->locality)) :	\
-	 LE64_TO_CPU(*((d64_t *)((objid4_t *)(ob))->locality)))
+	LE64_TO_CPU(get_unaligned((d64_t *)ob_loc(ob, pol)))
 
 #define ob_set_locality(ob, val, pol)					\
-        ((pol == 3) ?							\
-	 (*(d64_t *)((objid3_t *)(ob))->locality) = CPU_TO_LE64(val) :	\
-	 (*(d64_t *)((objid4_t *)(ob))->locality) = CPU_TO_LE64(val))
+	put_unaligned((d64_t *)ob_loc(ob, pol), CPU_TO_LE64(val))
+
+#define ob_oid(ob, pol)							\
+	((pol == 3) ?							\
+	 ((objid3_t *)(ob))->objectid :					\
+	 ((objid4_t *)(ob))->objectid)
 
 #define ob_get_objectid(ob, pol)					\
-        ((pol == 3) ?							\
-	 LE64_TO_CPU(*((d64_t *)((objid3_t *)(ob))->objectid)) :	\
-	 LE64_TO_CPU(*((d64_t *)((objid4_t *)(ob))->objectid)))
+	LE64_TO_CPU(get_unaligned((d64_t *)ob_oid(ob, pol)))
 
 #define ob_set_objectid(ob, val, pol)					\
-        ({if (pol == 3)							\
-	 (*(d64_t *)((objid3_t *)(ob))->objectid) = CPU_TO_LE64(val);	\
-         else								\
-	 (*(d64_t *)((objid4_t *)(ob))->objectid) = CPU_TO_LE64(val);})
+	put_unaligned((d64_t *)ob_oid(ob, pol), CPU_TO_LE64(val))
+
+#define ob_ord(ob, pol) ((pol == 3) ? 0 : ((objid4_t *)(ob))->ordering)
 
 #define ob_get_ordering(ob, pol)					\
-        ((pol == 3) ? 0 :						\
-	 LE64_TO_CPU(*((d64_t *)((objid4_t *)(ob))->ordering)))
+	LE64_TO_CPU(get_unaligned((d64_t *)ob_ord(ob, pol)))
 
 #define ob_set_ordering(ob, val, pol)					\
-        ({if (pol == 3) do {} while(0); else				\
-	 (*(d64_t *)((objid4_t *)(ob))->ordering) = CPU_TO_LE64(val);})
+	({if (pol == 3) do {} while(0); else				\
+	 put_unaligned((d64_t *)ob_ord(ob, pol), CPU_TO_LE64(val));})
 
-#define ob_size(pol)							\
-        ((pol == 3) ? sizeof(objid3_t) : sizeof(objid4_t))
+#define ob_size(pol) ((pol == 3) ? sizeof(objid3_t) : sizeof(objid4_t))
+
+/* hashN_t macroses.  */
+#define ha_oid(ha, pol)							\
+	((pol == 3) ?							\
+	 ((hash3_t *)(ha))->objectid :					\
+	 ((hash4_t *)(ha))->objectid)
 
 #define ha_get_objectid(ha, pol)					\
-        ((pol == 3) ?							\
-	 LE64_TO_CPU(*((d64_t *)((hash3_t *)(ha))->objectid)) :		\
-	 LE64_TO_CPU(*((d64_t *)((hash4_t *)(ha))->objectid)))
+	LE64_TO_CPU(get_unaligned((d64_t *)ha_oid(ha, pol)))
 
 #define ha_set_objectid(ha, val, pol)					\
-        ({if (pol == 3)							\
-         (*(d64_t *)((hash3_t *)(ha))->objectid) = CPU_TO_LE64(val);	\
-	 else								\
-	 (*(d64_t *)((hash4_t *)(ha))->objectid) = CPU_TO_LE64(val);})
+	put_unaligned((d64_t *)ha_oid(ha, pol),  CPU_TO_LE64(val))
+
+#define ha_off(ha, pol)							\
+	((pol == 3) ?							\
+	 ((hash3_t *)(ha))->offset :					\
+	 ((hash4_t *)(ha))->offset)
 
 #define ha_get_offset(ha, pol)						\
-        ((pol == 3) ?							\
-         LE64_TO_CPU(*((d64_t *)((hash3_t *)(ha))->offset)) :		\
-	 LE64_TO_CPU(*((d64_t *)((hash4_t *)(ha))->offset)))
-	 
+	LE64_TO_CPU(get_unaligned((d64_t *)ha_off(ha, pol)))
+
 #define ha_set_offset(ha, val, pol)					\
-        ({if (pol == 3)							\
-        (*(d64_t *)((hash3_t *)(ha))->offset) = CPU_TO_LE64(val);	\
-        else								\
-        (*(d64_t *)((hash4_t *)(ha))->offset) = CPU_TO_LE64(val);})
+	put_unaligned((d64_t *)ha_off(ha, pol), CPU_TO_LE64(val))
+
+#define ha_ord(ha, pol) ((pol == 3) ? 0 : ((hash4_t *)(ha))->ordering)
 
 #define ha_get_ordering(ha, pol)					\
-        ((pol == 3) ? 0 :						\
-	 LE64_TO_CPU(*((d64_t *)((hash4_t *)(ha))->ordering)))
-	 
+	LE64_TO_CPU(get_unaligned((d64_t *)ha_ord(ha, pol)))
+
 #define ha_set_ordering(ha, val, pol)					\
-        ({if (pol == 3) do {} while(0); else				\
-        (*(d64_t *)((hash4_t *)(ha))->ordering) = CPU_TO_LE64(val);})
+	({if (pol == 3) do {} while(0); else				\
+	 put_unaligned((d64_t *)ha_ord(ha, pol), CPU_TO_LE64(val));})
 
-#define ha_size(pol)							\
-        ((pol == 3) ? sizeof(hash3_t) : sizeof(hash4_t))
+#define ha_size(pol) ((pol == 3) ? sizeof(hash3_t) : sizeof(hash4_t))
 
+/* entryN_t macroses */
 #define en_get_offset(en, pol)						\
         ((pol == 3) ?							\
 	 aal_get_le16(((entry3_t *)(en)), offset) :			\
@@ -214,97 +220,108 @@ extern uint16_t cde40_overhead();
 	 (void *)(&((cde403_t *)(pl)->body)->entry[pos]) :		\
 	 (void *)(&((cde404_t *)(pl)->body)->entry[pos]))
 
-#else
-#if defined(ENABLE_SHORT_KEYS)
+#elif defined(ENABLE_SHORT_KEYS)
+
+/* objidN_t macroses.  */
 #define ob_get_locality(ob, pol)					\
-	 LE64_TO_CPU(*((d64_t *)((objid3_t *)(ob))->locality))
+	LE64_TO_CPU(get_unaligned((d64_t *)((objid3_t *)(ob))->locality))
 
 #define ob_set_locality(ob, val, pol)					\
-	 (*(d64_t *)((objid3_t *)(ob))->locality) = CPU_TO_LE64(val)
+	put_unaligned((d64_t *)((objid3_t *)(ob))->locality,		\
+		      CPU_TO_LE64(val))
 
 #define ob_get_objectid(ob, pol)					\
-	 LE64_TO_CPU(*((d64_t *)((objid3_t *)(ob))->objectid))
+	LE64_TO_CPU(get_unaligned((d64_t *)((objid3_t *)(ob))->objectid))
 
 #define ob_set_objectid(ob, val, pol)					\
-	 (*(d64_t *)((objid3_t *)(ob))->objectid) = CPU_TO_LE64(val)
+	put_unaligned((d64_t *)((objid3_t *)(ob))->objectid,		\
+		      CPU_TO_LE64(val))
 
 #define ob_get_ordering(ob, pol) (0)
 #define ob_set_ordering(ob, val, pol) do {} while(0)
 
-#define ob_size(pol)							\
-        (sizeof(objid3_t))
+#define ob_size(pol) (sizeof(objid3_t))
 
+/* hashN_t macroses.  */
 #define ha_get_objectid(ha, pol)					\
-	 LE64_TO_CPU(*((d64_t *)((hash3_t *)(ha))->objectid))
+	LE64_TO_CPU(get_unaligned((d64_t *)((hash3_t *)(ha))->objectid))
 
 #define ha_set_objectid(ha, val, pol)					\
-         (*(d64_t *)((hash3_t *)(ha))->objectid) = CPU_TO_LE64(val)
+	put_unaligned((d64_t *)((hash3_t *)(ha))->objectid,		\
+		      CPU_TO_LE64(val))
 
 #define ha_get_offset(ha, pol)						\
-         LE64_TO_CPU(*((d64_t *)((hash3_t *)(ha))->offset))
-	 
+	LE64_TO_CPU(get_unaligned((d64_t *)((hash3_t *)(ha))->offset))
+
 #define ha_set_offset(ha, val, pol)					\
-        (*(d64_t *)((hash3_t *)(ha))->offset) = CPU_TO_LE64(val)
+	put_unaligned((d64_t *)((hash3_t *)(ha))->offset,		\
+		      CPU_TO_LE64(val))
 
 #define ha_get_ordering(ha, pol) (0)
 #define ha_set_ordering(ha, val, pol) do {} while (0)
 
-#define ha_size(pol)							\
-        (sizeof(hash3_t))
+#define ha_size(pol) (sizeof(hash3_t))
 
+/* entryN_t macroses */
 #define en_get_offset(en, pol)						\
 	 aal_get_le16(((entry3_t *)(en)), offset)
 
 #define en_set_offset(en, val, pol)					\
          aal_set_le16(((entry3_t *)(en)), offset, val)
 
-#define en_size(pol)							\
-        (sizeof(entry3_t))
+#define en_size(pol) (sizeof(entry3_t))
 
 #define cde_get_entry(pl, pos, pol)					\
 	 ((void *)(&((cde403_t *)pl->body)->entry[pos]))
-#else
+
+#elif defined(ENABLE_LARGE_KEYS)
+/* objidN_t macroses. */
 #define ob_get_locality(ob, pol)					\
-	 LE64_TO_CPU(*((d64_t *)((objid4_t *)(ob))->locality))
+	LE64_TO_CPU(get_unaligned((d64_t *)((objid4_t *)(ob))->locality))
 
 #define ob_set_locality(ob, val, pol)					\
-	 (*(d64_t *)((objid4_t *)(ob))->locality) = CPU_TO_LE64(val)
+	put_unaligned((d64_t *)((objid4_t *)(ob))->locality,		\
+		      CPU_TO_LE64(val))
 
 #define ob_get_objectid(ob, pol)					\
-	 LE64_TO_CPU(*((d64_t *)((objid4_t *)(ob))->objectid))
+	LE64_TO_CPU(get_unaligned((d64_t *)((objid4_t *)(ob))->objectid))
 
 #define ob_set_objectid(ob, val, pol)					\
-	 (*(d64_t *)((objid4_t *)(ob))->objectid) = CPU_TO_LE64(val)
+	put_unaligned((d64_t *)((objid4_t *)(ob))->objectid,		\
+		      CPU_TO_LE64(val))
 
 #define ob_get_ordering(ob, pol)					\
-	 LE64_TO_CPU(*((d64_t *)((objid4_t *)(ob))->ordering))
+	LE64_TO_CPU(get_unaligned((d64_t *)((objid4_t *)(ob))->ordering))
 
 #define ob_set_ordering(ob, val, pol)					\
-	 (*(d64_t *)((objid4_t *)(ob))->ordering) = CPU_TO_LE64(val)
+	put_unaligned((d64_t *)((objid4_t *)(ob))->ordering,		\
+		      CPU_TO_LE64(val))
 
-#define ob_size(pol)							\
-        (sizeof(objid4_t))
+#define ob_size(pol) (sizeof(objid4_t))
 
+/* hashN_t macroses.  */
 #define ha_get_objectid(ha, pol)					\
-	 LE64_TO_CPU(*((d64_t *)((hash4_t *)(ha))->objectid))
+	LE64_TO_CPU(get_unaligned((d64_t *)((hash4_t *)(ha))->objectid))
 
 #define ha_set_objectid(ha, val, pol)					\
-         (*(d64_t *)((hash4_t *)(ha))->objectid) = CPU_TO_LE64(val)
+	put_unaligned((d64_t *)((hash4_t *)(ha))->objectid,		\
+		      CPU_TO_LE64(val))
 
 #define ha_get_offset(ha, pol)						\
-         LE64_TO_CPU(*((d64_t *)((hash4_t *)(ha))->offset))
+	LE64_TO_CPU(get_unaligned((d64_t *)((hash4_t *)(ha))->offset))
 	 
 #define ha_set_offset(ha, val, pol)					\
-        (*(d64_t *)((hash4_t *)(ha))->offset) = CPU_TO_LE64(val)
+	put_unaligned((d64_t *)((hash4_t *)(ha))->offset,		\
+		      CPU_TO_LE64(val))
 
 #define ha_get_ordering(ha, pol)					\
-         LE64_TO_CPU(*((d64_t *)((hash4_t *)(ha))->ordering))
+	LE64_TO_CPU(get_unaligned((d64_t *)((hash4_t *)(ha))->ordering))
 
 #define ha_set_ordering(ha, val, pol)					\
-        (*(d64_t *)((hash4_t *)(ha))->ordering) = CPU_TO_LE64(val)
+	put_unaligned((d64_t *)((hash4_t *)(ha))->ordering,		\
+		      CPU_TO_LE64(val))
 
-#define ha_size(pol)							\
-        (sizeof(hash4_t))
+#define ha_size(pol) (sizeof(hash4_t))
 
 #define en_get_offset(en, pol)						\
 	 aal_get_le16(((entry4_t *)(en)), offset)
@@ -312,13 +329,11 @@ extern uint16_t cde40_overhead();
 #define en_set_offset(en, val, pol)					\
          aal_set_le16(((entry4_t *)(en)), offset, val)
 
-#define en_size(pol)							\
-        (sizeof(entry4_t))
+#define en_size(pol) (sizeof(entry4_t))
 
 #define cde_get_entry(pl, pos, pol)					\
 	 ((void *)(&((cde404_t *)pl->body)->entry[pos]))
 #endif
-#endif
 
 #define cde_get_units(pl)						\
         aal_get_le16(((cde40_t *)pl->body), units)
diff -rup reiser4progs-1.0.3/plugin/key/key_large/key_large.h reiser4progs-1.0.3-1/plugin/key/key_large/key_large.h
--- reiser4progs-1.0.3/plugin/key/key_large/key_large.h	2004-09-22 14:35:47.000000000 +0200
+++ reiser4progs-1.0.3-1/plugin/key/key_large/key_large.h	2005-01-16 22:57:58.000000000 +0100
@@ -120,14 +120,14 @@ extern uint64_t key_large_get_fobjectid(
 static inline uint64_t kl_get_el(const key_large_t *key,
 				 key_large_field_t off)
 {
-	return LE64_TO_CPU(key->el[off]);
+	return LE64_TO_CPU(get_unaligned(key->el + off));
 }
 
 static inline void kl_set_el(key_large_t *key,
 			     key_large_field_t off,
 			     uint64_t value)
 {
-	key->el[off] = CPU_TO_LE64(value);
+	put_unaligned(key->el + off, CPU_TO_LE64(value));
 }
 
 static inline int kl_comp_el(void *k1, void *k2, int off) {
diff -rup reiser4progs-1.0.3/plugin/key/key_short/key_short.h reiser4progs-1.0.3-1/plugin/key/key_short/key_short.h
--- reiser4progs-1.0.3/plugin/key/key_short/key_short.h	2004-09-22 14:35:54.000000000 +0200
+++ reiser4progs-1.0.3-1/plugin/key/key_short/key_short.h	2005-01-16 22:57:58.000000000 +0100
@@ -108,14 +108,14 @@ extern uint64_t key_short_get_fobjectid(
 static inline uint64_t ks_get_el(const key_short_t *key,
 				 key_short_field_t off)
 {
-	return LE64_TO_CPU(key->el[off]);
+	return LE64_TO_CPU(get_unaligned(key->el + off));
 }
 
 static inline void ks_set_el(key_short_t *key,
 			     key_short_field_t off,
 			     uint64_t value)
 {
-	key->el[off] = CPU_TO_LE64(value);
+	put_unaligned(key->el + off, CPU_TO_LE64(value));
 }
 
 static inline int ks_comp_el(void *k1, void *k2, int off) {
diff -rup reiser4progs-1.0.3/plugin/sdext/sdext_plug/sdext_plug.h reiser4progs-1.0.3-1/plugin/sdext/sdext_plug/sdext_plug.h
--- reiser4progs-1.0.3/plugin/sdext/sdext_plug/sdext_plug.h	2004-06-03 22:00:12.000000000 +0200
+++ reiser4progs-1.0.3-1/plugin/sdext/sdext_plug/sdext_plug.h	2005-01-16 22:57:58.000000000 +0100
@@ -27,14 +27,14 @@ typedef struct sdext_plug sdext_plug_t;
 
 extern reiser4_core_t *sdext_plug_core;
 
-#define sdext_plug_get_count(ext)		aal_get_le16(ext, count)
-#define sdext_plug_set_count(ext, val)		aal_set_le16(ext, count, val)
+#define sdext_plug_get_count(ext)		aal_get_le16((ext), count)
+#define sdext_plug_set_count(ext, val)		aal_set_le16((ext), count, (val))
 
-#define sdext_plug_get_member(ext, n)		aal_get_le16(&(ext->slot[n]), member)
-#define sdext_plug_set_member(ext, n, val)	aal_set_le16(&(ext->slot[n]), member, val)
+#define sdext_plug_get_member(ext, n)		aal_get_le16(&((ext)->slot[n]), member)
+#define sdext_plug_set_member(ext, n, val)	aal_set_le16(&((ext)->slot[n]), member, (val))
 
-#define sdext_plug_get_pid(ext, n)		aal_get_le16(&(ext->slot[n]), plug)
-#define sdext_plug_set_pid(ext, n, val)		aal_set_le16(&(ext->slot[n]), plug, val)
+#define sdext_plug_get_pid(ext, n)		aal_get_le16(&((ext)->slot[n]), plug)
+#define sdext_plug_set_pid(ext, n, val)		aal_set_le16(&((ext)->slot[n]), plug, (val))
 
 extern uint32_t sdext_plug_length(stat_entity_t *stat, void *hint);
 

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

* Re: Reiser4fs and SPARC64?
  2005-02-16 14:24   ` Vitaly Fertman
@ 2005-02-17  9:38     ` mailinglists
  2005-02-17  9:44       ` Alex Zarochentsev
  2005-02-21 12:23     ` mailinglists
  2005-02-21 12:34     ` mailinglists
  2 siblings, 1 reply; 12+ messages in thread
From: mailinglists @ 2005-02-17  9:38 UTC (permalink / raw)
  To: Vitaly Fertman, reiserfs-list, zam

Hi Alex and Vitaly,
so i will use:
http://www.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.10/2.6.10-mm3/2.6.10-mm3.bz2
against 2.6.10 and after that the 5 patches you two emailed me.

should work?

Greetings Florian

By the way - is the Mailinglist still working? The last messahe i 
recieved is from 08.02.2005?!

Vitaly Fertman wrote:

>On Wednesday 16 February 2005 17:09, Alex Zarochentsev wrote:
>  
>
>>On Wed, Feb 16, 2005 at 02:17:49PM +0100, mailinglists@d-g-c.de wrote:
>>    
>>
>>>Hi,
>>>
>>>i just wondered about reiser4fs working on SPARC64? I use Gentoo Sparc64
>>>and it is working fine with kernel 2.4.28. But is the Reiser4 code
>>>SPARC64 ready?
>>>      
>>>
>>It would be nice if you try it :) we have no reiser4/sparc64 reports yet.
>>
>>Reiser4 code is included into AKPM's -mm kernels.  mkfs and other utils are
>>in the ftp://ftp.namesys.com/pub/reiser4progs/
>>
>>At least 3 additional patches are needed for running reiser4 on sparc64.
>>They not yet included into -mm kernels.  I am attaching them to this
>>e-mail.
>>    
>>
>
>and at least these 2 patches needs to applied also.
>
>  
>
>------------------------------------------------------------------------
>
>diff -rup libaal-1.0.3/include/aal/Makefile.am libaal-1.0.3-1/include/aal/Makefile.am
>--- libaal-1.0.3/include/aal/Makefile.am	2004-01-08 15:49:40.000000000 +0100
>+++ libaal-1.0.3-1/include/aal/Makefile.am	2005-01-16 22:18:51.000000000 +0100
>@@ -2,4 +2,4 @@ aalincludedir		= $(includedir)/aal
> 
> aalinclude_HEADERS   	= libaal.h device.h file.h exception.h list.h malloc.h \
> 			  print.h string.h math.h endian.h debug.h bitops.h \
>-                          gauge.h block.h ui.h stream.h hash.h types.h
>+                          gauge.h block.h ui.h stream.h hash.h types.h unaligned.h
>diff -rup libaal-1.0.3/include/aal/Makefile.in libaal-1.0.3-1/include/aal/Makefile.in
>--- libaal-1.0.3/include/aal/Makefile.in	2004-12-06 19:04:14.000000000 +0100
>+++ libaal-1.0.3-1/include/aal/Makefile.in	2005-01-16 15:24:49.000000000 +0100
>@@ -146,7 +146,7 @@ aalincludedir = $(includedir)/aal
> 
> aalinclude_HEADERS = libaal.h device.h file.h exception.h list.h malloc.h \
> 			  print.h string.h math.h endian.h debug.h bitops.h \
>-                          gauge.h block.h ui.h stream.h hash.h types.h
>+                          gauge.h block.h ui.h stream.h hash.h types.h unaligned.h
> 
> subdir = include/aal
> ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
>diff -rup libaal-1.0.3/include/aal/endian.h libaal-1.0.3-1/include/aal/endian.h
>--- libaal-1.0.3/include/aal/endian.h	2003-07-27 10:55:29.000000000 +0200
>+++ libaal-1.0.3-1/include/aal/endian.h	2005-01-16 22:29:19.000000000 +0100
>@@ -75,8 +75,8 @@
> 
> #endif
> 
>-#define aal_get_leXX(xx, p, field)	(LE##xx##_TO_CPU ((p)->field))
>-#define aal_set_leXX(xx, p, field, val)	((p)->field = CPU_TO_LE##xx(val))
>+#define aal_get_leXX(xx, p, field)	(LE##xx##_TO_CPU (get_unaligned(&(p)->field)))
>+#define aal_set_leXX(xx, p, field, val)	put_unaligned(&(p)->field, CPU_TO_LE##xx(val))
> 
> #define aal_get_le16(p, field) 		aal_get_leXX(16, p, field)
> #define aal_set_le16(p, field, val) 	aal_set_leXX(16, p, field, val)
>diff -rup libaal-1.0.3/include/aal/libaal.h libaal-1.0.3-1/include/aal/libaal.h
>--- libaal-1.0.3/include/aal/libaal.h	2004-09-22 14:27:23.000000000 +0200
>+++ libaal-1.0.3-1/include/aal/libaal.h	2005-01-16 22:18:51.000000000 +0100
>@@ -26,6 +26,7 @@ extern "C" {
> #include "math.h"
> #include "bitops.h"
> #include "endian.h"
>+#include "unaligned.h"
> #include "debug.h"
> #include "gauge.h"
> #include "block.h"
>diff -rup libaal-1.0.3/include/aal/unaligned.h libaal-1.0.3-1/include/aal/unaligned.h
>--- libaal-1.0.3/include/aal/unaligned.h	2005-01-16 23:09:05.000000000 +0100
>+++ libaal-1.0.3-1/include/aal/unaligned.h	2005-01-16 22:18:51.000000000 +0100
>@@ -0,0 +1,26 @@
>+/* Copyright (C) 2001-2005 by Hans Reiser, licensing governed by libaal/COPYING.
>+         
>+   unaligned.h -- libaal unalignment declaration. */
>+
>+#ifdef HAVE_CONFIG_H
>+#  include <config.h>
>+#endif
>+
>+#ifndef AAL_UNALIGNED_H
>+#define AAL_UNALIGNED_H
>+
>+#define get_unaligned(ptr)				\
>+({							\
>+	__typeof__(*(ptr)) __tmp;			\
>+	aal_memcpy(&__tmp, (ptr), sizeof(*(ptr)));	\
>+	__tmp;						\
>+})
>+
>+#define put_unaligned(ptr, val)				\
>+({							\
>+	__typeof__(*(ptr)) __tmp = (val);		\
>+	aal_memcpy((ptr), &__tmp, sizeof(*(ptr)));	\
>+	(void)0;					\
>+})
>+
>+#endif
>  
>
>------------------------------------------------------------------------
>
>diff -rup reiser4progs-1.0.3/plugin/item/cde40/cde40.h reiser4progs-1.0.3-1/plugin/item/cde40/cde40.h
>--- reiser4progs-1.0.3/plugin/item/cde40/cde40.h	2004-06-30 01:42:33.000000000 +0200
>+++ reiser4progs-1.0.3-1/plugin/item/cde40/cde40.h	2005-01-16 22:57:58.000000000 +0100
>@@ -33,6 +33,7 @@ struct objid3 {
> 
> typedef struct objid3 objid3_t;
> 
>+
> struct hash3 {
> 	d8_t objectid[8];
> 	d8_t offset[8];
>@@ -130,71 +131,76 @@ extern uint32_t cde40_cut(reiser4_place_
> extern uint16_t cde40_overhead();
> 
> #if defined(ENABLE_SHORT_KEYS) && defined(ENABLE_LARGE_KEYS)
>+
>+/* objidN_t macroses. */
>+#define ob_loc(ob, pol)							\
>+	((pol == 3) ?							\
>+	 ((objid3_t *)(ob))->locality :					\
>+	 ((objid4_t *)(ob))->locality)
>+ 
> #define ob_get_locality(ob, pol)					\
>-        ((pol == 3) ?							\
>-	 LE64_TO_CPU(*((d64_t *)((objid3_t *)(ob))->locality)) :	\
>-	 LE64_TO_CPU(*((d64_t *)((objid4_t *)(ob))->locality)))
>+	LE64_TO_CPU(get_unaligned((d64_t *)ob_loc(ob, pol)))
> 
> #define ob_set_locality(ob, val, pol)					\
>-        ((pol == 3) ?							\
>-	 (*(d64_t *)((objid3_t *)(ob))->locality) = CPU_TO_LE64(val) :	\
>-	 (*(d64_t *)((objid4_t *)(ob))->locality) = CPU_TO_LE64(val))
>+	put_unaligned((d64_t *)ob_loc(ob, pol), CPU_TO_LE64(val))
>+
>+#define ob_oid(ob, pol)							\
>+	((pol == 3) ?							\
>+	 ((objid3_t *)(ob))->objectid :					\
>+	 ((objid4_t *)(ob))->objectid)
> 
> #define ob_get_objectid(ob, pol)					\
>-        ((pol == 3) ?							\
>-	 LE64_TO_CPU(*((d64_t *)((objid3_t *)(ob))->objectid)) :	\
>-	 LE64_TO_CPU(*((d64_t *)((objid4_t *)(ob))->objectid)))
>+	LE64_TO_CPU(get_unaligned((d64_t *)ob_oid(ob, pol)))
> 
> #define ob_set_objectid(ob, val, pol)					\
>-        ({if (pol == 3)							\
>-	 (*(d64_t *)((objid3_t *)(ob))->objectid) = CPU_TO_LE64(val);	\
>-         else								\
>-	 (*(d64_t *)((objid4_t *)(ob))->objectid) = CPU_TO_LE64(val);})
>+	put_unaligned((d64_t *)ob_oid(ob, pol), CPU_TO_LE64(val))
>+
>+#define ob_ord(ob, pol) ((pol == 3) ? 0 : ((objid4_t *)(ob))->ordering)
> 
> #define ob_get_ordering(ob, pol)					\
>-        ((pol == 3) ? 0 :						\
>-	 LE64_TO_CPU(*((d64_t *)((objid4_t *)(ob))->ordering)))
>+	LE64_TO_CPU(get_unaligned((d64_t *)ob_ord(ob, pol)))
> 
> #define ob_set_ordering(ob, val, pol)					\
>-        ({if (pol == 3) do {} while(0); else				\
>-	 (*(d64_t *)((objid4_t *)(ob))->ordering) = CPU_TO_LE64(val);})
>+	({if (pol == 3) do {} while(0); else				\
>+	 put_unaligned((d64_t *)ob_ord(ob, pol), CPU_TO_LE64(val));})
> 
>-#define ob_size(pol)							\
>-        ((pol == 3) ? sizeof(objid3_t) : sizeof(objid4_t))
>+#define ob_size(pol) ((pol == 3) ? sizeof(objid3_t) : sizeof(objid4_t))
>+
>+/* hashN_t macroses.  */
>+#define ha_oid(ha, pol)							\
>+	((pol == 3) ?							\
>+	 ((hash3_t *)(ha))->objectid :					\
>+	 ((hash4_t *)(ha))->objectid)
> 
> #define ha_get_objectid(ha, pol)					\
>-        ((pol == 3) ?							\
>-	 LE64_TO_CPU(*((d64_t *)((hash3_t *)(ha))->objectid)) :		\
>-	 LE64_TO_CPU(*((d64_t *)((hash4_t *)(ha))->objectid)))
>+	LE64_TO_CPU(get_unaligned((d64_t *)ha_oid(ha, pol)))
> 
> #define ha_set_objectid(ha, val, pol)					\
>-        ({if (pol == 3)							\
>-         (*(d64_t *)((hash3_t *)(ha))->objectid) = CPU_TO_LE64(val);	\
>-	 else								\
>-	 (*(d64_t *)((hash4_t *)(ha))->objectid) = CPU_TO_LE64(val);})
>+	put_unaligned((d64_t *)ha_oid(ha, pol),  CPU_TO_LE64(val))
>+
>+#define ha_off(ha, pol)							\
>+	((pol == 3) ?							\
>+	 ((hash3_t *)(ha))->offset :					\
>+	 ((hash4_t *)(ha))->offset)
> 
> #define ha_get_offset(ha, pol)						\
>-        ((pol == 3) ?							\
>-         LE64_TO_CPU(*((d64_t *)((hash3_t *)(ha))->offset)) :		\
>-	 LE64_TO_CPU(*((d64_t *)((hash4_t *)(ha))->offset)))
>-	 
>+	LE64_TO_CPU(get_unaligned((d64_t *)ha_off(ha, pol)))
>+
> #define ha_set_offset(ha, val, pol)					\
>-        ({if (pol == 3)							\
>-        (*(d64_t *)((hash3_t *)(ha))->offset) = CPU_TO_LE64(val);	\
>-        else								\
>-        (*(d64_t *)((hash4_t *)(ha))->offset) = CPU_TO_LE64(val);})
>+	put_unaligned((d64_t *)ha_off(ha, pol), CPU_TO_LE64(val))
>+
>+#define ha_ord(ha, pol) ((pol == 3) ? 0 : ((hash4_t *)(ha))->ordering)
> 
> #define ha_get_ordering(ha, pol)					\
>-        ((pol == 3) ? 0 :						\
>-	 LE64_TO_CPU(*((d64_t *)((hash4_t *)(ha))->ordering)))
>-	 
>+	LE64_TO_CPU(get_unaligned((d64_t *)ha_ord(ha, pol)))
>+
> #define ha_set_ordering(ha, val, pol)					\
>-        ({if (pol == 3) do {} while(0); else				\
>-        (*(d64_t *)((hash4_t *)(ha))->ordering) = CPU_TO_LE64(val);})
>+	({if (pol == 3) do {} while(0); else				\
>+	 put_unaligned((d64_t *)ha_ord(ha, pol), CPU_TO_LE64(val));})
> 
>-#define ha_size(pol)							\
>-        ((pol == 3) ? sizeof(hash3_t) : sizeof(hash4_t))
>+#define ha_size(pol) ((pol == 3) ? sizeof(hash3_t) : sizeof(hash4_t))
> 
>+/* entryN_t macroses */
> #define en_get_offset(en, pol)						\
>         ((pol == 3) ?							\
> 	 aal_get_le16(((entry3_t *)(en)), offset) :			\
>@@ -214,97 +220,108 @@ extern uint16_t cde40_overhead();
> 	 (void *)(&((cde403_t *)(pl)->body)->entry[pos]) :		\
> 	 (void *)(&((cde404_t *)(pl)->body)->entry[pos]))
> 
>-#else
>-#if defined(ENABLE_SHORT_KEYS)
>+#elif defined(ENABLE_SHORT_KEYS)
>+
>+/* objidN_t macroses.  */
> #define ob_get_locality(ob, pol)					\
>-	 LE64_TO_CPU(*((d64_t *)((objid3_t *)(ob))->locality))
>+	LE64_TO_CPU(get_unaligned((d64_t *)((objid3_t *)(ob))->locality))
> 
> #define ob_set_locality(ob, val, pol)					\
>-	 (*(d64_t *)((objid3_t *)(ob))->locality) = CPU_TO_LE64(val)
>+	put_unaligned((d64_t *)((objid3_t *)(ob))->locality,		\
>+		      CPU_TO_LE64(val))
> 
> #define ob_get_objectid(ob, pol)					\
>-	 LE64_TO_CPU(*((d64_t *)((objid3_t *)(ob))->objectid))
>+	LE64_TO_CPU(get_unaligned((d64_t *)((objid3_t *)(ob))->objectid))
> 
> #define ob_set_objectid(ob, val, pol)					\
>-	 (*(d64_t *)((objid3_t *)(ob))->objectid) = CPU_TO_LE64(val)
>+	put_unaligned((d64_t *)((objid3_t *)(ob))->objectid,		\
>+		      CPU_TO_LE64(val))
> 
> #define ob_get_ordering(ob, pol) (0)
> #define ob_set_ordering(ob, val, pol) do {} while(0)
> 
>-#define ob_size(pol)							\
>-        (sizeof(objid3_t))
>+#define ob_size(pol) (sizeof(objid3_t))
> 
>+/* hashN_t macroses.  */
> #define ha_get_objectid(ha, pol)					\
>-	 LE64_TO_CPU(*((d64_t *)((hash3_t *)(ha))->objectid))
>+	LE64_TO_CPU(get_unaligned((d64_t *)((hash3_t *)(ha))->objectid))
> 
> #define ha_set_objectid(ha, val, pol)					\
>-         (*(d64_t *)((hash3_t *)(ha))->objectid) = CPU_TO_LE64(val)
>+	put_unaligned((d64_t *)((hash3_t *)(ha))->objectid,		\
>+		      CPU_TO_LE64(val))
> 
> #define ha_get_offset(ha, pol)						\
>-         LE64_TO_CPU(*((d64_t *)((hash3_t *)(ha))->offset))
>-	 
>+	LE64_TO_CPU(get_unaligned((d64_t *)((hash3_t *)(ha))->offset))
>+
> #define ha_set_offset(ha, val, pol)					\
>-        (*(d64_t *)((hash3_t *)(ha))->offset) = CPU_TO_LE64(val)
>+	put_unaligned((d64_t *)((hash3_t *)(ha))->offset,		\
>+		      CPU_TO_LE64(val))
> 
> #define ha_get_ordering(ha, pol) (0)
> #define ha_set_ordering(ha, val, pol) do {} while (0)
> 
>-#define ha_size(pol)							\
>-        (sizeof(hash3_t))
>+#define ha_size(pol) (sizeof(hash3_t))
> 
>+/* entryN_t macroses */
> #define en_get_offset(en, pol)						\
> 	 aal_get_le16(((entry3_t *)(en)), offset)
> 
> #define en_set_offset(en, val, pol)					\
>          aal_set_le16(((entry3_t *)(en)), offset, val)
> 
>-#define en_size(pol)							\
>-        (sizeof(entry3_t))
>+#define en_size(pol) (sizeof(entry3_t))
> 
> #define cde_get_entry(pl, pos, pol)					\
> 	 ((void *)(&((cde403_t *)pl->body)->entry[pos]))
>-#else
>+
>+#elif defined(ENABLE_LARGE_KEYS)
>+/* objidN_t macroses. */
> #define ob_get_locality(ob, pol)					\
>-	 LE64_TO_CPU(*((d64_t *)((objid4_t *)(ob))->locality))
>+	LE64_TO_CPU(get_unaligned((d64_t *)((objid4_t *)(ob))->locality))
> 
> #define ob_set_locality(ob, val, pol)					\
>-	 (*(d64_t *)((objid4_t *)(ob))->locality) = CPU_TO_LE64(val)
>+	put_unaligned((d64_t *)((objid4_t *)(ob))->locality,		\
>+		      CPU_TO_LE64(val))
> 
> #define ob_get_objectid(ob, pol)					\
>-	 LE64_TO_CPU(*((d64_t *)((objid4_t *)(ob))->objectid))
>+	LE64_TO_CPU(get_unaligned((d64_t *)((objid4_t *)(ob))->objectid))
> 
> #define ob_set_objectid(ob, val, pol)					\
>-	 (*(d64_t *)((objid4_t *)(ob))->objectid) = CPU_TO_LE64(val)
>+	put_unaligned((d64_t *)((objid4_t *)(ob))->objectid,		\
>+		      CPU_TO_LE64(val))
> 
> #define ob_get_ordering(ob, pol)					\
>-	 LE64_TO_CPU(*((d64_t *)((objid4_t *)(ob))->ordering))
>+	LE64_TO_CPU(get_unaligned((d64_t *)((objid4_t *)(ob))->ordering))
> 
> #define ob_set_ordering(ob, val, pol)					\
>-	 (*(d64_t *)((objid4_t *)(ob))->ordering) = CPU_TO_LE64(val)
>+	put_unaligned((d64_t *)((objid4_t *)(ob))->ordering,		\
>+		      CPU_TO_LE64(val))
> 
>-#define ob_size(pol)							\
>-        (sizeof(objid4_t))
>+#define ob_size(pol) (sizeof(objid4_t))
> 
>+/* hashN_t macroses.  */
> #define ha_get_objectid(ha, pol)					\
>-	 LE64_TO_CPU(*((d64_t *)((hash4_t *)(ha))->objectid))
>+	LE64_TO_CPU(get_unaligned((d64_t *)((hash4_t *)(ha))->objectid))
> 
> #define ha_set_objectid(ha, val, pol)					\
>-         (*(d64_t *)((hash4_t *)(ha))->objectid) = CPU_TO_LE64(val)
>+	put_unaligned((d64_t *)((hash4_t *)(ha))->objectid,		\
>+		      CPU_TO_LE64(val))
> 
> #define ha_get_offset(ha, pol)						\
>-         LE64_TO_CPU(*((d64_t *)((hash4_t *)(ha))->offset))
>+	LE64_TO_CPU(get_unaligned((d64_t *)((hash4_t *)(ha))->offset))
> 	 
> #define ha_set_offset(ha, val, pol)					\
>-        (*(d64_t *)((hash4_t *)(ha))->offset) = CPU_TO_LE64(val)
>+	put_unaligned((d64_t *)((hash4_t *)(ha))->offset,		\
>+		      CPU_TO_LE64(val))
> 
> #define ha_get_ordering(ha, pol)					\
>-         LE64_TO_CPU(*((d64_t *)((hash4_t *)(ha))->ordering))
>+	LE64_TO_CPU(get_unaligned((d64_t *)((hash4_t *)(ha))->ordering))
> 
> #define ha_set_ordering(ha, val, pol)					\
>-        (*(d64_t *)((hash4_t *)(ha))->ordering) = CPU_TO_LE64(val)
>+	put_unaligned((d64_t *)((hash4_t *)(ha))->ordering,		\
>+		      CPU_TO_LE64(val))
> 
>-#define ha_size(pol)							\
>-        (sizeof(hash4_t))
>+#define ha_size(pol) (sizeof(hash4_t))
> 
> #define en_get_offset(en, pol)						\
> 	 aal_get_le16(((entry4_t *)(en)), offset)
>@@ -312,13 +329,11 @@ extern uint16_t cde40_overhead();
> #define en_set_offset(en, val, pol)					\
>          aal_set_le16(((entry4_t *)(en)), offset, val)
> 
>-#define en_size(pol)							\
>-        (sizeof(entry4_t))
>+#define en_size(pol) (sizeof(entry4_t))
> 
> #define cde_get_entry(pl, pos, pol)					\
> 	 ((void *)(&((cde404_t *)pl->body)->entry[pos]))
> #endif
>-#endif
> 
> #define cde_get_units(pl)						\
>         aal_get_le16(((cde40_t *)pl->body), units)
>diff -rup reiser4progs-1.0.3/plugin/key/key_large/key_large.h reiser4progs-1.0.3-1/plugin/key/key_large/key_large.h
>--- reiser4progs-1.0.3/plugin/key/key_large/key_large.h	2004-09-22 14:35:47.000000000 +0200
>+++ reiser4progs-1.0.3-1/plugin/key/key_large/key_large.h	2005-01-16 22:57:58.000000000 +0100
>@@ -120,14 +120,14 @@ extern uint64_t key_large_get_fobjectid(
> static inline uint64_t kl_get_el(const key_large_t *key,
> 				 key_large_field_t off)
> {
>-	return LE64_TO_CPU(key->el[off]);
>+	return LE64_TO_CPU(get_unaligned(key->el + off));
> }
> 
> static inline void kl_set_el(key_large_t *key,
> 			     key_large_field_t off,
> 			     uint64_t value)
> {
>-	key->el[off] = CPU_TO_LE64(value);
>+	put_unaligned(key->el + off, CPU_TO_LE64(value));
> }
> 
> static inline int kl_comp_el(void *k1, void *k2, int off) {
>diff -rup reiser4progs-1.0.3/plugin/key/key_short/key_short.h reiser4progs-1.0.3-1/plugin/key/key_short/key_short.h
>--- reiser4progs-1.0.3/plugin/key/key_short/key_short.h	2004-09-22 14:35:54.000000000 +0200
>+++ reiser4progs-1.0.3-1/plugin/key/key_short/key_short.h	2005-01-16 22:57:58.000000000 +0100
>@@ -108,14 +108,14 @@ extern uint64_t key_short_get_fobjectid(
> static inline uint64_t ks_get_el(const key_short_t *key,
> 				 key_short_field_t off)
> {
>-	return LE64_TO_CPU(key->el[off]);
>+	return LE64_TO_CPU(get_unaligned(key->el + off));
> }
> 
> static inline void ks_set_el(key_short_t *key,
> 			     key_short_field_t off,
> 			     uint64_t value)
> {
>-	key->el[off] = CPU_TO_LE64(value);
>+	put_unaligned(key->el + off, CPU_TO_LE64(value));
> }
> 
> static inline int ks_comp_el(void *k1, void *k2, int off) {
>diff -rup reiser4progs-1.0.3/plugin/sdext/sdext_plug/sdext_plug.h reiser4progs-1.0.3-1/plugin/sdext/sdext_plug/sdext_plug.h
>--- reiser4progs-1.0.3/plugin/sdext/sdext_plug/sdext_plug.h	2004-06-03 22:00:12.000000000 +0200
>+++ reiser4progs-1.0.3-1/plugin/sdext/sdext_plug/sdext_plug.h	2005-01-16 22:57:58.000000000 +0100
>@@ -27,14 +27,14 @@ typedef struct sdext_plug sdext_plug_t;
> 
> extern reiser4_core_t *sdext_plug_core;
> 
>-#define sdext_plug_get_count(ext)		aal_get_le16(ext, count)
>-#define sdext_plug_set_count(ext, val)		aal_set_le16(ext, count, val)
>+#define sdext_plug_get_count(ext)		aal_get_le16((ext), count)
>+#define sdext_plug_set_count(ext, val)		aal_set_le16((ext), count, (val))
> 
>-#define sdext_plug_get_member(ext, n)		aal_get_le16(&(ext->slot[n]), member)
>-#define sdext_plug_set_member(ext, n, val)	aal_set_le16(&(ext->slot[n]), member, val)
>+#define sdext_plug_get_member(ext, n)		aal_get_le16(&((ext)->slot[n]), member)
>+#define sdext_plug_set_member(ext, n, val)	aal_set_le16(&((ext)->slot[n]), member, (val))
> 
>-#define sdext_plug_get_pid(ext, n)		aal_get_le16(&(ext->slot[n]), plug)
>-#define sdext_plug_set_pid(ext, n, val)		aal_set_le16(&(ext->slot[n]), plug, val)
>+#define sdext_plug_get_pid(ext, n)		aal_get_le16(&((ext)->slot[n]), plug)
>+#define sdext_plug_set_pid(ext, n, val)		aal_set_le16(&((ext)->slot[n]), plug, (val))
> 
> extern uint32_t sdext_plug_length(stat_entity_t *stat, void *hint);
> 
>  
>


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

* Re: Reiser4fs and SPARC64?
  2005-02-17  9:38     ` mailinglists
@ 2005-02-17  9:44       ` Alex Zarochentsev
  0 siblings, 0 replies; 12+ messages in thread
From: Alex Zarochentsev @ 2005-02-17  9:44 UTC (permalink / raw)
  To: mailinglists@d-g-c.de; +Cc: Vitaly Fertman, reiserfs-list

On Thu, Feb 17, 2005 at 10:38:16AM +0100, mailinglists@d-g-c.de wrote:
> Hi Alex and Vitaly,
> so i will use:
> http://www.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.10/2.6.10-mm3/2.6.10-mm3.bz2
> against 2.6.10 and after that the 5 patches you two emailed me.

vitaly's patches are for user-land utilities.

> 
> should work?

How can I know it?  I have no sparc64 around.

-- 
Alex.

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

* Re: Reiser4fs and SPARC64?
  2005-02-16 14:24   ` Vitaly Fertman
  2005-02-17  9:38     ` mailinglists
@ 2005-02-21 12:23     ` mailinglists
  2005-02-21 13:44       ` Alex Zarochentsev
  2005-02-21 12:34     ` mailinglists
  2 siblings, 1 reply; 12+ messages in thread
From: mailinglists @ 2005-02-21 12:23 UTC (permalink / raw)
  To: Vitaly Fertman; +Cc: reiserfs-list

Vitaly Fertman wrote:

>On Wednesday 16 February 2005 17:09, Alex Zarochentsev wrote:
>  
>
>>On Wed, Feb 16, 2005 at 02:17:49PM +0100, mailinglists@d-g-c.de wrote:
>>    
>>
>>>Hi,
>>>
>>>i just wondered about reiser4fs working on SPARC64? I use Gentoo Sparc64
>>>and it is working fine with kernel 2.4.28. But is the Reiser4 code
>>>SPARC64 ready?
>>>      
>>>
>>It would be nice if you try it :) we have no reiser4/sparc64 reports yet.
>>
>>Reiser4 code is included into AKPM's -mm kernels.  mkfs and other utils are
>>in the ftp://ftp.namesys.com/pub/reiser4progs/
>>
>>At least 3 additional patches are needed for running reiser4 on sparc64.
>>They not yet included into -mm kernels.  I am attaching them to this
>>e-mail.
>>    
>>
>
>and at least these 2 patches needs to applied also.
>
>  
>
>------------------------------------------------------------------------
>
>diff -rup libaal-1.0.3/include/aal/Makefile.am libaal-1.0.3-1/include/aal/Makefile.am
>--- libaal-1.0.3/include/aal/Makefile.am	2004-01-08 15:49:40.000000000 +0100
>+++ libaal-1.0.3-1/include/aal/Makefile.am	2005-01-16 22:18:51.000000000 +0100
>@@ -2,4 +2,4 @@ aalincludedir		= $(includedir)/aal
> 
> aalinclude_HEADERS   	= libaal.h device.h file.h exception.h list.h malloc.h \
> 			  print.h string.h math.h endian.h debug.h bitops.h \
>-                          gauge.h block.h ui.h stream.h hash.h types.h
>+                          gauge.h block.h ui.h stream.h hash.h types.h unaligned.h
>diff -rup libaal-1.0.3/include/aal/Makefile.in libaal-1.0.3-1/include/aal/Makefile.in
>--- libaal-1.0.3/include/aal/Makefile.in	2004-12-06 19:04:14.000000000 +0100
>+++ libaal-1.0.3-1/include/aal/Makefile.in	2005-01-16 15:24:49.000000000 +0100
>@@ -146,7 +146,7 @@ aalincludedir = $(includedir)/aal
> 
> aalinclude_HEADERS = libaal.h device.h file.h exception.h list.h malloc.h \
> 			  print.h string.h math.h endian.h debug.h bitops.h \
>-                          gauge.h block.h ui.h stream.h hash.h types.h
>+                          gauge.h block.h ui.h stream.h hash.h types.h unaligned.h
> 
> subdir = include/aal
> ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
>diff -rup libaal-1.0.3/include/aal/endian.h libaal-1.0.3-1/include/aal/endian.h
>--- libaal-1.0.3/include/aal/endian.h	2003-07-27 10:55:29.000000000 +0200
>+++ libaal-1.0.3-1/include/aal/endian.h	2005-01-16 22:29:19.000000000 +0100
>@@ -75,8 +75,8 @@
> 
> #endif
> 
>-#define aal_get_leXX(xx, p, field)	(LE##xx##_TO_CPU ((p)->field))
>-#define aal_set_leXX(xx, p, field, val)	((p)->field = CPU_TO_LE##xx(val))
>+#define aal_get_leXX(xx, p, field)	(LE##xx##_TO_CPU (get_unaligned(&(p)->field)))
>+#define aal_set_leXX(xx, p, field, val)	put_unaligned(&(p)->field, CPU_TO_LE##xx(val))
> 
> #define aal_get_le16(p, field) 		aal_get_leXX(16, p, field)
> #define aal_set_le16(p, field, val) 	aal_set_leXX(16, p, field, val)
>diff -rup libaal-1.0.3/include/aal/libaal.h libaal-1.0.3-1/include/aal/libaal.h
>--- libaal-1.0.3/include/aal/libaal.h	2004-09-22 14:27:23.000000000 +0200
>+++ libaal-1.0.3-1/include/aal/libaal.h	2005-01-16 22:18:51.000000000 +0100
>@@ -26,6 +26,7 @@ extern "C" {
> #include "math.h"
> #include "bitops.h"
> #include "endian.h"
>+#include "unaligned.h"
> #include "debug.h"
> #include "gauge.h"
> #include "block.h"
>diff -rup libaal-1.0.3/include/aal/unaligned.h libaal-1.0.3-1/include/aal/unaligned.h
>--- libaal-1.0.3/include/aal/unaligned.h	2005-01-16 23:09:05.000000000 +0100
>+++ libaal-1.0.3-1/include/aal/unaligned.h	2005-01-16 22:18:51.000000000 +0100
>@@ -0,0 +1,26 @@
>+/* Copyright (C) 2001-2005 by Hans Reiser, licensing governed by libaal/COPYING.
>+         
>+   unaligned.h -- libaal unalignment declaration. */
>+
>+#ifdef HAVE_CONFIG_H
>+#  include <config.h>
>+#endif
>+
>+#ifndef AAL_UNALIGNED_H
>+#define AAL_UNALIGNED_H
>+
>+#define get_unaligned(ptr)				\
>+({							\
>+	__typeof__(*(ptr)) __tmp;			\
>+	aal_memcpy(&__tmp, (ptr), sizeof(*(ptr)));	\
>+	__tmp;						\
>+})
>+
>+#define put_unaligned(ptr, val)				\
>+({							\
>+	__typeof__(*(ptr)) __tmp = (val);		\
>+	aal_memcpy((ptr), &__tmp, sizeof(*(ptr)));	\
>+	(void)0;					\
>+})
>+
>+#endif
>  
>
>------------------------------------------------------------------------
>
>diff -rup reiser4progs-1.0.3/plugin/item/cde40/cde40.h reiser4progs-1.0.3-1/plugin/item/cde40/cde40.h
>--- reiser4progs-1.0.3/plugin/item/cde40/cde40.h	2004-06-30 01:42:33.000000000 +0200
>+++ reiser4progs-1.0.3-1/plugin/item/cde40/cde40.h	2005-01-16 22:57:58.000000000 +0100
>@@ -33,6 +33,7 @@ struct objid3 {
> 
> typedef struct objid3 objid3_t;
> 
>+
> struct hash3 {
> 	d8_t objectid[8];
> 	d8_t offset[8];
>@@ -130,71 +131,76 @@ extern uint32_t cde40_cut(reiser4_place_
> extern uint16_t cde40_overhead();
> 
> #if defined(ENABLE_SHORT_KEYS) && defined(ENABLE_LARGE_KEYS)
>+
>+/* objidN_t macroses. */
>+#define ob_loc(ob, pol)							\
>+	((pol == 3) ?							\
>+	 ((objid3_t *)(ob))->locality :					\
>+	 ((objid4_t *)(ob))->locality)
>+ 
> #define ob_get_locality(ob, pol)					\
>-        ((pol == 3) ?							\
>-	 LE64_TO_CPU(*((d64_t *)((objid3_t *)(ob))->locality)) :	\
>-	 LE64_TO_CPU(*((d64_t *)((objid4_t *)(ob))->locality)))
>+	LE64_TO_CPU(get_unaligned((d64_t *)ob_loc(ob, pol)))
> 
> #define ob_set_locality(ob, val, pol)					\
>-        ((pol == 3) ?							\
>-	 (*(d64_t *)((objid3_t *)(ob))->locality) = CPU_TO_LE64(val) :	\
>-	 (*(d64_t *)((objid4_t *)(ob))->locality) = CPU_TO_LE64(val))
>+	put_unaligned((d64_t *)ob_loc(ob, pol), CPU_TO_LE64(val))
>+
>+#define ob_oid(ob, pol)							\
>+	((pol == 3) ?							\
>+	 ((objid3_t *)(ob))->objectid :					\
>+	 ((objid4_t *)(ob))->objectid)
> 
> #define ob_get_objectid(ob, pol)					\
>-        ((pol == 3) ?							\
>-	 LE64_TO_CPU(*((d64_t *)((objid3_t *)(ob))->objectid)) :	\
>-	 LE64_TO_CPU(*((d64_t *)((objid4_t *)(ob))->objectid)))
>+	LE64_TO_CPU(get_unaligned((d64_t *)ob_oid(ob, pol)))
> 
> #define ob_set_objectid(ob, val, pol)					\
>-        ({if (pol == 3)							\
>-	 (*(d64_t *)((objid3_t *)(ob))->objectid) = CPU_TO_LE64(val);	\
>-         else								\
>-	 (*(d64_t *)((objid4_t *)(ob))->objectid) = CPU_TO_LE64(val);})
>+	put_unaligned((d64_t *)ob_oid(ob, pol), CPU_TO_LE64(val))
>+
>+#define ob_ord(ob, pol) ((pol == 3) ? 0 : ((objid4_t *)(ob))->ordering)
> 
> #define ob_get_ordering(ob, pol)					\
>-        ((pol == 3) ? 0 :						\
>-	 LE64_TO_CPU(*((d64_t *)((objid4_t *)(ob))->ordering)))
>+	LE64_TO_CPU(get_unaligned((d64_t *)ob_ord(ob, pol)))
> 
> #define ob_set_ordering(ob, val, pol)					\
>-        ({if (pol == 3) do {} while(0); else				\
>-	 (*(d64_t *)((objid4_t *)(ob))->ordering) = CPU_TO_LE64(val);})
>+	({if (pol == 3) do {} while(0); else				\
>+	 put_unaligned((d64_t *)ob_ord(ob, pol), CPU_TO_LE64(val));})
> 
>-#define ob_size(pol)							\
>-        ((pol == 3) ? sizeof(objid3_t) : sizeof(objid4_t))
>+#define ob_size(pol) ((pol == 3) ? sizeof(objid3_t) : sizeof(objid4_t))
>+
>+/* hashN_t macroses.  */
>+#define ha_oid(ha, pol)							\
>+	((pol == 3) ?							\
>+	 ((hash3_t *)(ha))->objectid :					\
>+	 ((hash4_t *)(ha))->objectid)
> 
> #define ha_get_objectid(ha, pol)					\
>-        ((pol == 3) ?							\
>-	 LE64_TO_CPU(*((d64_t *)((hash3_t *)(ha))->objectid)) :		\
>-	 LE64_TO_CPU(*((d64_t *)((hash4_t *)(ha))->objectid)))
>+	LE64_TO_CPU(get_unaligned((d64_t *)ha_oid(ha, pol)))
> 
> #define ha_set_objectid(ha, val, pol)					\
>-        ({if (pol == 3)							\
>-         (*(d64_t *)((hash3_t *)(ha))->objectid) = CPU_TO_LE64(val);	\
>-	 else								\
>-	 (*(d64_t *)((hash4_t *)(ha))->objectid) = CPU_TO_LE64(val);})
>+	put_unaligned((d64_t *)ha_oid(ha, pol),  CPU_TO_LE64(val))
>+
>+#define ha_off(ha, pol)							\
>+	((pol == 3) ?							\
>+	 ((hash3_t *)(ha))->offset :					\
>+	 ((hash4_t *)(ha))->offset)
> 
> #define ha_get_offset(ha, pol)						\
>-        ((pol == 3) ?							\
>-         LE64_TO_CPU(*((d64_t *)((hash3_t *)(ha))->offset)) :		\
>-	 LE64_TO_CPU(*((d64_t *)((hash4_t *)(ha))->offset)))
>-	 
>+	LE64_TO_CPU(get_unaligned((d64_t *)ha_off(ha, pol)))
>+
> #define ha_set_offset(ha, val, pol)					\
>-        ({if (pol == 3)							\
>-        (*(d64_t *)((hash3_t *)(ha))->offset) = CPU_TO_LE64(val);	\
>-        else								\
>-        (*(d64_t *)((hash4_t *)(ha))->offset) = CPU_TO_LE64(val);})
>+	put_unaligned((d64_t *)ha_off(ha, pol), CPU_TO_LE64(val))
>+
>+#define ha_ord(ha, pol) ((pol == 3) ? 0 : ((hash4_t *)(ha))->ordering)
> 
> #define ha_get_ordering(ha, pol)					\
>-        ((pol == 3) ? 0 :						\
>-	 LE64_TO_CPU(*((d64_t *)((hash4_t *)(ha))->ordering)))
>-	 
>+	LE64_TO_CPU(get_unaligned((d64_t *)ha_ord(ha, pol)))
>+
> #define ha_set_ordering(ha, val, pol)					\
>-        ({if (pol == 3) do {} while(0); else				\
>-        (*(d64_t *)((hash4_t *)(ha))->ordering) = CPU_TO_LE64(val);})
>+	({if (pol == 3) do {} while(0); else				\
>+	 put_unaligned((d64_t *)ha_ord(ha, pol), CPU_TO_LE64(val));})
> 
>-#define ha_size(pol)							\
>-        ((pol == 3) ? sizeof(hash3_t) : sizeof(hash4_t))
>+#define ha_size(pol) ((pol == 3) ? sizeof(hash3_t) : sizeof(hash4_t))
> 
>+/* entryN_t macroses */
> #define en_get_offset(en, pol)						\
>         ((pol == 3) ?							\
> 	 aal_get_le16(((entry3_t *)(en)), offset) :			\
>@@ -214,97 +220,108 @@ extern uint16_t cde40_overhead();
> 	 (void *)(&((cde403_t *)(pl)->body)->entry[pos]) :		\
> 	 (void *)(&((cde404_t *)(pl)->body)->entry[pos]))
> 
>-#else
>-#if defined(ENABLE_SHORT_KEYS)
>+#elif defined(ENABLE_SHORT_KEYS)
>+
>+/* objidN_t macroses.  */
> #define ob_get_locality(ob, pol)					\
>-	 LE64_TO_CPU(*((d64_t *)((objid3_t *)(ob))->locality))
>+	LE64_TO_CPU(get_unaligned((d64_t *)((objid3_t *)(ob))->locality))
> 
> #define ob_set_locality(ob, val, pol)					\
>-	 (*(d64_t *)((objid3_t *)(ob))->locality) = CPU_TO_LE64(val)
>+	put_unaligned((d64_t *)((objid3_t *)(ob))->locality,		\
>+		      CPU_TO_LE64(val))
> 
> #define ob_get_objectid(ob, pol)					\
>-	 LE64_TO_CPU(*((d64_t *)((objid3_t *)(ob))->objectid))
>+	LE64_TO_CPU(get_unaligned((d64_t *)((objid3_t *)(ob))->objectid))
> 
> #define ob_set_objectid(ob, val, pol)					\
>-	 (*(d64_t *)((objid3_t *)(ob))->objectid) = CPU_TO_LE64(val)
>+	put_unaligned((d64_t *)((objid3_t *)(ob))->objectid,		\
>+		      CPU_TO_LE64(val))
> 
> #define ob_get_ordering(ob, pol) (0)
> #define ob_set_ordering(ob, val, pol) do {} while(0)
> 
>-#define ob_size(pol)							\
>-        (sizeof(objid3_t))
>+#define ob_size(pol) (sizeof(objid3_t))
> 
>+/* hashN_t macroses.  */
> #define ha_get_objectid(ha, pol)					\
>-	 LE64_TO_CPU(*((d64_t *)((hash3_t *)(ha))->objectid))
>+	LE64_TO_CPU(get_unaligned((d64_t *)((hash3_t *)(ha))->objectid))
> 
> #define ha_set_objectid(ha, val, pol)					\
>-         (*(d64_t *)((hash3_t *)(ha))->objectid) = CPU_TO_LE64(val)
>+	put_unaligned((d64_t *)((hash3_t *)(ha))->objectid,		\
>+		      CPU_TO_LE64(val))
> 
> #define ha_get_offset(ha, pol)						\
>-         LE64_TO_CPU(*((d64_t *)((hash3_t *)(ha))->offset))
>-	 
>+	LE64_TO_CPU(get_unaligned((d64_t *)((hash3_t *)(ha))->offset))
>+
> #define ha_set_offset(ha, val, pol)					\
>-        (*(d64_t *)((hash3_t *)(ha))->offset) = CPU_TO_LE64(val)
>+	put_unaligned((d64_t *)((hash3_t *)(ha))->offset,		\
>+		      CPU_TO_LE64(val))
> 
> #define ha_get_ordering(ha, pol) (0)
> #define ha_set_ordering(ha, val, pol) do {} while (0)
> 
>-#define ha_size(pol)							\
>-        (sizeof(hash3_t))
>+#define ha_size(pol) (sizeof(hash3_t))
> 
>+/* entryN_t macroses */
> #define en_get_offset(en, pol)						\
> 	 aal_get_le16(((entry3_t *)(en)), offset)
> 
> #define en_set_offset(en, val, pol)					\
>          aal_set_le16(((entry3_t *)(en)), offset, val)
> 
>-#define en_size(pol)							\
>-        (sizeof(entry3_t))
>+#define en_size(pol) (sizeof(entry3_t))
> 
> #define cde_get_entry(pl, pos, pol)					\
> 	 ((void *)(&((cde403_t *)pl->body)->entry[pos]))
>-#else
>+
>+#elif defined(ENABLE_LARGE_KEYS)
>+/* objidN_t macroses. */
> #define ob_get_locality(ob, pol)					\
>-	 LE64_TO_CPU(*((d64_t *)((objid4_t *)(ob))->locality))
>+	LE64_TO_CPU(get_unaligned((d64_t *)((objid4_t *)(ob))->locality))
> 
> #define ob_set_locality(ob, val, pol)					\
>-	 (*(d64_t *)((objid4_t *)(ob))->locality) = CPU_TO_LE64(val)
>+	put_unaligned((d64_t *)((objid4_t *)(ob))->locality,		\
>+		      CPU_TO_LE64(val))
> 
> #define ob_get_objectid(ob, pol)					\
>-	 LE64_TO_CPU(*((d64_t *)((objid4_t *)(ob))->objectid))
>+	LE64_TO_CPU(get_unaligned((d64_t *)((objid4_t *)(ob))->objectid))
> 
> #define ob_set_objectid(ob, val, pol)					\
>-	 (*(d64_t *)((objid4_t *)(ob))->objectid) = CPU_TO_LE64(val)
>+	put_unaligned((d64_t *)((objid4_t *)(ob))->objectid,		\
>+		      CPU_TO_LE64(val))
> 
> #define ob_get_ordering(ob, pol)					\
>-	 LE64_TO_CPU(*((d64_t *)((objid4_t *)(ob))->ordering))
>+	LE64_TO_CPU(get_unaligned((d64_t *)((objid4_t *)(ob))->ordering))
> 
> #define ob_set_ordering(ob, val, pol)					\
>-	 (*(d64_t *)((objid4_t *)(ob))->ordering) = CPU_TO_LE64(val)
>+	put_unaligned((d64_t *)((objid4_t *)(ob))->ordering,		\
>+		      CPU_TO_LE64(val))
> 
>-#define ob_size(pol)							\
>-        (sizeof(objid4_t))
>+#define ob_size(pol) (sizeof(objid4_t))
> 
>+/* hashN_t macroses.  */
> #define ha_get_objectid(ha, pol)					\
>-	 LE64_TO_CPU(*((d64_t *)((hash4_t *)(ha))->objectid))
>+	LE64_TO_CPU(get_unaligned((d64_t *)((hash4_t *)(ha))->objectid))
> 
> #define ha_set_objectid(ha, val, pol)					\
>-         (*(d64_t *)((hash4_t *)(ha))->objectid) = CPU_TO_LE64(val)
>+	put_unaligned((d64_t *)((hash4_t *)(ha))->objectid,		\
>+		      CPU_TO_LE64(val))
> 
> #define ha_get_offset(ha, pol)						\
>-         LE64_TO_CPU(*((d64_t *)((hash4_t *)(ha))->offset))
>+	LE64_TO_CPU(get_unaligned((d64_t *)((hash4_t *)(ha))->offset))
> 	 
> #define ha_set_offset(ha, val, pol)					\
>-        (*(d64_t *)((hash4_t *)(ha))->offset) = CPU_TO_LE64(val)
>+	put_unaligned((d64_t *)((hash4_t *)(ha))->offset,		\
>+		      CPU_TO_LE64(val))
> 
> #define ha_get_ordering(ha, pol)					\
>-         LE64_TO_CPU(*((d64_t *)((hash4_t *)(ha))->ordering))
>+	LE64_TO_CPU(get_unaligned((d64_t *)((hash4_t *)(ha))->ordering))
> 
> #define ha_set_ordering(ha, val, pol)					\
>-        (*(d64_t *)((hash4_t *)(ha))->ordering) = CPU_TO_LE64(val)
>+	put_unaligned((d64_t *)((hash4_t *)(ha))->ordering,		\
>+		      CPU_TO_LE64(val))
> 
>-#define ha_size(pol)							\
>-        (sizeof(hash4_t))
>+#define ha_size(pol) (sizeof(hash4_t))
> 
> #define en_get_offset(en, pol)						\
> 	 aal_get_le16(((entry4_t *)(en)), offset)
>@@ -312,13 +329,11 @@ extern uint16_t cde40_overhead();
> #define en_set_offset(en, val, pol)					\
>          aal_set_le16(((entry4_t *)(en)), offset, val)
> 
>-#define en_size(pol)							\
>-        (sizeof(entry4_t))
>+#define en_size(pol) (sizeof(entry4_t))
> 
> #define cde_get_entry(pl, pos, pol)					\
> 	 ((void *)(&((cde404_t *)pl->body)->entry[pos]))
> #endif
>-#endif
> 
> #define cde_get_units(pl)						\
>         aal_get_le16(((cde40_t *)pl->body), units)
>diff -rup reiser4progs-1.0.3/plugin/key/key_large/key_large.h reiser4progs-1.0.3-1/plugin/key/key_large/key_large.h
>--- reiser4progs-1.0.3/plugin/key/key_large/key_large.h	2004-09-22 14:35:47.000000000 +0200
>+++ reiser4progs-1.0.3-1/plugin/key/key_large/key_large.h	2005-01-16 22:57:58.000000000 +0100
>@@ -120,14 +120,14 @@ extern uint64_t key_large_get_fobjectid(
> static inline uint64_t kl_get_el(const key_large_t *key,
> 				 key_large_field_t off)
> {
>-	return LE64_TO_CPU(key->el[off]);
>+	return LE64_TO_CPU(get_unaligned(key->el + off));
> }
> 
> static inline void kl_set_el(key_large_t *key,
> 			     key_large_field_t off,
> 			     uint64_t value)
> {
>-	key->el[off] = CPU_TO_LE64(value);
>+	put_unaligned(key->el + off, CPU_TO_LE64(value));
> }
> 
> static inline int kl_comp_el(void *k1, void *k2, int off) {
>diff -rup reiser4progs-1.0.3/plugin/key/key_short/key_short.h reiser4progs-1.0.3-1/plugin/key/key_short/key_short.h
>--- reiser4progs-1.0.3/plugin/key/key_short/key_short.h	2004-09-22 14:35:54.000000000 +0200
>+++ reiser4progs-1.0.3-1/plugin/key/key_short/key_short.h	2005-01-16 22:57:58.000000000 +0100
>@@ -108,14 +108,14 @@ extern uint64_t key_short_get_fobjectid(
> static inline uint64_t ks_get_el(const key_short_t *key,
> 				 key_short_field_t off)
> {
>-	return LE64_TO_CPU(key->el[off]);
>+	return LE64_TO_CPU(get_unaligned(key->el + off));
> }
> 
> static inline void ks_set_el(key_short_t *key,
> 			     key_short_field_t off,
> 			     uint64_t value)
> {
>-	key->el[off] = CPU_TO_LE64(value);
>+	put_unaligned(key->el + off, CPU_TO_LE64(value));
> }
> 
> static inline int ks_comp_el(void *k1, void *k2, int off) {
>diff -rup reiser4progs-1.0.3/plugin/sdext/sdext_plug/sdext_plug.h reiser4progs-1.0.3-1/plugin/sdext/sdext_plug/sdext_plug.h
>--- reiser4progs-1.0.3/plugin/sdext/sdext_plug/sdext_plug.h	2004-06-03 22:00:12.000000000 +0200
>+++ reiser4progs-1.0.3-1/plugin/sdext/sdext_plug/sdext_plug.h	2005-01-16 22:57:58.000000000 +0100
>@@ -27,14 +27,14 @@ typedef struct sdext_plug sdext_plug_t;
> 
> extern reiser4_core_t *sdext_plug_core;
> 
>-#define sdext_plug_get_count(ext)		aal_get_le16(ext, count)
>-#define sdext_plug_set_count(ext, val)		aal_set_le16(ext, count, val)
>+#define sdext_plug_get_count(ext)		aal_get_le16((ext), count)
>+#define sdext_plug_set_count(ext, val)		aal_set_le16((ext), count, (val))
> 
>-#define sdext_plug_get_member(ext, n)		aal_get_le16(&(ext->slot[n]), member)
>-#define sdext_plug_set_member(ext, n, val)	aal_set_le16(&(ext->slot[n]), member, val)
>+#define sdext_plug_get_member(ext, n)		aal_get_le16(&((ext)->slot[n]), member)
>+#define sdext_plug_set_member(ext, n, val)	aal_set_le16(&((ext)->slot[n]), member, (val))
> 
>-#define sdext_plug_get_pid(ext, n)		aal_get_le16(&(ext->slot[n]), plug)
>-#define sdext_plug_set_pid(ext, n, val)		aal_set_le16(&(ext->slot[n]), plug, val)
>+#define sdext_plug_get_pid(ext, n)		aal_get_le16(&((ext)->slot[n]), plug)
>+#define sdext_plug_set_pid(ext, n, val)		aal_set_le16(&((ext)->slot[n]), plug, (val))
> 
> extern uint32_t sdext_plug_length(stat_entity_t *stat, void *hint);
> 
>  
>

These 2 patches are no more needed for me and my sparc64 since you 
released 1.0.4?
Today i compiled my 2.6.10-mm3-reiser4 kernel and it works fine. Only 
problem left is LVM cause the kernel gets too big (>3.5MB) with LVM 
compiled in it. So my root filesystem will be no LVM...

greetz Florian

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

* Re: Reiser4fs and SPARC64?
  2005-02-16 14:24   ` Vitaly Fertman
  2005-02-17  9:38     ` mailinglists
  2005-02-21 12:23     ` mailinglists
@ 2005-02-21 12:34     ` mailinglists
  2005-02-21 13:17       ` Vitaly Fertman
  2 siblings, 1 reply; 12+ messages in thread
From: mailinglists @ 2005-02-21 12:34 UTC (permalink / raw)
  To: Vitaly Fertman; +Cc: reiserfs-list

Vitaly Fertman wrote:

>On Wednesday 16 February 2005 17:09, Alex Zarochentsev wrote:
>  
>
>>On Wed, Feb 16, 2005 at 02:17:49PM +0100, mailinglists@d-g-c.de wrote:
>>    
>>
>>>Hi,
>>>
>>>i just wondered about reiser4fs working on SPARC64? I use Gentoo Sparc64
>>>and it is working fine with kernel 2.4.28. But is the Reiser4 code
>>>SPARC64 ready?
>>>      
>>>
>>It would be nice if you try it :) we have no reiser4/sparc64 reports yet.
>>
>>Reiser4 code is included into AKPM's -mm kernels.  mkfs and other utils are
>>in the ftp://ftp.namesys.com/pub/reiser4progs/
>>
>>At least 3 additional patches are needed for running reiser4 on sparc64.
>>They not yet included into -mm kernels.  I am attaching them to this
>>e-mail.
>>    
>>
>
>and at least these 2 patches needs to applied also.
>
>  
>
>------------------------------------------------------------------------
>
>diff -rup libaal-1.0.3/include/aal/Makefile.am libaal-1.0.3-1/include/aal/Makefile.am
>--- libaal-1.0.3/include/aal/Makefile.am	2004-01-08 15:49:40.000000000 +0100
>+++ libaal-1.0.3-1/include/aal/Makefile.am	2005-01-16 22:18:51.000000000 +0100
>@@ -2,4 +2,4 @@ aalincludedir		= $(includedir)/aal
> 
> aalinclude_HEADERS   	= libaal.h device.h file.h exception.h list.h malloc.h \
> 			  print.h string.h math.h endian.h debug.h bitops.h \
>-                          gauge.h block.h ui.h stream.h hash.h types.h
>+                          gauge.h block.h ui.h stream.h hash.h types.h unaligned.h
>diff -rup libaal-1.0.3/include/aal/Makefile.in libaal-1.0.3-1/include/aal/Makefile.in
>--- libaal-1.0.3/include/aal/Makefile.in	2004-12-06 19:04:14.000000000 +0100
>+++ libaal-1.0.3-1/include/aal/Makefile.in	2005-01-16 15:24:49.000000000 +0100
>@@ -146,7 +146,7 @@ aalincludedir = $(includedir)/aal
> 
> aalinclude_HEADERS = libaal.h device.h file.h exception.h list.h malloc.h \
> 			  print.h string.h math.h endian.h debug.h bitops.h \
>-                          gauge.h block.h ui.h stream.h hash.h types.h
>+                          gauge.h block.h ui.h stream.h hash.h types.h unaligned.h
> 
> subdir = include/aal
> ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
>diff -rup libaal-1.0.3/include/aal/endian.h libaal-1.0.3-1/include/aal/endian.h
>--- libaal-1.0.3/include/aal/endian.h	2003-07-27 10:55:29.000000000 +0200
>+++ libaal-1.0.3-1/include/aal/endian.h	2005-01-16 22:29:19.000000000 +0100
>@@ -75,8 +75,8 @@
> 
> #endif
> 
>-#define aal_get_leXX(xx, p, field)	(LE##xx##_TO_CPU ((p)->field))
>-#define aal_set_leXX(xx, p, field, val)	((p)->field = CPU_TO_LE##xx(val))
>+#define aal_get_leXX(xx, p, field)	(LE##xx##_TO_CPU (get_unaligned(&(p)->field)))
>+#define aal_set_leXX(xx, p, field, val)	put_unaligned(&(p)->field, CPU_TO_LE##xx(val))
> 
> #define aal_get_le16(p, field) 		aal_get_leXX(16, p, field)
> #define aal_set_le16(p, field, val) 	aal_set_leXX(16, p, field, val)
>diff -rup libaal-1.0.3/include/aal/libaal.h libaal-1.0.3-1/include/aal/libaal.h
>--- libaal-1.0.3/include/aal/libaal.h	2004-09-22 14:27:23.000000000 +0200
>+++ libaal-1.0.3-1/include/aal/libaal.h	2005-01-16 22:18:51.000000000 +0100
>@@ -26,6 +26,7 @@ extern "C" {
> #include "math.h"
> #include "bitops.h"
> #include "endian.h"
>+#include "unaligned.h"
> #include "debug.h"
> #include "gauge.h"
> #include "block.h"
>diff -rup libaal-1.0.3/include/aal/unaligned.h libaal-1.0.3-1/include/aal/unaligned.h
>--- libaal-1.0.3/include/aal/unaligned.h	2005-01-16 23:09:05.000000000 +0100
>+++ libaal-1.0.3-1/include/aal/unaligned.h	2005-01-16 22:18:51.000000000 +0100
>@@ -0,0 +1,26 @@
>+/* Copyright (C) 2001-2005 by Hans Reiser, licensing governed by libaal/COPYING.
>+         
>+   unaligned.h -- libaal unalignment declaration. */
>+
>+#ifdef HAVE_CONFIG_H
>+#  include <config.h>
>+#endif
>+
>+#ifndef AAL_UNALIGNED_H
>+#define AAL_UNALIGNED_H
>+
>+#define get_unaligned(ptr)				\
>+({							\
>+	__typeof__(*(ptr)) __tmp;			\
>+	aal_memcpy(&__tmp, (ptr), sizeof(*(ptr)));	\
>+	__tmp;						\
>+})
>+
>+#define put_unaligned(ptr, val)				\
>+({							\
>+	__typeof__(*(ptr)) __tmp = (val);		\
>+	aal_memcpy((ptr), &__tmp, sizeof(*(ptr)));	\
>+	(void)0;					\
>+})
>+
>+#endif
>  
>
>------------------------------------------------------------------------
>
>diff -rup reiser4progs-1.0.3/plugin/item/cde40/cde40.h reiser4progs-1.0.3-1/plugin/item/cde40/cde40.h
>--- reiser4progs-1.0.3/plugin/item/cde40/cde40.h	2004-06-30 01:42:33.000000000 +0200
>+++ reiser4progs-1.0.3-1/plugin/item/cde40/cde40.h	2005-01-16 22:57:58.000000000 +0100
>@@ -33,6 +33,7 @@ struct objid3 {
> 
> typedef struct objid3 objid3_t;
> 
>+
> struct hash3 {
> 	d8_t objectid[8];
> 	d8_t offset[8];
>@@ -130,71 +131,76 @@ extern uint32_t cde40_cut(reiser4_place_
> extern uint16_t cde40_overhead();
> 
> #if defined(ENABLE_SHORT_KEYS) && defined(ENABLE_LARGE_KEYS)
>+
>+/* objidN_t macroses. */
>+#define ob_loc(ob, pol)							\
>+	((pol == 3) ?							\
>+	 ((objid3_t *)(ob))->locality :					\
>+	 ((objid4_t *)(ob))->locality)
>+ 
> #define ob_get_locality(ob, pol)					\
>-        ((pol == 3) ?							\
>-	 LE64_TO_CPU(*((d64_t *)((objid3_t *)(ob))->locality)) :	\
>-	 LE64_TO_CPU(*((d64_t *)((objid4_t *)(ob))->locality)))
>+	LE64_TO_CPU(get_unaligned((d64_t *)ob_loc(ob, pol)))
> 
> #define ob_set_locality(ob, val, pol)					\
>-        ((pol == 3) ?							\
>-	 (*(d64_t *)((objid3_t *)(ob))->locality) = CPU_TO_LE64(val) :	\
>-	 (*(d64_t *)((objid4_t *)(ob))->locality) = CPU_TO_LE64(val))
>+	put_unaligned((d64_t *)ob_loc(ob, pol), CPU_TO_LE64(val))
>+
>+#define ob_oid(ob, pol)							\
>+	((pol == 3) ?							\
>+	 ((objid3_t *)(ob))->objectid :					\
>+	 ((objid4_t *)(ob))->objectid)
> 
> #define ob_get_objectid(ob, pol)					\
>-        ((pol == 3) ?							\
>-	 LE64_TO_CPU(*((d64_t *)((objid3_t *)(ob))->objectid)) :	\
>-	 LE64_TO_CPU(*((d64_t *)((objid4_t *)(ob))->objectid)))
>+	LE64_TO_CPU(get_unaligned((d64_t *)ob_oid(ob, pol)))
> 
> #define ob_set_objectid(ob, val, pol)					\
>-        ({if (pol == 3)							\
>-	 (*(d64_t *)((objid3_t *)(ob))->objectid) = CPU_TO_LE64(val);	\
>-         else								\
>-	 (*(d64_t *)((objid4_t *)(ob))->objectid) = CPU_TO_LE64(val);})
>+	put_unaligned((d64_t *)ob_oid(ob, pol), CPU_TO_LE64(val))
>+
>+#define ob_ord(ob, pol) ((pol == 3) ? 0 : ((objid4_t *)(ob))->ordering)
> 
> #define ob_get_ordering(ob, pol)					\
>-        ((pol == 3) ? 0 :						\
>-	 LE64_TO_CPU(*((d64_t *)((objid4_t *)(ob))->ordering)))
>+	LE64_TO_CPU(get_unaligned((d64_t *)ob_ord(ob, pol)))
> 
> #define ob_set_ordering(ob, val, pol)					\
>-        ({if (pol == 3) do {} while(0); else				\
>-	 (*(d64_t *)((objid4_t *)(ob))->ordering) = CPU_TO_LE64(val);})
>+	({if (pol == 3) do {} while(0); else				\
>+	 put_unaligned((d64_t *)ob_ord(ob, pol), CPU_TO_LE64(val));})
> 
>-#define ob_size(pol)							\
>-        ((pol == 3) ? sizeof(objid3_t) : sizeof(objid4_t))
>+#define ob_size(pol) ((pol == 3) ? sizeof(objid3_t) : sizeof(objid4_t))
>+
>+/* hashN_t macroses.  */
>+#define ha_oid(ha, pol)							\
>+	((pol == 3) ?							\
>+	 ((hash3_t *)(ha))->objectid :					\
>+	 ((hash4_t *)(ha))->objectid)
> 
> #define ha_get_objectid(ha, pol)					\
>-        ((pol == 3) ?							\
>-	 LE64_TO_CPU(*((d64_t *)((hash3_t *)(ha))->objectid)) :		\
>-	 LE64_TO_CPU(*((d64_t *)((hash4_t *)(ha))->objectid)))
>+	LE64_TO_CPU(get_unaligned((d64_t *)ha_oid(ha, pol)))
> 
> #define ha_set_objectid(ha, val, pol)					\
>-        ({if (pol == 3)							\
>-         (*(d64_t *)((hash3_t *)(ha))->objectid) = CPU_TO_LE64(val);	\
>-	 else								\
>-	 (*(d64_t *)((hash4_t *)(ha))->objectid) = CPU_TO_LE64(val);})
>+	put_unaligned((d64_t *)ha_oid(ha, pol),  CPU_TO_LE64(val))
>+
>+#define ha_off(ha, pol)							\
>+	((pol == 3) ?							\
>+	 ((hash3_t *)(ha))->offset :					\
>+	 ((hash4_t *)(ha))->offset)
> 
> #define ha_get_offset(ha, pol)						\
>-        ((pol == 3) ?							\
>-         LE64_TO_CPU(*((d64_t *)((hash3_t *)(ha))->offset)) :		\
>-	 LE64_TO_CPU(*((d64_t *)((hash4_t *)(ha))->offset)))
>-	 
>+	LE64_TO_CPU(get_unaligned((d64_t *)ha_off(ha, pol)))
>+
> #define ha_set_offset(ha, val, pol)					\
>-        ({if (pol == 3)							\
>-        (*(d64_t *)((hash3_t *)(ha))->offset) = CPU_TO_LE64(val);	\
>-        else								\
>-        (*(d64_t *)((hash4_t *)(ha))->offset) = CPU_TO_LE64(val);})
>+	put_unaligned((d64_t *)ha_off(ha, pol), CPU_TO_LE64(val))
>+
>+#define ha_ord(ha, pol) ((pol == 3) ? 0 : ((hash4_t *)(ha))->ordering)
> 
> #define ha_get_ordering(ha, pol)					\
>-        ((pol == 3) ? 0 :						\
>-	 LE64_TO_CPU(*((d64_t *)((hash4_t *)(ha))->ordering)))
>-	 
>+	LE64_TO_CPU(get_unaligned((d64_t *)ha_ord(ha, pol)))
>+
> #define ha_set_ordering(ha, val, pol)					\
>-        ({if (pol == 3) do {} while(0); else				\
>-        (*(d64_t *)((hash4_t *)(ha))->ordering) = CPU_TO_LE64(val);})
>+	({if (pol == 3) do {} while(0); else				\
>+	 put_unaligned((d64_t *)ha_ord(ha, pol), CPU_TO_LE64(val));})
> 
>-#define ha_size(pol)							\
>-        ((pol == 3) ? sizeof(hash3_t) : sizeof(hash4_t))
>+#define ha_size(pol) ((pol == 3) ? sizeof(hash3_t) : sizeof(hash4_t))
> 
>+/* entryN_t macroses */
> #define en_get_offset(en, pol)						\
>         ((pol == 3) ?							\
> 	 aal_get_le16(((entry3_t *)(en)), offset) :			\
>@@ -214,97 +220,108 @@ extern uint16_t cde40_overhead();
> 	 (void *)(&((cde403_t *)(pl)->body)->entry[pos]) :		\
> 	 (void *)(&((cde404_t *)(pl)->body)->entry[pos]))
> 
>-#else
>-#if defined(ENABLE_SHORT_KEYS)
>+#elif defined(ENABLE_SHORT_KEYS)
>+
>+/* objidN_t macroses.  */
> #define ob_get_locality(ob, pol)					\
>-	 LE64_TO_CPU(*((d64_t *)((objid3_t *)(ob))->locality))
>+	LE64_TO_CPU(get_unaligned((d64_t *)((objid3_t *)(ob))->locality))
> 
> #define ob_set_locality(ob, val, pol)					\
>-	 (*(d64_t *)((objid3_t *)(ob))->locality) = CPU_TO_LE64(val)
>+	put_unaligned((d64_t *)((objid3_t *)(ob))->locality,		\
>+		      CPU_TO_LE64(val))
> 
> #define ob_get_objectid(ob, pol)					\
>-	 LE64_TO_CPU(*((d64_t *)((objid3_t *)(ob))->objectid))
>+	LE64_TO_CPU(get_unaligned((d64_t *)((objid3_t *)(ob))->objectid))
> 
> #define ob_set_objectid(ob, val, pol)					\
>-	 (*(d64_t *)((objid3_t *)(ob))->objectid) = CPU_TO_LE64(val)
>+	put_unaligned((d64_t *)((objid3_t *)(ob))->objectid,		\
>+		      CPU_TO_LE64(val))
> 
> #define ob_get_ordering(ob, pol) (0)
> #define ob_set_ordering(ob, val, pol) do {} while(0)
> 
>-#define ob_size(pol)							\
>-        (sizeof(objid3_t))
>+#define ob_size(pol) (sizeof(objid3_t))
> 
>+/* hashN_t macroses.  */
> #define ha_get_objectid(ha, pol)					\
>-	 LE64_TO_CPU(*((d64_t *)((hash3_t *)(ha))->objectid))
>+	LE64_TO_CPU(get_unaligned((d64_t *)((hash3_t *)(ha))->objectid))
> 
> #define ha_set_objectid(ha, val, pol)					\
>-         (*(d64_t *)((hash3_t *)(ha))->objectid) = CPU_TO_LE64(val)
>+	put_unaligned((d64_t *)((hash3_t *)(ha))->objectid,		\
>+		      CPU_TO_LE64(val))
> 
> #define ha_get_offset(ha, pol)						\
>-         LE64_TO_CPU(*((d64_t *)((hash3_t *)(ha))->offset))
>-	 
>+	LE64_TO_CPU(get_unaligned((d64_t *)((hash3_t *)(ha))->offset))
>+
> #define ha_set_offset(ha, val, pol)					\
>-        (*(d64_t *)((hash3_t *)(ha))->offset) = CPU_TO_LE64(val)
>+	put_unaligned((d64_t *)((hash3_t *)(ha))->offset,		\
>+		      CPU_TO_LE64(val))
> 
> #define ha_get_ordering(ha, pol) (0)
> #define ha_set_ordering(ha, val, pol) do {} while (0)
> 
>-#define ha_size(pol)							\
>-        (sizeof(hash3_t))
>+#define ha_size(pol) (sizeof(hash3_t))
> 
>+/* entryN_t macroses */
> #define en_get_offset(en, pol)						\
> 	 aal_get_le16(((entry3_t *)(en)), offset)
> 
> #define en_set_offset(en, val, pol)					\
>          aal_set_le16(((entry3_t *)(en)), offset, val)
> 
>-#define en_size(pol)							\
>-        (sizeof(entry3_t))
>+#define en_size(pol) (sizeof(entry3_t))
> 
> #define cde_get_entry(pl, pos, pol)					\
> 	 ((void *)(&((cde403_t *)pl->body)->entry[pos]))
>-#else
>+
>+#elif defined(ENABLE_LARGE_KEYS)
>+/* objidN_t macroses. */
> #define ob_get_locality(ob, pol)					\
>-	 LE64_TO_CPU(*((d64_t *)((objid4_t *)(ob))->locality))
>+	LE64_TO_CPU(get_unaligned((d64_t *)((objid4_t *)(ob))->locality))
> 
> #define ob_set_locality(ob, val, pol)					\
>-	 (*(d64_t *)((objid4_t *)(ob))->locality) = CPU_TO_LE64(val)
>+	put_unaligned((d64_t *)((objid4_t *)(ob))->locality,		\
>+		      CPU_TO_LE64(val))
> 
> #define ob_get_objectid(ob, pol)					\
>-	 LE64_TO_CPU(*((d64_t *)((objid4_t *)(ob))->objectid))
>+	LE64_TO_CPU(get_unaligned((d64_t *)((objid4_t *)(ob))->objectid))
> 
> #define ob_set_objectid(ob, val, pol)					\
>-	 (*(d64_t *)((objid4_t *)(ob))->objectid) = CPU_TO_LE64(val)
>+	put_unaligned((d64_t *)((objid4_t *)(ob))->objectid,		\
>+		      CPU_TO_LE64(val))
> 
> #define ob_get_ordering(ob, pol)					\
>-	 LE64_TO_CPU(*((d64_t *)((objid4_t *)(ob))->ordering))
>+	LE64_TO_CPU(get_unaligned((d64_t *)((objid4_t *)(ob))->ordering))
> 
> #define ob_set_ordering(ob, val, pol)					\
>-	 (*(d64_t *)((objid4_t *)(ob))->ordering) = CPU_TO_LE64(val)
>+	put_unaligned((d64_t *)((objid4_t *)(ob))->ordering,		\
>+		      CPU_TO_LE64(val))
> 
>-#define ob_size(pol)							\
>-        (sizeof(objid4_t))
>+#define ob_size(pol) (sizeof(objid4_t))
> 
>+/* hashN_t macroses.  */
> #define ha_get_objectid(ha, pol)					\
>-	 LE64_TO_CPU(*((d64_t *)((hash4_t *)(ha))->objectid))
>+	LE64_TO_CPU(get_unaligned((d64_t *)((hash4_t *)(ha))->objectid))
> 
> #define ha_set_objectid(ha, val, pol)					\
>-         (*(d64_t *)((hash4_t *)(ha))->objectid) = CPU_TO_LE64(val)
>+	put_unaligned((d64_t *)((hash4_t *)(ha))->objectid,		\
>+		      CPU_TO_LE64(val))
> 
> #define ha_get_offset(ha, pol)						\
>-         LE64_TO_CPU(*((d64_t *)((hash4_t *)(ha))->offset))
>+	LE64_TO_CPU(get_unaligned((d64_t *)((hash4_t *)(ha))->offset))
> 	 
> #define ha_set_offset(ha, val, pol)					\
>-        (*(d64_t *)((hash4_t *)(ha))->offset) = CPU_TO_LE64(val)
>+	put_unaligned((d64_t *)((hash4_t *)(ha))->offset,		\
>+		      CPU_TO_LE64(val))
> 
> #define ha_get_ordering(ha, pol)					\
>-         LE64_TO_CPU(*((d64_t *)((hash4_t *)(ha))->ordering))
>+	LE64_TO_CPU(get_unaligned((d64_t *)((hash4_t *)(ha))->ordering))
> 
> #define ha_set_ordering(ha, val, pol)					\
>-        (*(d64_t *)((hash4_t *)(ha))->ordering) = CPU_TO_LE64(val)
>+	put_unaligned((d64_t *)((hash4_t *)(ha))->ordering,		\
>+		      CPU_TO_LE64(val))
> 
>-#define ha_size(pol)							\
>-        (sizeof(hash4_t))
>+#define ha_size(pol) (sizeof(hash4_t))
> 
> #define en_get_offset(en, pol)						\
> 	 aal_get_le16(((entry4_t *)(en)), offset)
>@@ -312,13 +329,11 @@ extern uint16_t cde40_overhead();
> #define en_set_offset(en, val, pol)					\
>          aal_set_le16(((entry4_t *)(en)), offset, val)
> 
>-#define en_size(pol)							\
>-        (sizeof(entry4_t))
>+#define en_size(pol) (sizeof(entry4_t))
> 
> #define cde_get_entry(pl, pos, pol)					\
> 	 ((void *)(&((cde404_t *)pl->body)->entry[pos]))
> #endif
>-#endif
> 
> #define cde_get_units(pl)						\
>         aal_get_le16(((cde40_t *)pl->body), units)
>diff -rup reiser4progs-1.0.3/plugin/key/key_large/key_large.h reiser4progs-1.0.3-1/plugin/key/key_large/key_large.h
>--- reiser4progs-1.0.3/plugin/key/key_large/key_large.h	2004-09-22 14:35:47.000000000 +0200
>+++ reiser4progs-1.0.3-1/plugin/key/key_large/key_large.h	2005-01-16 22:57:58.000000000 +0100
>@@ -120,14 +120,14 @@ extern uint64_t key_large_get_fobjectid(
> static inline uint64_t kl_get_el(const key_large_t *key,
> 				 key_large_field_t off)
> {
>-	return LE64_TO_CPU(key->el[off]);
>+	return LE64_TO_CPU(get_unaligned(key->el + off));
> }
> 
> static inline void kl_set_el(key_large_t *key,
> 			     key_large_field_t off,
> 			     uint64_t value)
> {
>-	key->el[off] = CPU_TO_LE64(value);
>+	put_unaligned(key->el + off, CPU_TO_LE64(value));
> }
> 
> static inline int kl_comp_el(void *k1, void *k2, int off) {
>diff -rup reiser4progs-1.0.3/plugin/key/key_short/key_short.h reiser4progs-1.0.3-1/plugin/key/key_short/key_short.h
>--- reiser4progs-1.0.3/plugin/key/key_short/key_short.h	2004-09-22 14:35:54.000000000 +0200
>+++ reiser4progs-1.0.3-1/plugin/key/key_short/key_short.h	2005-01-16 22:57:58.000000000 +0100
>@@ -108,14 +108,14 @@ extern uint64_t key_short_get_fobjectid(
> static inline uint64_t ks_get_el(const key_short_t *key,
> 				 key_short_field_t off)
> {
>-	return LE64_TO_CPU(key->el[off]);
>+	return LE64_TO_CPU(get_unaligned(key->el + off));
> }
> 
> static inline void ks_set_el(key_short_t *key,
> 			     key_short_field_t off,
> 			     uint64_t value)
> {
>-	key->el[off] = CPU_TO_LE64(value);
>+	put_unaligned(key->el + off, CPU_TO_LE64(value));
> }
> 
> static inline int ks_comp_el(void *k1, void *k2, int off) {
>diff -rup reiser4progs-1.0.3/plugin/sdext/sdext_plug/sdext_plug.h reiser4progs-1.0.3-1/plugin/sdext/sdext_plug/sdext_plug.h
>--- reiser4progs-1.0.3/plugin/sdext/sdext_plug/sdext_plug.h	2004-06-03 22:00:12.000000000 +0200
>+++ reiser4progs-1.0.3-1/plugin/sdext/sdext_plug/sdext_plug.h	2005-01-16 22:57:58.000000000 +0100
>@@ -27,14 +27,14 @@ typedef struct sdext_plug sdext_plug_t;
> 
> extern reiser4_core_t *sdext_plug_core;
> 
>-#define sdext_plug_get_count(ext)		aal_get_le16(ext, count)
>-#define sdext_plug_set_count(ext, val)		aal_set_le16(ext, count, val)
>+#define sdext_plug_get_count(ext)		aal_get_le16((ext), count)
>+#define sdext_plug_set_count(ext, val)		aal_set_le16((ext), count, (val))
> 
>-#define sdext_plug_get_member(ext, n)		aal_get_le16(&(ext->slot[n]), member)
>-#define sdext_plug_set_member(ext, n, val)	aal_set_le16(&(ext->slot[n]), member, val)
>+#define sdext_plug_get_member(ext, n)		aal_get_le16(&((ext)->slot[n]), member)
>+#define sdext_plug_set_member(ext, n, val)	aal_set_le16(&((ext)->slot[n]), member, (val))
> 
>-#define sdext_plug_get_pid(ext, n)		aal_get_le16(&(ext->slot[n]), plug)
>-#define sdext_plug_set_pid(ext, n, val)		aal_set_le16(&(ext->slot[n]), plug, val)
>+#define sdext_plug_get_pid(ext, n)		aal_get_le16(&((ext)->slot[n]), plug)
>+#define sdext_plug_set_pid(ext, n, val)		aal_set_le16(&((ext)->slot[n]), plug, (val))
> 
> extern uint32_t sdext_plug_length(stat_entity_t *stat, void *hint);
> 
>  
>
libaal-1.0.4.tar.gz compiled fine without any patches.
but reiser4progs-1.0.4 did not (also no patches!):

creating libaux-minimal.la
(cd .libs && rm -f libaux-minimal.la && ln -s ../libaux-minimal.la 
libaux-minimal.la)
make[2]: Leaving directory `/usr/src/reiser4progs-1.0.4/libaux'
Making all in plugin
make[2]: Entering directory `/usr/src/reiser4progs-1.0.4/plugin'
Making all in format
make[3]: Entering directory `/usr/src/reiser4progs-1.0.4/plugin/format'
Making all in format40
make[4]: Entering directory 
`/usr/src/reiser4progs-1.0.4/plugin/format/format40'
if /bin/sh ../../../libtool --mode=compile gcc -DHAVE_CONFIG_H -I. -I. 
-I../../.. -I../../../include   -D_REENTRANT -D_FILE_OFFSET_BITS=64 
-DENABLE_SYMLINKS -DENABLE_SPECIAL -DENABLE_R5_HASH -DENABLE_FNV1_HASH 
-DENABLE_RUPASOV_HASH -DENABLE_TEA_HASH -DENABLE_DEG_HASH 
-DENABLE_LARGE_KEYS -DENABLE_SHORT_KEYS -DENABLE_DOT_O_FIBRE 
-DENABLE_EXT_1_FIBRE -DENABLE_EXT_3_FIBRE -DENABLE_LEXIC_FIBRE -O3 -W 
-Wall -Wuninitialized -Wno-unused-parameter -Wredundant-decls -MT 
libformat40_static_la-format40.lo -MD -MP -MF 
".deps/libformat40_static_la-format40.Tpo" \
  -c -o libformat40_static_la-format40.lo `test -f 'format40.c' || echo 
'./'`format40.c; \
then mv -f ".deps/libformat40_static_la-format40.Tpo" 
".deps/libformat40_static_la-format40.Plo"; \
else rm -f ".deps/libformat40_static_la-format40.Tpo"; exit 1; \
fi
mkdir .libs
 gcc -DHAVE_CONFIG_H -I. -I. -I../../.. -I../../../include -D_REENTRANT 
-D_FILE_OFFSET_BITS=64 -DENABLE_SYMLINKS -DENABLE_SPECIAL 
-DENABLE_R5_HASH -DENABLE_FNV1_HASH -DENABLE_RUPASOV_HASH 
-DENABLE_TEA_HASH -DENABLE_DEG_HASH -DENABLE_LARGE_KEYS 
-DENABLE_SHORT_KEYS -DENABLE_DOT_O_FIBRE -DENABLE_EXT_1_FIBRE 
-DENABLE_EXT_3_FIBRE -DENABLE_LEXIC_FIBRE -O3 -W -Wall -Wuninitialized 
-Wno-unused-parameter -Wredundant-decls -MT 
libformat40_static_la-format40.lo -MD -MP -MF 
.deps/libformat40_static_la-format40.Tpo -c format40.c  -fPIC -DPIC -o 
.libs/libformat40_static_la-format40.o
format40.c: In function `format40_create':
format40.c:255: error: invalid type argument of `unary *'
format40.c:255: warning: type defaults to `int' in declaration of `__tmp'
format40.c:255: warning: initialization makes integer from pointer 
without a cast
format40.c:255: error: invalid type argument of `unary *'
format40.c:260: error: invalid type argument of `unary *'
format40.c:260: warning: type defaults to `int' in declaration of `__tmp'
format40.c:260: warning: initialization makes integer from pointer 
without a cast
format40.c:260: error: invalid type argument of `unary *'
format40.c:260: warning: passing arg 1 of `aal_memcpy' makes pointer 
from integer without a cast
format40.c:263: error: invalid type argument of `unary *'
format40.c:263: warning: type defaults to `int' in declaration of `__tmp'
format40.c:263: warning: initialization makes integer from pointer 
without a cast
format40.c:263: error: invalid type argument of `unary *'
format40.c:263: warning: passing arg 1 of `aal_memcpy' makes pointer 
from integer without a cast
format40.c:268: error: invalid type argument of `unary *'
format40.c:268: warning: type defaults to `int' in declaration of `__tmp'
format40.c:268: warning: initialization makes integer from pointer 
without a cast
format40.c:268: error: invalid type argument of `unary *'
format40.c:268: warning: passing arg 1 of `aal_memcpy' makes pointer 
from integer without a cast
format40.c:271: error: invalid type argument of `unary *'
format40.c:271: warning: type defaults to `int' in declaration of `__tmp'
format40.c:271: warning: initialization makes integer from pointer 
without a cast
format40.c:271: error: invalid type argument of `unary *'
format40.c:271: warning: passing arg 1 of `aal_memcpy' makes pointer 
from integer without a cast
format40.c:276: error: invalid type argument of `unary *'
format40.c:276: warning: type defaults to `int' in declaration of `__tmp'
format40.c:276: warning: initialization makes integer from pointer 
without a cast
format40.c:276: error: invalid type argument of `unary *'
format40.c:276: warning: passing arg 1 of `aal_memcpy' makes pointer 
from integer without a cast
format40.c:280: error: invalid type argument of `unary *'
format40.c:280: warning: type defaults to `int' in declaration of `__tmp'
format40.c:280: warning: initialization makes integer from pointer 
without a cast
format40.c:280: error: invalid type argument of `unary *'
format40.c:280: warning: passing arg 1 of `aal_memcpy' makes pointer 
from integer without a cast
format40.c: In function `format40_set_root':
format40.c:380: error: invalid type argument of `unary *'
format40.c:380: warning: type defaults to `int' in declaration of `__tmp'
format40.c:380: warning: initialization makes integer from pointer 
without a cast
format40.c:380: error: invalid type argument of `unary *'
format40.c:380: warning: passing arg 1 of `aal_memcpy' makes pointer 
from integer without a cast
format40.c: In function `format40_set_len':
format40.c:387: error: invalid type argument of `unary *'
format40.c:387: warning: type defaults to `int' in declaration of `__tmp'
format40.c:387: warning: initialization makes integer from pointer 
without a cast
format40.c:387: error: invalid type argument of `unary *'
format40.c:387: warning: passing arg 1 of `aal_memcpy' makes pointer 
from integer without a cast
format40.c: In function `format40_set_free':
format40.c:397: error: invalid type argument of `unary *'
format40.c:397: warning: type defaults to `int' in declaration of `__tmp'
format40.c:397: warning: initialization makes integer from pointer 
without a cast
format40.c:397: error: invalid type argument of `unary *'
format40.c:397: warning: passing arg 1 of `aal_memcpy' makes pointer 
from integer without a cast
format40.c: In function `format40_set_height':
format40.c:404: error: invalid type argument of `unary *'
format40.c:404: warning: type defaults to `int' in declaration of `__tmp'
format40.c:404: warning: initialization makes integer from pointer 
without a cast
format40.c:404: error: invalid type argument of `unary *'
format40.c:404: warning: passing arg 1 of `aal_memcpy' makes pointer 
from integer without a cast
format40.c: In function `format40_set_stamp':
format40.c:411: error: invalid type argument of `unary *'
format40.c:411: warning: type defaults to `int' in declaration of `__tmp'
format40.c:411: warning: initialization makes integer from pointer 
without a cast
format40.c:411: error: invalid type argument of `unary *'
format40.c:411: warning: passing arg 1 of `aal_memcpy' makes pointer 
from integer without a cast
format40.c: In function `format40_set_policy':
format40.c:418: error: invalid type argument of `unary *'
format40.c:418: warning: type defaults to `int' in declaration of `__tmp'
format40.c:418: warning: initialization makes integer from pointer 
without a cast
format40.c:418: error: invalid type argument of `unary *'
format40.c:418: warning: passing arg 1 of `aal_memcpy' makes pointer 
from integer without a cast
format40.c: In function `format40_set_key':
format40.c:430: error: invalid type argument of `unary *'
format40.c:430: warning: type defaults to `int' in declaration of `__tmp'
format40.c:430: warning: initialization makes integer from pointer 
without a cast
format40.c:430: error: invalid type argument of `unary *'
format40.c:430: warning: passing arg 1 of `aal_memcpy' makes pointer 
from integer without a cast
make[4]: *** [libformat40_static_la-format40.lo] Error 1
make[4]: Leaving directory 
`/usr/src/reiser4progs-1.0.4/plugin/format/format40'
make[3]: *** [all-recursive] Error 1
make[3]: Leaving directory `/usr/src/reiser4progs-1.0.4/plugin/format'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/usr/src/reiser4progs-1.0.4/plugin'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/usr/src/reiser4progs-1.0.4'
make: *** [all] Error 2


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

* Re: Reiser4fs and SPARC64?
  2005-02-21 12:34     ` mailinglists
@ 2005-02-21 13:17       ` Vitaly Fertman
  2005-02-21 14:12         ` Florian Engelmann
  0 siblings, 1 reply; 12+ messages in thread
From: Vitaly Fertman @ 2005-02-21 13:17 UTC (permalink / raw)
  To: mailinglists@d-g-c.de; +Cc: reiserfs-list

> libaal-1.0.4.tar.gz compiled fine without any patches.
> but reiser4progs-1.0.4 did not (also no patches!):

do you have a mix of several installed versions in the system?
uninstall, check that nothing left and another try will probably help.

> format40.c:255: warning: type defaults to `int' in declaration of `__tmp'
> format40.c:255: warning: initialization makes integer from pointer
> without a cast

-- 
Thanks,
Vitaly Fertman


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

* Re: Reiser4fs and SPARC64?
  2005-02-21 12:23     ` mailinglists
@ 2005-02-21 13:44       ` Alex Zarochentsev
  2005-02-21 14:13         ` Florian Engelmann
  0 siblings, 1 reply; 12+ messages in thread
From: Alex Zarochentsev @ 2005-02-21 13:44 UTC (permalink / raw)
  To: mailinglists@d-g-c.de; +Cc: reiserfs-list

hello

On Mon, Feb 21, 2005 at 01:23:25PM +0100, mailinglists@d-g-c.de wrote:

> >
> 
> These 2 patches are no more needed for me and my sparc64 since you 
> released 1.0.4?
> Today i compiled my 2.6.10-mm3-reiser4 kernel and it works fine. Only 

have you tried reiser4?

> problem left is LVM cause the kernel gets too big (>3.5MB) with LVM 
> compiled in it. So my root filesystem will be no LVM...
> 
> greetz Florian

-- 
Alex.

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

* Re: Reiser4fs and SPARC64?
  2005-02-21 13:17       ` Vitaly Fertman
@ 2005-02-21 14:12         ` Florian Engelmann
  0 siblings, 0 replies; 12+ messages in thread
From: Florian Engelmann @ 2005-02-21 14:12 UTC (permalink / raw)
  To: Vitaly Fertman; +Cc: reiserfs-list

Vitaly Fertman schrieb:

>>libaal-1.0.4.tar.gz compiled fine without any patches.
>>but reiser4progs-1.0.4 did not (also no patches!):
>>    
>>
>
>do you have a mix of several installed versions in the system?
>uninstall, check that nothing left and another try will probably help.
>
>  
>
you mean of libaal?
no i don't have. I just compiled the kernel today what worked fine (also 
i lost my serial console output cause i don't know what drivers i need).
After that i had a look at your ftp and found the new libaal-1.0.4 and 
reiser4progs-1.0.4 so i decided to install the newer once. I tried to 
patch them with the 2 patches you emaild me but i figured out they are 
already patched, aren't they?
The libaal compiled and installed withount any probs but the 
reiser4progs didn't.
Should i try to compile 1.0.3? Would reiser4progs 1.0.3 work with libaal 
1.0.4???

thx Florian

>>format40.c:255: warning: type defaults to `int' in declaration of `__tmp'
>>format40.c:255: warning: initialization makes integer from pointer
>>without a cast
>>    
>>
>
>  
>


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

* Re: Reiser4fs and SPARC64?
  2005-02-21 13:44       ` Alex Zarochentsev
@ 2005-02-21 14:13         ` Florian Engelmann
  2005-03-02  9:15           ` mailinglists
  0 siblings, 1 reply; 12+ messages in thread
From: Florian Engelmann @ 2005-02-21 14:13 UTC (permalink / raw)
  To: Alex Zarochentsev; +Cc: reiserfs-list

Alex Zarochentsev schrieb:

>hello
>
>On Mon, Feb 21, 2005 at 01:23:25PM +0100, mailinglists@d-g-c.de wrote:
>
>  
>
>>These 2 patches are no more needed for me and my sparc64 since you 
>>released 1.0.4?
>>Today i compiled my 2.6.10-mm3-reiser4 kernel and it works fine. Only 
>>    
>>
>
>have you tried reiser4?
>  
>

no i couldn't cause the reiser4progs did not compile :(

>  
>
>>problem left is LVM cause the kernel gets too big (>3.5MB) with LVM 
>>compiled in it. So my root filesystem will be no LVM...
>>
>>greetz Florian
>>    
>>
>
>  
>


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

* Re: Reiser4fs and SPARC64?
  2005-02-21 14:13         ` Florian Engelmann
@ 2005-03-02  9:15           ` mailinglists
  0 siblings, 0 replies; 12+ messages in thread
From: mailinglists @ 2005-03-02  9:15 UTC (permalink / raw)
  To: Florian Engelmann; +Cc: Alex Zarochentsev, reiserfs-list

Hi,
i did not recieve any email from the raiserfs mailinglist since 
23.02.2005 ?!
Is the list still alive?

thank you

Florian Engelmann

> Alex Zarochentsev schrieb:
>
>> hello
>>
>> On Mon, Feb 21, 2005 at 01:23:25PM +0100, mailinglists@d-g-c.de wrote:
>>
>>  
>>
>>> These 2 patches are no more needed for me and my sparc64 since you 
>>> released 1.0.4?
>>> Today i compiled my 2.6.10-mm3-reiser4 kernel and it works fine. 
>>> Only   
>>
>>
>> have you tried reiser4?
>>  
>>
>
> no i couldn't cause the reiser4progs did not compile :(
>
>>  
>>
>>> problem left is LVM cause the kernel gets too big (>3.5MB) with LVM 
>>> compiled in it. So my root filesystem will be no LVM...
>>>
>>> greetz Florian
>>>   
>>
>>
>>  
>>
>


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

end of thread, other threads:[~2005-03-02  9:15 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-02-16 13:17 Reiser4fs and SPARC64? mailinglists
2005-02-16 14:09 ` Alex Zarochentsev
2005-02-16 14:24   ` Vitaly Fertman
2005-02-17  9:38     ` mailinglists
2005-02-17  9:44       ` Alex Zarochentsev
2005-02-21 12:23     ` mailinglists
2005-02-21 13:44       ` Alex Zarochentsev
2005-02-21 14:13         ` Florian Engelmann
2005-03-02  9:15           ` mailinglists
2005-02-21 12:34     ` mailinglists
2005-02-21 13:17       ` Vitaly Fertman
2005-02-21 14:12         ` Florian Engelmann

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.