Re: ATA errors on recent -current

2002-04-16 Thread msch

 [...]
 Since you have one of these beasts, could you maybe try changing
 the number of tagged command queue entries you permit to be used
 at one time?

Of course, I'll do it as soon as...

1) I'm at home again... ;-)
2) Someone tells me how to achive that. I looked at 'man 8 atacontrol'
   as well as 'man 4 ata', but I can't find anything that lets me set
   the queue depth nor inquire the advertised queue length...

 [...]
 As I said: it could be drive settings unrelated to the code
 itself being correct.  I've given three suggestions to verify
 this, one way or the other:
 
 1)Control the drive DMA speed down

I *did* test with UDMA66 instead of UDMA100 and it was even worse...
With UDMA100, the system switched back to PIO4 - with UDMA66 there was a system
freeze after the second (well known) error message... :-(

But I admit, this test was done some days ago, I'll try it again this evening
(approx. 19:00 UTC)...

 2)Pretend the maximum tagged command queue depth is
   smaller than it is

How to?

 3)Toggle the write caching on the drive

OK - I'm running all my disks without write cache, but I'll check this too.

 Until you try all three of these and report back, you can't say
 that the problem is Soren's.

This is a real misunderstanding! I thought I stated clearly enough that I
don't want to blame Soren for this obviously highly complex issue!
Shit happens - the only ensurance against that is to stay in bed (alone! :-)

Ciao/BSD -
Matthias


To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: PAM broke?

2002-04-16 Thread Dag-Erling Smorgrav

Benno Rice [EMAIL PROTECTED] writes:
 I think des's commit that removed the _use_yp variable from
 usr.sbin/vipw/pw_util.c fixed it.  I managed to get an unresolved symbol
 error for _use_yp out of pam with the attached patch.

I have a similar patch in my tree, but dlerror() keeps returning NULL,
and I've been unable to find out why :( I ended up modifying
_rtld_error() in rtld.c to actually print the error message.

DES
-- 
Dag-Erling Smorgrav - [EMAIL PROTECTED]

To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



alpha tinderbox failure

2002-04-16 Thread Dag-Erling Smorgrav

In file included from 
/.amd_mnt/freefall/host/d/home/des/tinderbox/src/gnu/usr.bin/cc/f771/../../../../contrib/gcc.295/f/stb.h:45,
 from 
/.amd_mnt/freefall/host/d/home/des/tinderbox/src/gnu/usr.bin/cc/f771/../../../../contrib/gcc.295/f/stb.c:91:
/.amd_mnt/freefall/host/d/home/des/tinderbox/src/gnu/usr.bin/cc/f771/../../../../contrib/gcc.295/f/str.h:45:
 str-1t.h: No such file or directory
/.amd_mnt/freefall/host/d/home/des/tinderbox/src/gnu/usr.bin/cc/f771/../../../../contrib/gcc.295/f/str.h:46:
 str-fo.h: No such file or directory
/.amd_mnt/freefall/host/d/home/des/tinderbox/src/gnu/usr.bin/cc/f771/../../../../contrib/gcc.295/f/str.h:47:
 str-io.h: No such file or directory
/.amd_mnt/freefall/host/d/home/des/tinderbox/src/gnu/usr.bin/cc/f771/../../../../contrib/gcc.295/f/str.h:48:
 str-nq.h: No such file or directory
/.amd_mnt/freefall/host/d/home/des/tinderbox/src/gnu/usr.bin/cc/f771/../../../../contrib/gcc.295/f/str.h:49:
 str-ot.h: No such file or directory
/.amd_mnt/freefall/host/d/home/des/tinderbox/src/gnu/usr.bin/cc/f771/../../../../contrib/gcc.295/f/str.h:50:
 str-op.h: No such file or directory
/.amd_mnt/freefall/host/d/home/des/tinderbox/src/gnu/usr.bin/cc/f771/../../../../contrib/gcc.295/f/str.h:51:
 str-2t.h: No such file or directory
In file included from 
/.amd_mnt/freefall/host/d/home/des/tinderbox/src/gnu/usr.bin/cc/f771/../../../../contrib/gcc.295/f/stc.h:46,
 from 
/.amd_mnt/freefall/host/d/home/des/tinderbox/src/gnu/usr.bin/cc/f771/../../../../contrib/gcc.295/f/stc.c:70:
/.amd_mnt/freefall/host/d/home/des/tinderbox/src/gnu/usr.bin/cc/f771/../../../../contrib/gcc.295/f/str.h:45:
 str-1t.h: No such file or directory
/.amd_mnt/freefall/host/d/home/des/tinderbox/src/gnu/usr.bin/cc/f771/../../../../contrib/gcc.295/f/str.h:46:
 str-fo.h: No such file or directory
/.amd_mnt/freefall/host/d/home/des/tinderbox/src/gnu/usr.bin/cc/f771/../../../../contrib/gcc.295/f/str.h:47:
 str-io.h: No such file or directory
/.amd_mnt/freefall/host/d/home/des/tinderbox/src/gnu/usr.bin/cc/f771/../../../../contrib/gcc.295/f/str.h:48:
 str-nq.h: No such file or directory
/.amd_mnt/freefall/host/d/home/des/tinderbox/src/gnu/usr.bin/cc/f771/../../../../contrib/gcc.295/f/str.h:49:
 str-ot.h: No such file or directory
