* 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.