From: Robert Elz Date: Tue, 13 Jul 1982 09:16:32 +0000 (-0800) Subject: Allow acct file swap w/o losing any info; X-Git-Tag: BSD-4_1c_2-Snapshot-Development~3006 X-Git-Url: https://git.subgeniuskitty.com/unix-history/.git/commitdiff_plain/9b9ef909455a6ec6f0ab120327a6938997089856?hp=d0c4ed78bacec95b4c88c9587d58effc64c8b376 Allow acct file swap w/o losing any info; use NODEV for ac_tty if proc had no controlling tty. SCCS-vsn: sys/kern/kern_resource.c 4.9 --- diff --git a/usr/src/sys/kern/kern_resource.c b/usr/src/sys/kern/kern_resource.c index 44d4c58fa7..1358ee8177 100644 --- a/usr/src/sys/kern/kern_resource.c +++ b/usr/src/sys/kern/kern_resource.c @@ -30,10 +30,6 @@ sysacct() } return; } - if (acctp) { - u.u_error = EBUSY; - return; - } ip = namei(uchar, 0, 1); if(ip == NULL) return; @@ -42,6 +38,9 @@ sysacct() iput(ip); return; } + if (acctp && (acctp->i_number != ip->i_number || + acctp->i_dev != ip->i_dev)) + irele(acctp); acctp = ip; iunlock(ip); } @@ -73,7 +72,10 @@ acct() if (i = u.u_vm.vm_utime + u.u_vm.vm_stime) ap->ac_mem = (u.u_vm.vm_ixrss + u.u_vm.vm_idsrss) / i; ap->ac_io = compress((long)(u.u_vm.vm_inblk + u.u_vm.vm_oublk)); - ap->ac_tty = u.u_ttyd; + if (u.u_ttyp) + ap->ac_tty = u.u_ttyd; + else + ap->ac_tty = NODEV; ap->ac_flag = u.u_acflag; siz = ip->i_size; u.u_offset = siz;