/.amd_mnt/freefall/host/d/home/des/tinderbox/src/gnu/usr.bin/cc/f771/../../../../contrib/gcc.295/f/str.h:50:
 str-op.h: No such file or directory
/.amd_mnt/freefall/host/d/home/des/tinderbox/src/gnu/usr.bin/cc/f771/../../../../contrib/gcc.295/f/str.h:51:
 str-2t.h: No such file or directory
In file included from 
/.amd_mnt/freefall/host/d/home/des/tinderbox/src/gnu/usr.bin/cc/f771/../../../../contrib/gcc.295/f/std.h:45,
 from 
/.amd_mnt/freefall/host/d/home/des/tinderbox/src/gnu/usr.bin/cc/f771/../../../../contrib/gcc.295/f/std.c:36:
/.amd_mnt/freefall/host/d/home/des/tinderbox/src/gnu/usr.bin/cc/f771/../../../../contrib/gcc.295/f/str.h:45:
 str-1t.h: No such file or directory
/.amd_mnt/freefall/host/d/home/des/tinderbox/src/gnu/usr.bin/cc/f771/../../../../contrib/gcc.295/f/str.h:46:
 str-fo.h: No such file or directory
/.amd_mnt/freefall/host/d/home/des/tinderbox/src/gnu/usr.bin/cc/f771/../../../../contrib/gcc.295/f/str.h:47:
 str-io.h: No such file or directory
/.amd_mnt/freefall/host/d/home/des/tinderbox/src/gnu/usr.bin/cc/f771/../../../../contrib/gcc.295/f/str.h:48:
 str-nq.h: No such file or directory
/.amd_mnt/freefall/host/d/home/des/tinderbox/src/gnu/usr.bin/cc/f771/../../../../contrib/gcc.295/f/str.h:49:
 str-ot.h: No such file or directory
/.amd_mnt/freefall/host/d/home/des/tinderbox/src/gnu/usr.bin/cc/f771/../../../../contrib/gcc.295/f/str.h:50:
 str-op.h: No such file or directory
/.amd_mnt/freefall/host/d/home/des/tinderbox/src/gnu/usr.bin/cc/f771/../../../../contrib/gcc.295/f/str.h:51:
 str-2t.h: No such file or directory
In file included from 
/.amd_mnt/freefall/host/d/home/des/tinderbox/src/gnu/usr.bin/cc/f771/../../../../contrib/gcc.295/f/ste.h:45,
 from 
/.amd_mnt/freefall/host/d/home/des/tinderbox/src/gnu/usr.bin/cc/f771/../../../../contrib/gcc.295/f/ste.c:40:
/.amd_mnt/freefall/host/d/home/des/tinderbox/src/gnu/usr.bin/cc/f771/../../../../contrib/gcc.295/f/str.h:45:
 str-1t.h: No such file or directory
/.amd_mnt/freefall/host/d/home/des/tinderbox/src/gnu/usr.bin/cc/f771/../../../../contrib/gcc.295/f/str.h:46:
 str-fo.h: No such file or directory
/.amd_mnt/freefall/host/d/home/des/tinderbox/src/gnu/usr.bin/cc/f771/../../../../contrib/gcc.295/f/str.h:47:
 str-io.h: No such file or directory
/.amd_mnt/freefall/host/d/home/des/tinderbox/src/gnu/usr.bin/cc/f771/../../../../contrib/gcc.295/f/str.h:48:
 str-nq.h: No such file or directory
/.amd_mnt/freefall/host/d/home/des/tinderbox/src/gnu/usr.bin/cc/f771/../../../../contrib/gcc.295/f/str.h:49:
 str-ot.h: No such file or directory
/.amd_mnt/freefall/host/d/home/des/tinderbox/src/gnu/usr.bin/cc/f771/../../../../contrib/gcc.295/f/str.h:50:
 str-op.h: No such file or directory

Re: ATA errors on recent -current

2002-04-16 Thread Matthias Schuendehuette

Hi Terry and you all,

On Tuesday, 16. April 2002 01:48 you wrote:

 [...]
 As I said: it could be drive settings unrelated to the code
 itself being correct.  I've given three suggestions to verify
 this, one way or the other:

 1)Control the drive DMA speed down

 2)Pretend the maximum tagged command queue depth is
   smaller than it is

 3)Toggle the write caching on the drive

I used 'atacontrol' to read the number of tags allowed: it is 31 
(0x1F). Perhaps Soren could tell me how to force it to, say, 0x10?

Then I tried various combinations of UDMA100/66/33 and wc=0/1 - it 
nearly doesn't change anything. If WC was enabled, I saw errors 
concerning tags 0 *and* 1, whereas without write caching only tag=0 was 
mentioned. I should say that my simple test was a 'tar cvf /dev/null 
/usr/ports' with /usr/ports on an ATA-partition. Why *Write*Caching has 
any influence here...???

What was consistent thru all test was, that the disk operates quite 
some time until the error occures the first time. After that, it is not 
possible to access the disk in UDMA-Mode any more, regardeless *which* 
UDMA-Mode it is. 'Quite some time' means approx. 50% of /usr/ports in 
the above mentioned 'test'.

After the first switch to PIO4, I umounted the filesystem and switched 
back to UDMA33 for instance - I couldn't even *mount* the filesystem 
again!

