Hi, Andreas,
on Mittwoch, 16. Juni 2004 at 08:09 you wrote to amanda-users:
A diff against my current .config shows that this seems to be a pretty fat kernel, many many things compiled into it statically ...
I am no kernel-hacker but I know that having ONE of all those options wrong can break things ... this has happened to me for several times.
AS> This has ofcourse happened to me too, though I have been using kernels AS> I have configured myself for the past 5 years or so, and it's not very AS> common for me anymore.
AS> If it not were that the same ".config" works in 2.6.5 but not in 2.6.6 AS> I had started looking into what could be causing it.
AS> There are severel things I could live without in the kernel config AS> which may or may not fix this particular problem (IPv6 is one thing I AS> have been thinking of myself) it would probably help us isolating the AS> problem, but since the server is rather slow it's pretty painful to AS> recompile the kernel again and again.
Yep, I know these boxes ...
Removing IPv6 is a good thing, I think ...
This reminds of "something completely different" (who knows which TV-series? ...) :
Show us your disklist.
AS> # AS> # File format is: AS> # AS> # hostname diskdev dumptype [spindle [interface]] AS> # AS> # where the dumptypes are defined by you in amanda.conf or in-line.
AS> # Zappa AS> zappa.zappa.cx /boot root-tar AS> zappa.zappa.cx / comp-root-tar AS> zappa.zappa.cx /var comp-high-tar AS> zappa.zappa.cx /imagelib high-tar AS> zappa.zappa.cx /apps comp-root-tar AS> zappa.zappa.cx /home/emelie user-tar AS> zappa.zappa.cx /home/sunkan comp-user-tar
OK. No localhost-stuff detected ...
I would suggest a complete re-install of a vanilla 2.6.6-kernel and testing with this one. Doesn't make much sense to look for bugs in that rc in my opinion.
AS> I have already done this several times before starting to try different AS> rc versions, that is only done to narrow down things for my report AS> to the lkml which was where I started looking for help.
Tasty problem. Looking forward to the solution ...
AS> Me too, although I feel that I'm taking a bit more time for help in AS> diagnosing this than I really want too. This is not a corporate server AS> but a server in my home network, but it holds very important data for my AS> family (digital photo album, mail etc..)
AS> Keep the questions coming and I'll try and answer them the best I can.
Just spend the time on this that you want to. You don't have to diagnose this, we just try to help you doing this if you want to do it.
Read the news on kernel.org : 2.6.7 is out ;-) Maybe you try this one if you find the enthusisasm.
Remove unneeded network-stuff, clean up the .config, the side-effect is that this speeds up compiling.
Well, now I have had some time to set up a vtape system on my laptop, this made it a bit simpler for me to try different kernel settings since the computer is faster and not my GW to internet and other stuff.
It appears that a change occured in ip_conntrack_amanda.c between 2.6.5-rc1 and rc2 (this change isn't mentioned in the Changelog or I am unable to find it). I don't know what I was thinking when I went from an almost fully modular netfilter setup to a fully static compiled one, obviously I'm back to the modular setup and my backups are workin as long as ip_nat_amanda and ip_conntrack_amanda are not loaded.
I am still under the impression that it's not meant to fail just for loading support for amanda in netfilter, but I might be wrong. A question that I immedietly thinks of is if the netfilter amanda NAT code worked earlier/works now or has been working all the time. Apparently it makes backups on the tapeserver impossible right now, so my guess is that it isn't working at all, but I don't have any need for it right now so maybe someone who uses it can verify if it is working at all.
Anyway here's the diff from 2.6.5-rc1 to 2.6.5-rc2:
--- rc1/linux-2.6.5/net/ipv4/netfilter/ip_conntrack_amanda.c 2004-04-04 05:37:36.000000000 +0200
+++ rc2/linux-2.6.5/net/ipv4/netfilter/ip_conntrack_amanda.c 2004-06-17 20:24:32.000000000 +0200
@@ -46,10 +46,11 @@
static int help(struct sk_buff *skb,
struct ip_conntrack *ct, enum ip_conntrack_info ctinfo)
{
- struct ip_conntrack_expect exp;
+ struct ip_conntrack_expect *exp;
struct ip_ct_amanda_expect *exp_amanda_info;
char *data, *data_limit, *tmp;
unsigned int dataoff, i;
+ u_int16_t port, len;
/* Only look at packets from the Amanda server */ if (CTINFO2DIR(ctinfo) == IP_CT_DIR_ORIGINAL) @@ -79,33 +80,40 @@ goto out; data += strlen("CONNECT ");
- memset(&exp, 0, sizeof(exp)); - exp.tuple.src.ip = ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple.src.ip; - exp.tuple.dst.ip = ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple.dst.ip; - exp.tuple.dst.protonum = IPPROTO_TCP; - exp.mask.src.ip = 0xFFFFFFFF; - exp.mask.dst.ip = 0xFFFFFFFF; - exp.mask.dst.protonum = 0xFFFF; - exp.mask.dst.u.tcp.port = 0xFFFF; - /* Only search first line. */ if ((tmp = strchr(data, '\n'))) *tmp = '\0';
- exp_amanda_info = &exp.help.exp_amanda_info; for (i = 0; i < ARRAY_SIZE(conns); i++) { char *match = strstr(data, conns[i]); if (!match) continue; tmp = data = match + strlen(conns[i]); - exp_amanda_info->offset = data - amanda_buffer; - exp_amanda_info->port = simple_strtoul(data, &data, 10); - exp_amanda_info->len = data - tmp; - if (exp_amanda_info->port == 0 || exp_amanda_info->len > 5) + port = simple_strtoul(data, &data, 10); + len = data - tmp; + if (port == 0 || len > 5) break;
- exp.tuple.dst.u.tcp.port = htons(exp_amanda_info->port);
- ip_conntrack_expect_related(ct, &exp);
+ exp = ip_conntrack_expect_alloc();
+ if (exp == NULL)
+ goto out;
+
+ exp->tuple.src.ip = ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple.src.ip;
+ exp->tuple.dst.ip = ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple.dst.ip;
+ exp->tuple.dst.protonum = IPPROTO_TCP;
+ exp->mask.src.ip = 0xFFFFFFFF;
+ exp->mask.dst.ip = 0xFFFFFFFF;
+ exp->mask.dst.protonum = 0xFFFF;
+ exp->mask.dst.u.tcp.port = 0xFFFF;
+
+ exp_amanda_info = &exp->help.exp_amanda_info;
+ exp_amanda_info->offset = data - amanda_buffer;
+ exp_amanda_info->port = port;
+ exp_amanda_info->len = len;
+
+ exp->tuple.dst.u.tcp.port = htons(port);
+
+ ip_conntrack_expect_related(exp, ct);
}
out: [EMAIL PROTECTED]:~/kernel/tmp$