I noticed that tar's archive buffer is carefully allocated to be aligned,
but then the alignment is forgotten. So I installed this patch.
2006-03-07 Paul Eggert <[EMAIL PROTECTED]>
* src/buffer.c (record_buffer_aligned): New var.
(init_buffer): Use it to ensure that the buffer is aligned.
This doesn't result in any measurable performance improvement
on my host (Debian GNU/Linux 3.1 stable, with default block size),
but I assume it does help on some hosts.
--- src/buffer.c 20 Feb 2006 08:15:31 -0000 1.96
+++ src/buffer.c 8 Mar 2006 00:55:56 -0000 1.97
@@ -44,6 +44,7 @@
static tarlong prev_written; /* bytes written on previous volumes */
static tarlong bytes_written; /* bytes written on this volume */
static void *record_buffer[2]; /* allocated memory */
+union block *record_buffer_aligned[2];
static int record_index;
/* FIXME: The following variables should ideally be static to this
@@ -369,10 +370,11 @@ xclose (int fd)
static void
init_buffer ()
{
- if (!record_buffer[record_index])
- page_aligned_alloc (&record_buffer[record_index], record_size);
+ if (! record_buffer_aligned[record_index])
+ record_buffer_aligned[record_index] =
+ page_aligned_alloc (&record_buffer[record_index], record_size);
- record_start = record_buffer[record_index];
+ record_start = record_buffer_aligned[record_index];
current_block = record_start;
record_end = record_start + blocking_factor;
}
_______________________________________________
Bug-tar mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/bug-tar