===================================================================
@@ -384,6 +384,9 @@ static int __init write_buffer(char *buf
return len - count;
}
+static unsigned my_inptr; /* index of next byte to be processed in inbuf */
+static unsigned bytes_out; /* count of chars processed from current archive */
+
static int __init flush_buffer(void *bufv, unsigned len)
{
char *buf = (char *) bufv;
@@ -393,6 +396,7 @@ static int __init flush_buffer(void *buf
return -1;
while ((written = write_buffer(buf, len)) < len && !message) {
char c = buf[written];
+ bytes_out += written;
if (c == '0') {
buf += written;
len -= written;
@@ -407,8 +411,6 @@ static int __init flush_buffer(void *buf
return origLen;
}
-static unsigned my_inptr; /* index of next byte to be processed in inbuf */
-
#include <linux/decompress/generic.h>
static char * __init unpack_to_rootfs(char *buf, unsigned len)
@@ -430,6 +432,8 @@ static char * __init unpack_to_rootfs(ch
message = NULL;
while (!message && len) {
loff_t saved_offset = this_header;
+ bytes_out = 0;
+ my_inptr = 0;
if (*buf == '0' && !(this_header & 3)) {
state = Start;
written = write_buffer(buf, len);
@@ -462,6 +466,9 @@ static char * __init unpack_to_rootfs(ch
buf += my_inptr;
len -= my_inptr;
}
+ if (message) {
+ printk(KERN_ERR "Failed unpacking at %p input %d output %d \n",buf - my_inptr, my_inptr, bytes_out);
+ }
dir_utime();
kfree(name_buf);
kfree(symlink_buf);