Re: [patch] neighbour.c, pneigh_get_next() skips published entry

2006-09-27 Thread Herbert Xu
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

2006-09-25 Thread Philip Craig
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

2006-09-25 Thread Andrew Morton
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

2006-09-25 Thread David Miller
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

2006-09-25 Thread Andrew Morton

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

2006-05-11 Thread Jari Takkala
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