Re: [patch] neighbour.c, pneigh_get_next() skips published entry
Philip Craig <[EMAIL PROTECTED]> wrote: > > It is faster to reproduce with a smaller block size. > I haven't looked in detail to find the cause, but I did notice that > neigh_seq_start() does a pos_minus_one adjustment, and neigh_seq_next() > does not. Yeah I can reproduce this now. I think you actually sent me the instructions before but I didn't get around to testing it. Sorry about that. I'll look into this. Cheers, -- Visit Openswan at http://www.openswan.org/ Email: Herbert Xu ~{PmV>HI~} <[EMAIL PROTECTED]> Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt - To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [patch] neighbour.c, pneigh_get_next() skips published entry
David Miller wrote: >> I've been sitting on this patch because afaik the problem which it purports >> to fix remains unfixed. >> >> Should I drop it?? >> >> Thanks. > > Please drop it, the patch submitted didn't give us the feedback > and test results we asked for which is necessary to pinpoint the > true issue here. It is faster to reproduce with a smaller block size. I haven't looked in detail to find the cause, but I did notice that neigh_seq_start() does a pos_minus_one adjustment, and neigh_seq_next() does not. First, with only one entry, both block sizes work: # dd if=/proc/net/arp bs=1024 IP address HW type Flags HW addressMask Device 10.46.1.10x1 0x2 00:04:23:C8:8D:E9 *eth0 0+1 records in 0+1 records out 156 bytes (156 B) copied, 0.000161 seconds, 969 kB/s # dd if=/proc/net/arp bs=128 IP address HW type Flags HW addressMask Device 10.46.1.10x1 0x2 00:04:23:C8:8D:E9 *eth0 1+1 records in 1+1 records out 156 bytes (156 B) copied, 0.000193 seconds, 808 kB/s But add another entry, and it is lost with bs=128: # arp -Ds 1.1.1.1 eth1 pub # dd if=/proc/net/arp bs=1024 IP address HW type Flags HW addressMask Device 10.46.1.10x1 0x2 00:04:23:C8:8D:E9 *eth0 1.1.1.1 0x1 0xc 00:00:00:00:00:00 *eth1 0+1 records in 0+1 records out 233 bytes (233 B) copied, 2.6e-05 seconds, 9.0 MB/s # dd if=/proc/net/arp bs=128 IP address HW type Flags HW addressMask Device 10.46.1.10x1 0x2 00:04:23:C8:8D:E9 *eth0 1+1 records in 1+1 records out 156 bytes (156 B) copied, 7.9e-05 seconds, 2.0 MB/s Add more entries, but still only one is lost: # arp -Ds 1.1.1.2 eth1 pub # arp -Ds 1.1.1.3 eth1 pub # arp -Ds 1.1.1.4 eth1 pub # arp -Ds 1.1.1.5 eth1 pub # dd if=/proc/net/arp bs=128 IP address HW type Flags HW addressMask Device 10.46.1.10x1 0x2 00:04:23:C8:8D:E9 *eth0 1.1.1.3 0x1 0xc 00:00:00:00:00:00 *eth1 1.1.1.2 0x1 0xc 00:00:00:00:00:00 *eth1 1.1.1.5 0x1 0xc 00:00:00:00:00:00 *eth1 1.1.1.4 0x1 0xc 00:00:00:00:00:00 *eth1 3+1 records in 3+1 records out 464 bytes (464 B) copied, 3.6e-05 seconds, 12.9 MB/s - To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [patch] neighbour.c, pneigh_get_next() skips published entry
On Mon, 25 Sep 2006 16:47:31 -0700 (PDT) David Miller <[EMAIL PROTECTED]> wrote: > From: Andrew Morton <[EMAIL PROTECTED]> > Date: Mon, 25 Sep 2006 16:45:35 -0700 > > > I've been sitting on this patch because afaik the problem which it purports > > to fix remains unfixed. > > > > Should I drop it?? > > > > Thanks. > > Please drop it, the patch submitted didn't give us the feedback > and test results we asked for which is necessary to pinpoint the > true issue here. Well that's why I hang onto such patches: so I can bug people about it every few months. Consider it the world's dumbest bug-tracking system. But I have a feeling I'll get shouted at if I try it again with this one (looks at the 18-month-old tulip-fix-for-64-bit-mips.patch), so yeah, I'll drop it. - To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [patch] neighbour.c, pneigh_get_next() skips published entry
From: Andrew Morton <[EMAIL PROTECTED]> Date: Mon, 25 Sep 2006 16:45:35 -0700 > I've been sitting on this patch because afaik the problem which it purports > to fix remains unfixed. > > Should I drop it?? > > Thanks. Please drop it, the patch submitted didn't give us the feedback and test results we asked for which is necessary to pinpoint the true issue here. - To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
[patch] neighbour.c, pneigh_get_next() skips published entry
I've been sitting on this patch because afaik the problem which it purports to fix remains unfixed. Should I drop it?? Thanks. From: "Jari Takkala" <[EMAIL PROTECTED]> Fix a problem where output from /proc/net/arp skips a record when the full output does not fit into the users read() buffer. To reproduce: publish a large number of ARP entries (more than 10 required on my system). Run 'dd if=/proc/net/arp of=arp-1024.out bs=1024'. View the output, one entry will be missing. Signed-off-by: Jari Takkala <[EMAIL PROTECTED]> [akpm: submitted before, discussion ended inconclusively, iirc] Signed-off-by: Andrew Morton <[EMAIL PROTECTED]> --- net/core/neighbour.c |6 ++ 1 file changed, 6 insertions(+) diff -puN net/core/neighbour.c~neighbourc-pneigh_get_next-skips-published-entry net/core/neighbour.c --- a/net/core/neighbour.c~neighbourc-pneigh_get_next-skips-published-entry +++ a/net/core/neighbour.c @@ -2209,6 +2209,12 @@ static struct pneigh_entry *pneigh_get_n struct neigh_seq_state *state = seq->private; struct neigh_table *tbl = state->tbl; + if (pos != NULL && *pos == 1 && + (pn->next || tbl->phash_buckets[state->bucket])) { + --(*pos); + return pn; + } + pn = pn->next; while (!pn) { if (++state->bucket > PNEIGH_HASHMASK) _ - To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH] neighbour.c, pneigh_get_next() skips published entry
The following patch fixes a problem where output from /proc/net/arp skips a record when the full output does not fit into the users read() buffer. To reproduce: publish a large number of ARP entries (more than 10 required on my system). Run 'dd if=/proc/net/arp of=arp-1024.out bs=1024'. View the output, one entry will be missing. Please review and commit if acceptable. Signed-off-by: Jari Takkala <[EMAIL PROTECTED]> --- linux-2.6.16.15.orig/net/core/neighbour.c 2006-05-09 15:53:30.0 -0400 +++ linux-2.6.16.15/net/core/neighbour.c2006-05-10 16:06:40.0 -0400 @@ -2120,6 +2120,11 @@ struct neigh_seq_state *state = seq->private; struct neigh_table *tbl = state->tbl; + if (pos != NULL && *pos == 1 && (pn->next || tbl->phash_buckets[state->bucket])) { + --(*pos); + return pn; + } + pn = pn->next; while (!pn) { if (++state->bucket > PNEIGH_HASHMASK) - To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html