PERFORCE change 148191 for review
Ed Schouten
ed at FreeBSD.org
Sat Aug 23 14:48:53 UTC 2008
http://perforce.freebsd.org/chv.cgi?CH=148191
Change 148191 by ed at ed_dull on 2008/08/23 14:48:07
Because we now properly clean up blocks in the queues, move the
copy error and tty_gone() check outside the actual copying code.
Do a similar thing inside ttyoutq to keep them in sync.
Affected files ...
.. //depot/projects/mpsafetty/sys/kern/tty_inq.c#7 edit
.. //depot/projects/mpsafetty/sys/kern/tty_outq.c#8 edit
Differences ...
==== //depot/projects/mpsafetty/sys/kern/tty_inq.c#7 (text+ko) ====
@@ -209,11 +209,6 @@
clen - flen, uio);
tty_lock(tp);
- if (tty_gone(tp)) {
- /* Something went bad - discard this block. */
- uma_zfree(ttyinq_zone, tib);
- return (ENXIO);
- }
/* Block can now be readded to the list. */
if (ti->ti_quota <= ti->ti_nblocks) {
uma_zfree(ttyinq_zone, tib);
@@ -221,8 +216,6 @@
TAILQ_INSERT_TAIL(&ti->ti_list, tib, tib_list);
ti->ti_nblocks++;
}
- if (error != 0)
- return (error);
} else {
char ob[TTYINQ_DATASIZE - 1];
atomic_add_long(&ttyinq_nslow, 1);
@@ -238,12 +231,12 @@
tty_unlock(tp);
error = uiomove(ob, clen - flen, uio);
tty_lock(tp);
+ }
- if (error != 0)
- return (error);
- if (tty_gone(tp))
- return (ENXIO);
- }
+ if (error != 0)
+ return (error);
+ if (tty_gone(tp))
+ return (ENXIO);
}
return (0);
==== //depot/projects/mpsafetty/sys/kern/tty_outq.c#8 (text+ko) ====
@@ -250,8 +250,6 @@
STAILQ_INSERT_TAIL(&to->to_list, tob, tob_list);
to->to_nblocks++;
}
- if (error != 0)
- return (error);
} else {
char ob[TTYOUTQ_DATASIZE - 1];
atomic_add_long(&ttyoutq_nslow, 1);
@@ -267,10 +265,9 @@
tty_unlock(tp);
error = uiomove(ob, clen, uio);
tty_lock(tp);
-
- if (error != 0)
- return (error);
}
+ if (error != 0)
+ return (error);
}
return (0);
More information about the p4-projects
mailing list