But w/o Tagged Queuing the disk operates flawlessly, so I'm a bit in 
doubt, if the errors with WD-disks have the same source... but may be.

So far - but still some data:

CPU: AMD Duron(tm) processor (801.82-MHz 686-class CPU)
real memory  = 268369920 (262080K bytes)
pcib1: VIA 8363 (Apollo KT133) PCI-PCI (AGP) bridge \
at device 1.0 on pci0
/* It's an EPoX 8KTA2 MoBo */
atapci0: VIA 82C686 ATA100 controller port 0xd000-0xd00f \
at device 7.1 on pci0
atapci0: Correcting VIA config for southbridge data corruption bug
ad0: 43979MB IBM-DTLA-307045 [89355/16/63] at ata0-master UDMA100


...and 'atacontrol cap 0 0' says:

ATA channel 0, Master, device ad0:

ATA/ATAPI revision5
device model  IBM-DTLA-307045
firmware revision TX6OA50C
cylinders 16383
heads 16
sectors/track 63
lba supported 90069840 sectors
lba48 not supported
dma supported
overlap not supported

Feature  Support  EnableValue   Vendor
write cacheyes  no
read ahead yes  yes
dma queued yes  yes 31/1F
SMART  yes  no
microcode download no   no
security   yes  no
power management   yes  yes
advanced power management  yes  no  0/00
automatic acoustic management  yes  no  254/FE  128/80


That's it.

-- 
Ciao/BSD - Matthias

Matthias Schuendehuette [EMAIL PROTECTED], Berlin (Germany)
Powered by FreeBSD 4.5-STABLE

To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Two VM related crashes with yesterday's -CURRENT

2002-04-16 Thread Thomas Quinot

Two panic's in a row, on a desktop workstation, with -CURRENT
kernel and world as of Apr. 15.

I am keeping the cores for now, if any further forensics are desired.

Thomas.

# gdb -k /usr/obj/usr/src/sys/SHALMANESER/kernel.debug 
3dc44d47eaf2fa5efca6d587da113787.core
GNU gdb 4.18
Copyright 1998 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type show copying to see the conditions.
There is absolutely no warranty for GDB.  Type show warranty for details.
This GDB was configured as i386-unknown-freebsd...
IdlePTD at phsyical address 0x0049f000
initial pcb at physical address 0x00398440
panicstr: bwrite: buffer is not busy???
panic messages:
---
Fatal trap 12: page fault while in kernel mode
fault virtual address   = 0x11
fault code  = supervisor read, page not present
instruction pointer = 0x8:0xc01d5154
stack pointer   = 0x10:0xc90338cc
frame pointer   = 0x10:0xc90338d8
code segment= base 0x0, limit 0xf, type 0x1b
= DPL 0, pres 1, def32 1, gran 1
processor eflags= interrupt enabled, resume, IOPL = 0
current process = 605 (fsck_ufs)
trap number = 12
panic: page fault

syncing disks... panic: bwrite: buffer is not busy???
Uptime: 5m22s
Dumping 127 MB
ata0: resetting devices .. done
 16 32 48 64 80 96 112
---
#0  doadump () at /usr/src/sys/kern/kern_shutdown.c:213
213 dumping++;
(kgdb) bt
#0  doadump () at /usr/src/sys/kern/kern_shutdown.c:213
#1  0xc01df201 in boot (howto=260) at /usr/src/sys/kern/kern_shutdown.c:346
#2  0xc01df39d in panic (fmt=0xc031942b bwrite: buffer is not busy???)
at /usr/src/sys/kern/kern_shutdown.c:490
#3  0xc0212d8d in bwrite (bp=0xc3bf3df8) at /usr/src/sys/kern/vfs_bio.c:747
#4  0xc021337e in bawrite (bp=0xc3bf3df8) at /usr/src/sys/kern/vfs_bio.c:1063
#5  0xc0297b3d in ffs_fsync (ap=0xc9033780)
at /usr/src/sys/ufs/ffs/ffs_vnops.c:209
#6  0xc029620a in ffs_sync (mp=0xc8611c00, waitfor=2, cred=0xc3b6c900, 
td=0xc03616a0) at vnode_if.h:441
#7  0xc0221828 in sync (td=0xc03616a0, uap=0x0)
at /usr/src/sys/kern/vfs_syscalls.c:1217
#8  0xc01dee03 in boot (howto=256) at /usr/src/sys/kern/kern_shutdown.c:254
#9  0xc01df39d in panic (fmt=0xc0331e7e %s)
at /usr/src/sys/kern/kern_shutdown.c:490
#10 0xc02dfbc3 in trap_fatal (frame=0xc903388c, eva=17)
at /usr/src/sys/i386/i386/trap.c:841
#11 0xc02df90d in trap_pfault (frame=0xc903388c, usermode=0, eva=17)
at /usr/src/sys/i386/i386/trap.c:755
#12 0xc02df387 in trap (frame={tf_fs = -926547944, tf_es = 16, tf_ds = 16, 
  tf_edi = -926996512, tf_esi = -1070188480, tf_ebp = -922535720, 
  tf_isp = -922535752, tf_ebx = 0, tf_edx = 3058, tf_ecx = -926998528, 
  tf_eax = 1, tf_trapno = 12, tf_err = 0, tf_eip = -1071820460, tf_cs = 8, 
  tf_eflags = 66050, tf_esp = 0, tf_ss = -1011252296})
---Type return to continue, or q return to quit---
at /usr/src/sys/i386/i386/trap.c:426
#13 0xc01d5154 in free (addr=0xc8bf27e0, type=0xc0363840)
at /usr/src/sys/vm/uma_int.h:326
#14 0xc028d235 in indiracct (snapvp=0xc8c6fe10, cancelvp=0xc8c6fe10, level=0, 
blkno=414, lbn=-12, rlbn=12, remblks=63988, blksperindir=1, fs=0xc4237000, 
acctfunc=0xc028d390 mapacct, expungetype=2)
at /usr/src/sys/ufs/ffs/ffs_snapshot.c:752
#15 0xc028ce9d in expunge (snapvp=0xc8c6fe10, cancelip=0xc9062d00, 
fs=0xc4237000, acctfunc=0xc028d390 mapacct, expungetype=2)
at /usr/src/sys/ufs/ffs/ffs_snapshot.c:636
#16 0xc028c798 in ffs_snapshot (mp=0xc8611600, 
snapfile=0x80b0460 /var/.fsck_snapshot)
at /usr/src/sys/ufs/ffs/ffs_snapshot.c:469
#17 0xc0294bcc in ffs_mount (mp=0xc8611600, path=0xc8fea900 /var, 
data=0xbfbffccc `\004\013\b9m\005\bØ\b\013\b\035, ndp=0xc9033c18, 
td=0xc902e100) at /usr/src/sys/ufs/ffs/ffs_vfsops.c:289
#18 0xc0220df9 in vfs_mount (td=0xc902e100, fstype=0xc85a33c0 ffs, 
fspath=0xc8fea900 /var, fsflags=268435456, fsdata=0xbfbffccc)
at /usr/src/sys/kern/vfs_syscalls.c:916
#19 0xc02206e6 in mount (td=0xc902e100, uap=0xc9033d20)
at /usr/src/sys/kern/vfs_syscalls.c:681
#20 0xc02dfe84 in syscall (frame={tf_fs = 47, tf_es = 47, tf_ds = 47, 
  tf_edi = 134955942, tf_esi = -1077936948, tf_ebp = -1077936836, 
  tf_isp = -922534540, tf_ebx = 134955852, tf_edx = 134955776, 
---Type return to continue, or q return to quit---
  tf_ecx = -1077937272, tf_eax = 21, tf_trapno = 12, tf_err = 2, 
  tf_eip = 134558071, tf_cs = 31, tf_eflags = 518, tf_esp = -1077937120, 
  tf_ss = 47}) at /usr/src/sys/i386/i386/trap.c:1037
#21 0xc02d27bd in syscall_with_err_pushed ()
#22 0x804c2fd in ?? ()
#23 0x8048137 in ?? ()
(kgdb) fr 13
#13 0xc01d5154 in free (addr=0xc8bf27e0, type=0xc0363840)
at /usr/src/sys/vm/uma_int.h:326
326 SLIST_FOREACH(slab, hash-uh_slab_hash[hval], us_hlink) {
(kgdb) print slab
$1 = 0x0
(kgdb) print 

Re: Bluetooth stack for FreeBSD

2002-04-16 Thread Maksim Yevmenkin

Julian,

thanks for the comments, as always i found them very useful :)
i have combined both e-mail into one and included my answers
inline.

 ng_btsocket.c: unmodified: line 674
 sbappendrecord(pcb-so-so_snd, m);
 m = m_dup(m, M_TRYWAIT);
 if (m == NULL) {
 error = ENOBUFS;
 goto drop1;
 }
 
 you are m_dup'ing an mbuf you have given away to the socket layer.
 on an SMP system this may already be destroyed by the time
 you do the m_dup() in fact if the sbappendrecord() fails
 due to a full queue, it may already be invalid...

fixed. thanks.

 also all functions should be 'prototype format'
 e.g.
 static int
 ng_btsocket_peeraddr(so, nam)
 struct socket*so;
 struct sockaddr **nam;
 {
 should be:
 static int
 ng_btsocket_peeraddr(struct socket *so, struct sockaddr **nam)
 {
 
 also:
 __P() is now deprecated and should not be used in new code.

i should read style(9) more often. i fixed my code.
 
 Your idea of making a special bluetooth socket type, implemented by
 a Netgraph node is interesting. Maybe we should it easier to do this
 by extending the netgraph socket type with the ability to
 make sockets of arbitrary types... i.e. register a node type that acts
 as a 'subtype' of the 'socket' type, and inherrits generic
 socket behaviour, but allow the 'child type' to specify
 other parts to replace normal behaviour.. I guess we would need to see a
 few more cases of this done before we could deduce what is
 likely to be a good candidate for abstraction.

i must admit that current socket implementation is a mess :( 
my original plan was to use Netgraph sockets only and then
write several user space libraries to perform actual connection.
of course that idea had its own disadvantages. so i wrote
sockets layer. i will try to clean up it a little bit (remove
mutexes etc.) and also there probably should be support for HCI 
and raw L2CAP sockets as well. 

 you ask:
 /*
  * XXX FIXME/VERIFY i assume here that hook is a pointer
  * to the local hook we have received message from. For
  * L2CAP messages hook is required.
  */
 
 This is true for 5.0
 in 4.x there is no such thing as an arrival hook for a message.
 You should however not assume that it is non-NULL. test it in
 normal running code.. not in a KASSERT.

fixed.

 ok, read a bit more:

  []

 Any node that changes it's internal state with reception of DATA 
 (as opposed to control messages) should ensure that it by doing:
 NG_NODE_FORCE_WRITER(node);
 
 This is because in the default state, multiple data messages may 
 (under SMP) be transitting the node at a time, as they 
 only take out READER locks. If DATA can change some state variable or
 similar then this becomes unsafe, and they should be serialised.
 If only SOME data can do this, you have the option to takew reader-locks
 and only after confirming that a message is a writer, upgrade to a writer
 lock by 'requeueing' it as such. Alternatively teh sender can mark a
 packet as 'writer'.

initially all nodes were WRITERs to release the stack, but then i
changed my strategy and now i'm serializing data at the edge of graph.
for example both bt3c and h4 nodes will NG_HOOK_FORCE_WRITER on 
upstream hook. also i probably should should turn WRITER bit on ctl
hook for HCI node  since it accepts data. L2CAP node accepts whole 
L2CAP packet from upstream hook, so (i think) it should be fine unless
these packets gets re-ordered somehow. protocols that run over L2CAP 
may not like it.

is it possible that SMP Netgraph can re-order data? if so then sockets
node probably should turn WRITER bit on downstream hooks too.
 
 NG_NODE_PRIVATE(NG_HOOK_NODE(hook))
 can be saved if you store information relavant to a hook in it's own 
 private data pointer..
 In some nodes I store the same data in NG_HOOK_PRIVATE(hook)
 as is in NG_NODE_PRIVATE(node), just to save the dereference
 if it's going to be done per packet. Sometimes there are better things to
 store there however..

i'm sorry, but i'm not sure what do you mean here. i use such calls
in several places (connect, disconnect, rcvdata) to get to the node
private structure, but (i think) it just a macros that expanded to a
couple pointer accesses. 
 
 /* Detach mbuf, discard item and process data */
 NGI_GET_M(item, m);
 NG_FREE_ITEM(item);
 
 If there is any chance that you will need a new 'item' in a function or a
 child function, then it's worth keeping them around to save teh expense of
 re-allocating them..
 
 I guess I shuld make a macro NG_FWD_DATA_HOOK() to make this easier to
 do..

you right. i should not destroy item and use NG_FWD_ITEM_HOOK where 
required.

again thank you for your comments, i'm looking forward to hear more :)
thanks,
max

To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: Bluetooth stack for FreeBSD

2002-04-16 Thread Julian Elischer



On Tue, 16 Apr 2002, Maksim Yevmenkin wrote:

 
 initially all nodes were WRITERs to release the stack, but then i
 changed my strategy and now i'm serializing data at the edge of graph.
 for example both bt3c and h4 nodes will NG_HOOK_FORCE_WRITER on 
 upstream hook. also i probably should should turn WRITER bit on ctl
 hook for HCI node  since it accepts data. L2CAP node accepts whole 
 L2CAP packet from upstream hook, so (i think) it should be fine unless
 these packets gets re-ordered somehow. protocols that run over L2CAP 
 may not like it.
 
 is it possible that SMP Netgraph can re-order data? if so then sockets
 node probably should turn WRITER bit on downstream hooks too.

it is not likely that data is re-ordered, but remember that data may enter
the graph from different edge nodes simultaneously on different processors
so that a single node may be processing both incoming and outgoing data at
the same time unless the node itself is marked as needing a writer lock.


  
  NG_NODE_PRIVATE(NG_HOOK_NODE(hook))
  can be saved if you store information relavant to a hook in it's own 
  private data pointer..
  In some nodes I store the same data in NG_HOOK_PRIVATE(hook)
  as is in NG_NODE_PRIVATE(node), just to save the dereference
  if it's going to be done per packet. Sometimes there are better things to
  store there however..
 
 i'm sorry, but i'm not sure what do you mean here. i use such calls
 in several places (connect, disconnect, rcvdata) to get to the node
 private structure, but (i think) it just a macros that expanded to a
 couple pointer accesses. 

It's not a serious comment. just that you should be aware that one can 
sometimes simplify code by using the per-hook private information as well.

  
  /* Detach mbuf, discard item and process data */
  NGI_GET_M(item, m);
  NG_FREE_ITEM(item);
  
  If there is any chance that you will need a new 'item' in a function or a
  child function, then it's worth keeping them around to save teh expense of
  re-allocating them..
  
  I guess I shuld make a macro NG_FWD_DATA_HOOK() to make this easier to
  do..
 
 you right. i should not destroy item and use NG_FWD_ITEM_HOOK where 
 required.
 

Netgraph is not an unchangeable work.. If you have comments on things that
may mek it easier to do what you need then please let us (archie 
me) know.. 


 again thank you for your comments, i'm looking forward to hear more :)
 thanks,
 max
 



To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: ATA errors on recent -current

2002-04-16 Thread Terry Lambert

[EMAIL PROTECTED] wrote:
  As I said: it could be drive settings unrelated to the code
  itself being correct.  I've given three suggestions to verify
  this, one way or the other:
 
  1)Control the drive DMA speed down
 
 I *did* test with UDMA66 instead of UDMA100 and it was even worse...
 With UDMA100, the system switched back to PIO4 - with UDMA66 there was a system
 freeze after the second (well known) error message... :-(
 
 But I admit, this test was done some days ago, I'll try it again this evening
 (approx. 19:00 UTC)...

Was this with the atacontrol, or was it with the manufacturer
supplied utility, ibmatarw.exe or ibmata66.exe?


  2)Pretend the maximum tagged command queue depth is
smaller than it is
 
 How to?

Modify the source code and compile a new kernel.  The code has
changed, but, ~line 180 of /sys/dev/ata/ata-disk.c:

/* use tagged queueing if allowed and supported */
if (ata_tags  ad_tagsupported(adp)) {   
adp-num_tags = AD_PARAM-queuelen;
adp-flags |= AD_F_TAG_ENABLED;
adp-controller-flags |= ATA_QUEUED;

Change:
adp-num_tags = AD_PARAM-queuelen;

to:
adp-num_tags = AD_PARAM-queuelen / 2;

Or just set it to some known value less than the number supported
by your drive, as indicated by the proble message.

Note that there might have been changes to the ad_tagsupported(adp)
function, in the same file.  If so, it may be showing a false
positive for your drive.  Here is the old code:

static int
ad_tagsupported(struct ad_softc *adp)
{
const char *drives[] = {IBM-DPTA, IBM-DTLA, NULL};
int i = 0;

switch (adp-controller-chiptype) {
case 0x4d33105a: /* Promises before TX2 doesn't work with tagged queuing */
case 0x4d38105a:
case 0x0d30105a:
case 0x4d30105a:
return 0;
}

/* check that drive does DMA, has tags enabled, and is one we know works */
if (adp-controller-mode[ATA_DEV(adp-unit)] = ATA_DMA  
AD_PARAM-support.queued  AD_PARAM-enabled.queued) {
while (drives[i] != NULL) {
if (!strncmp(AD_PARAM-model, drives[i], strlen(drives[i])))   
return 1;
i++;
}
/*
 * check IBM's new obscure way of naming drives
 * we want IC (IBM CORP) and AT or AV (ATA interface)
 * but doesn't care about the other info (size, capacity etc)
 */
if (!strncmp(AD_PARAM-model, IC, 2) 
(!strncmp(AD_PARAM-model + 8, AT, 2) ||
 !strncmp(AD_PARAM-model + 8, AV, 2)))
return 1;
}
return 0;
}


  3)Toggle the write caching on the drive
 
 OK - I'm running all my disks without write cache, but I'll check this too.


Turning write caching off makes the drive work harder, as well as
making it more reliable (just like real life: the more reliable,
the harder it works 8-)).  Write caching avoids some additional
work that might otherwise slow the drive electronics.


  Until you try all three of these and report back, you can't say
  that the problem is Soren's.
 
 This is a real misunderstanding! I thought I stated clearly enough that I
 don't want to blame Soren for this obviously highly complex issue!
 Shit happens - the only ensurance against that is to stay in bed (alone! :-)

No problem.  I just wanted it made clear.  The circumstances were a
before it didn't happen/after it does happen, so it loked like
there was blame being tossed.

-- Terry

To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: ATA errors on recent -current

2002-04-16 Thread Terry Lambert

Matthias Schuendehuette wrote:
 On Tuesday, 16. April 2002 01:48 you wrote:
  [...]
  As I said: it could be drive settings unrelated to the code
  itself being correct.  I've given three suggestions to verify
  this, one way or the other:
 
  1)Control the drive DMA speed down
 
  2)Pretend the maximum tagged command queue depth is
smaller than it is
 
  3)Toggle the write caching on the drive
 
 I used 'atacontrol' to read the number of tags allowed: it is 31
 (0x1F). Perhaps Soren could tell me how to force it to, say, 0x10?

You have to modify the source code in ~line 180 of /sys/dev/ata/ata-disk.c.


 Then I tried various combinations of UDMA100/66/33 and wc=0/1 - it
 nearly doesn't change anything. If WC was enabled, I saw errors
 concerning tags 0 *and* 1, whereas without write caching only tag=0 was
 mentioned. I should say that my simple test was a 'tar cvf /dev/null
 /usr/ports' with /usr/ports on an ATA-partition. Why *Write*Caching has
 any influence here...???

I rather expected you to have *more* problems with write caching
than without, not the other way around.  I can't explain this.


 What was consistent thru all test was, that the disk operates quite
 some time until the error occures the first time. After that, it is not
 possible to access the disk in UDMA-Mode any more, regardeless *which*
 UDMA-Mode it is. 'Quite some time' means approx. 50% of /usr/ports in
 the above mentioned 'test'.
 
 After the first switch to PIO4, I umounted the filesystem and switched
 back to UDMA33 for instance - I couldn't even *mount* the filesystem
 again!
 
 But w/o Tagged Queuing the disk operates flawlessly, so I'm a bit in
 doubt, if the errors with WD-disks have the same source... but may be.

My hunch, which is why I suggested decreasing the number of
tags seen by the driver, is that the tagged queues are over
used, and this locks the disk up.  My best guess is an off-by-one
or an exceptional condition handler that was not an issue until
recently, because of a FreeBSD interrupt architecture change
having nothing to do with the driver itself (i.e. the reason it
only happens under load, and didn't happen under the same load,
before).

-- Terry

To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: ATA errors on recent -current

2002-04-16 Thread John Baldwin


On 17-Apr-2002 Terry Lambert wrote:
 What was consistent thru all test was, that the disk operates quite
 some time until the error occures the first time. After that, it is not
 possible to access the disk in UDMA-Mode any more, regardeless *which*
 UDMA-Mode it is. 'Quite some time' means approx. 50% of /usr/ports in
 the above mentioned 'test'.
 
 After the first switch to PIO4, I umounted the filesystem and switched
 back to UDMA33 for instance - I couldn't even *mount* the filesystem
 again!
 
 But w/o Tagged Queuing the disk operates flawlessly, so I'm a bit in
 doubt, if the errors with WD-disks have the same source... but may be.
 
 My hunch, which is why I suggested decreasing the number of
 tags seen by the driver, is that the tagged queues are over
 used, and this locks the disk up.  My best guess is an off-by-one
 or an exceptional condition handler that was not an issue until
 recently, because of a FreeBSD interrupt architecture change
 having nothing to do with the driver itself (i.e. the reason it
 only happens under load, and didn't happen under the same load,
 before).

Terry, we've had threaded interrupt handlers for over a year and a half
now.  If the had really broken things in this basic a fashion we wouldn't
have made it this far with running systems.  Your hypothesis about
something busted in the tagged queueing code seems sound but blaiming
this on interrupt threads doesn't make much sense to me.

-- 

John Baldwin [EMAIL PROTECTED]http://www.FreeBSD.org/~jhb/
Power Users Use the Power to Serve!  -  http://www.FreeBSD.org/

To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: ATA errors on recent -current

2002-04-16 Thread Terry Lambert

John Baldwin wrote:
  My hunch, which is why I suggested decreasing the number of
  tags seen by the driver, is that the tagged queues are over
  used, and this locks the disk up.  My best guess is an off-by-one
  or an exceptional condition handler that was not an issue until
  recently, because of a FreeBSD interrupt architecture change
  having nothing to do with the driver itself (i.e. the reason it
  only happens under load, and didn't happen under the same load,
  before).
 
 Terry, we've had threaded interrupt handlers for over a year and a half
 now.  If the had really broken things in this basic a fashion we wouldn't
 have made it this far with running systems.  Your hypothesis about
 something busted in the tagged queueing code seems sound but blaiming
 this on interrupt threads doesn't make much sense to me.

The problems don't show up, except under extreme loads, with
particular drives.

Therefore, it is still my hunch.  ;^).

Dropping the queue depth to 8 from 16 to attempt to verify my
hunch won't hurt anything, and may find the problem.  It could
still be an off-by-one error in Soren's code, as well (but I
don't think it is).

-- Terry

To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: PAM broke?

2002-04-16 Thread Terry Lambert

Dag-Erling Smorgrav wrote:
 Benno Rice [EMAIL PROTECTED] writes:
  I think des's commit that removed the _use_yp variable from
  usr.sbin/vipw/pw_util.c fixed it.  I managed to get an unresolved symbol
  error for _use_yp out of pam with the attached patch.
 
 I have a similar patch in my tree, but dlerror() keeps returning NULL,
 and I've been unable to find out why :( I ended up modifying
 _rtld_error() in rtld.c to actually print the error message.

Ugh.

It indicates that the dlerror() symbol wasn't foind un ld.so
by the glue code.

-- Terry

To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



i386 tinderbox failure

2002-04-16 Thread Dag-Erling Smorgrav

In file included from 
/d/home/des/tinderbox/src/gnu/usr.bin/cc/f771/../../../../contrib/gcc.295/f/stb.h:45,
 from 
/d/home/des/tinderbox/src/gnu/usr.bin/cc/f771/../../../../contrib/gcc.295/f/stb.c:91:
/d/home/des/tinderbox/src/gnu/usr.bin/cc/f771/../../../../contrib/gcc.295/f/str.h:45: 
str-1t.h: No such file or directory
/d/home/des/tinderbox/src/gnu/usr.bin/cc/f771/../../../../contrib/gcc.295/f/str.h:46: 
str-fo.h: No such file or directory
/d/home/des/tinderbox/src/gnu/usr.bin/cc/f771/../../../../contrib/gcc.295/f/str.h:47: 
str-io.h: No such file or directory
/d/home/des/tinderbox/src/gnu/usr.bin/cc/f771/../../../../contrib/gcc.295/f/str.h:48: 
str-nq.h: No such file or directory
/d/home/des/tinderbox/src/gnu/usr.bin/cc/f771/../../../../contrib/gcc.295/f/str.h:49: 
str-ot.h: No such file or directory
/d/home/des/tinderbox/src/gnu/usr.bin/cc/f771/../../../../contrib/gcc.295/f/str.h:50: 
str-op.h: No such file or directory
/d/home/des/tinderbox/src/gnu/usr.bin/cc/f771/../../../../contrib/gcc.295/f/str.h:51: 
str-2t.h: No such file or directory
In file included from 
/d/home/des/tinderbox/src/gnu/usr.bin/cc/f771/../../../../contrib/gcc.295/f/stc.h:46,
 from 
/d/home/des/tinderbox/src/gnu/usr.bin/cc/f771/../../../../contrib/gcc.295/f/stc.c:70:
/d/home/des/tinderbox/src/gnu/usr.bin/cc/f771/../../../../contrib/gcc.295/f/str.h:45: 
str-1t.h: No such file or directory
/d/home/des/tinderbox/src/gnu/usr.bin/cc/f771/../../../../contrib/gcc.295/f/str.h:46: 
str-fo.h: No such file or directory
/d/home/des/tinderbox/src/gnu/usr.bin/cc/f771/../../../../contrib/gcc.295/f/str.h:47: 
str-io.h: No such file or directory
/d/home/des/tinderbox/src/gnu/usr.bin/cc/f771/../../../../contrib/gcc.295/f/str.h:48: 
str-nq.h: No such file or directory
/d/home/des/tinderbox/src/gnu/usr.bin/cc/f771/../../../../contrib/gcc.295/f/str.h:49: 
str-ot.h: No such file or directory
/d/home/des/tinderbox/src/gnu/usr.bin/cc/f771/../../../../contrib/gcc.295/f/str.h:50: 
str-op.h: No such file or directory
/d/home/des/tinderbox/src/gnu/usr.bin/cc/f771/../../../../contrib/gcc.295/f/str.h:51: 
str-2t.h: No such file or directory
In file included from 
/d/home/des/tinderbox/src/gnu/usr.bin/cc/f771/../../../../contrib/gcc.295/f/std.h:45,
 from 
/d/home/des/tinderbox/src/gnu/usr.bin/cc/f771/../../../../contrib/gcc.295/f/std.c:36:
/d/home/des/tinderbox/src/gnu/usr.bin/cc/f771/../../../../contrib/gcc.295/f/str.h:45: 
str-1t.h: No such file or directory
/d/home/des/tinderbox/src/gnu/usr.bin/cc/f771/../../../../contrib/gcc.295/f/str.h:46: 
str-fo.h: No such file or directory
/d/home/des/tinderbox/src/gnu/usr.bin/cc/f771/../../../../contrib/gcc.295/f/str.h:47: 
str-io.h: No such file or directory
/d/home/des/tinderbox/src/gnu/usr.bin/cc/f771/../../../../contrib/gcc.295/f/str.h:48: 
str-nq.h: No such file or directory
/d/home/des/tinderbox/src/gnu/usr.bin/cc/f771/../../../../contrib/gcc.295/f/str.h:49: 
str-ot.h: No such file or directory
/d/home/des/tinderbox/src/gnu/usr.bin/cc/f771/../../../../contrib/gcc.295/f/str.h:50: 
str-op.h: No such file or directory
/d/home/des/tinderbox/src/gnu/usr.bin/cc/f771/../../../../contrib/gcc.295/f/str.h:51: 
str-2t.h: No such file or directory
In file included from 
/d/home/des/tinderbox/src/gnu/usr.bin/cc/f771/../../../../contrib/gcc.295/f/ste.h:45,
 from 
/d/home/des/tinderbox/src/gnu/usr.bin/cc/f771/../../../../contrib/gcc.295/f/ste.c:40:
/d/home/des/tinderbox/src/gnu/usr.bin/cc/f771/../../../../contrib/gcc.295/f/str.h:45: 
str-1t.h: No such file or directory
/d/home/des/tinderbox/src/gnu/usr.bin/cc/f771/../../../../contrib/gcc.295/f/str.h:46: 
str-fo.h: No such file or directory
/d/home/des/tinderbox/src/gnu/usr.bin/cc/f771/../../../../contrib/gcc.295/f/str.h:47: 
str-io.h: No such file or directory
/d/home/des/tinderbox/src/gnu/usr.bin/cc/f771/../../../../contrib/gcc.295/f/str.h:48: 
str-nq.h: No such file or directory
/d/home/des/tinderbox/src/gnu/usr.bin/cc/f771/../../../../contrib/gcc.295/f/str.h:49: 
str-ot.h: No such file or directory
/d/home/des/tinderbox/src/gnu/usr.bin/cc/f771/../../../../contrib/gcc.295/f/str.h:50: 
str-op.h: No such file or directory
/d/home/des/tinderbox/src/gnu/usr.bin/cc/f771/../../../../contrib/gcc.295/f/str.h:51: 
str-2t.h: No such file or directory
In file included from 
/d/home/des/tinderbox/src/gnu/usr.bin/cc/f771/../../../../contrib/gcc.295/f/str.c:35:
/d/home/des/tinderbox/src/gnu/usr.bin/cc/f771/../../../../contrib/gcc.295/f/str.h:45: 
str-1t.h: No such file or directory
/d/home/des/tinderbox/src/gnu/usr.bin/cc/f771/../../../../contrib/gcc.295/f/str.h:46: 
str-fo.h: No such file or directory
/d/home/des/tinderbox/src/gnu/usr.bin/cc/f771/../../../../contrib/gcc.295/f/str.h:47: 
str-io.h: No such file or directory
/d/home/des/tinderbox/src/gnu/usr.bin/cc/f771/../../../../contrib/gcc.295/f/str.h:48: 
str-nq.h: No such file or directory

toner cartridges

2002-04-16 Thread jor7Ui5xW

Warning
Unable to process data: 
multipart/mixed;boundary==_NextPart_000_00A1_11D12G3I.I1343N65