Skip site navigation (1)Skip section navigation (2)

CVS log for src/sys/fs/fifofs/fifo_vnops.c

[BACK] Up to [FreeBSD] / src / sys / fs / fifofs

Request diff between arbitrary revisions


Keyword substitution: kv
Default branch: MAIN


Revision 1.152.2.5: download - view: text, markup, annotated - select for diffs
Sun Jan 1 23:46:34 2012 UTC (5 weeks, 3 days ago) by kib
Branches: RELENG_8
Diff to: previous 1.152.2.4: preferred, colored; branchpoint 1.152: preferred, colored; next MAIN 1.153: preferred, colored
Changes since revision 1.152.2.4: +1 -1 lines
SVN rev 229246 on 2012-01-01 23:46:34Z by kib

MFC r228263:
Initialize fifoinfo fi_wgen field on open.

Revision 1.157.2.2: download - view: text, markup, annotated - select for diffs
Sun Jan 1 23:46:08 2012 UTC (5 weeks, 3 days ago) by kib
Branches: RELENG_9
Diff to: previous 1.157.2.1: preferred, colored; branchpoint 1.157: preferred, colored; next MAIN 1.158: preferred, colored
Changes since revision 1.157.2.1: +1 -1 lines
SVN rev 229245 on 2012-01-01 23:46:08Z by kib

MFC r228263:
Initialize fifoinfo fi_wgen field on open.

Revision 1.158: download - view: text, markup, annotated - select for diffs
Sun Dec 4 19:25:49 2011 UTC (2 months ago) by kib
Branches: MAIN
CVS tags: HEAD
Diff to: previous 1.157: preferred, colored
Changes since revision 1.157: +1 -1 lines
SVN rev 228263 on 2011-12-04 19:25:49Z by kib

Initialize fifoinfo fi_wgen field on open. The only important is the
difference between fi_wgen and f_seqcount, so the change is purely
cosmetic, but it makes the code easier to understand.

Submitted by:	gianni
MFC after:	2 weeks

Revision 1.157.2.1.2.1: download - view: text, markup, annotated - select for diffs
Fri Nov 11 04:20:22 2011 UTC (2 months, 4 weeks ago) by kensmith
Branches: RELENG_9_0
CVS tags: RELENG_9_0_0_RELEASE
Diff to: previous 1.157.2.1: preferred, colored; next MAIN 1.157.2.2: preferred, colored
Changes since revision 1.157.2.1: +0 -0 lines
SVN rev 227445 on 2011-11-11 04:20:22Z by kensmith

Copy stable/9 to releng/9.0 as part of the FreeBSD 9.0-RELEASE release
cycle.

Approved by:	re (implicit)

Revision 1.157.2.1: download - view: text, markup, annotated - select for diffs
Fri Sep 23 00:51:37 2011 UTC (4 months, 2 weeks ago) by kensmith
Branches: RELENG_9
CVS tags: RELENG_9_0_BP
Branch point for: RELENG_9_0
Diff to: previous 1.157: preferred, colored
Changes since revision 1.157: +0 -0 lines
SVN rev 225736 on 2011-09-23 00:51:37Z by kensmith

Copy head to stable/9 as part of 9.0-RELEASE release cycle.

Approved by:	re (implicit)

Revision 1.157: download - view: text, markup, annotated - select for diffs
Tue Aug 16 20:07:47 2011 UTC (5 months, 3 weeks ago) by kib
Branches: MAIN
CVS tags: RELENG_9_BP
Branch point for: RELENG_9
Diff to: previous 1.156: preferred, colored
Changes since revision 1.156: +2 -0 lines
SVN rev 224914 on 2011-08-16 20:07:47Z by kib

Add the fo_chown and fo_chmod methods to struct fileops and use them
to implement fchown(2) and fchmod(2) support for several file types
that previously lacked it. Add MAC entries for chown/chmod done on
posix shared memory and (old) in-kernel posix semaphores.

Based on the submission by:	glebius
Reviewed by:	rwatson
Approved by:	re (bz)

Revision 1.138.2.5.4.1: download - view: text, markup, annotated - select for diffs
Tue Dec 21 17:10:29 2010 UTC (13 months, 2 weeks ago) by kensmith
Branches: RELENG_7_4
CVS tags: RELENG_7_4_0_RELEASE
Diff to: previous 1.138.2.5: preferred, colored; next MAIN 1.139: preferred, colored
Changes since revision 1.138.2.5: +0 -0 lines
SVN rev 216618 on 2010-12-21 17:10:29Z by kensmith

Copy stable/7 to releng/7.4 in preparation for FreeBSD-7.4 release.

Approved by:	re (implicit)

Revision 1.152.2.4.4.1: download - view: text, markup, annotated - select for diffs
Tue Dec 21 17:09:25 2010 UTC (13 months, 2 weeks ago) by kensmith
Branches: RELENG_8_2
CVS tags: RELENG_8_2_0_RELEASE
Diff to: previous 1.152.2.4: preferred, colored; next MAIN 1.152.2.5: preferred, colored
Changes since revision 1.152.2.4: +0 -0 lines
SVN rev 216617 on 2010-12-21 17:09:25Z by kensmith

Copy stable/8 to releng/8.2 in preparation for FreeBSD-8.2 release.

Approved by:	re (implicit)

Revision 1.152.2.4.2.1: download - view: text, markup, annotated - select for diffs
Mon Jun 14 02:09:06 2010 UTC (19 months, 3 weeks ago) by kensmith
Branches: RELENG_8_1
CVS tags: RELENG_8_1_0_RELEASE
Diff to: previous 1.152.2.4: preferred, colored; next MAIN 1.152.2.5: preferred, colored
Changes since revision 1.152.2.4: +0 -0 lines
SVN rev 209145 on 2010-06-14 02:09:06Z by kensmith

Copy stable/8 to releng/8.1 in preparation for 8.1-RC1.

Approved by:	re (implicit)

Revision 1.152.2.4: download - view: text, markup, annotated - select for diffs
Sat Mar 27 17:22:11 2010 UTC (22 months, 2 weeks ago) by trasz
Branches: RELENG_8
CVS tags: RELENG_8_2_BP, RELENG_8_1_BP
Branch point for: RELENG_8_2, RELENG_8_1
Diff to: previous 1.152.2.3: preferred, colored; branchpoint 1.152: preferred, colored
Changes since revision 1.152.2.3: +0 -1 lines
SVN rev 205748 on 2010-03-27 17:22:11Z by trasz

MFC r197680:

Provide default implementation for VOP_ACCESS(9), so that filesystems which
want to provide VOP_ACCESSX(9) don't have to implement both.  Note that
this commit makes implementation of either of these two mandatory.

Reviewed by:	kib

Revision 1.138.2.5.2.1: download - view: text, markup, annotated - select for diffs
Wed Feb 10 00:26:20 2010 UTC (23 months, 4 weeks ago) by kensmith
Branches: RELENG_7_3
CVS tags: RELENG_7_3_0_RELEASE
Diff to: previous 1.138.2.5: preferred, colored; next MAIN 1.139: preferred, colored
Changes since revision 1.138.2.5: +0 -0 lines
SVN rev 203736 on 2010-02-10 00:26:20Z by kensmith

Copy stable/7 to releng/7.3 as part of the 7.3-RELEASE process.

Approved by:	re (implicit)

Revision 1.113.2.21: download - view: text, markup, annotated - select for diffs
Tue Nov 24 14:40:50 2009 UTC (2 years, 2 months ago) by attilio
Branches: RELENG_6
Diff to: previous 1.113.2.20: preferred, colored; branchpoint 1.113: preferred, colored; next MAIN 1.114: preferred, colored
Changes since revision 1.113.2.20: +8 -8 lines
SVN rev 199750 on 2009-11-24 14:40:50Z by attilio

MFC 199007:
Fix a memory leak.

Revision 1.138.2.5: download - view: text, markup, annotated - select for diffs
Sun Nov 22 23:46:44 2009 UTC (2 years, 2 months ago) by attilio
Branches: RELENG_7
CVS tags: RELENG_7_4_BP, RELENG_7_3_BP
Branch point for: RELENG_7_4, RELENG_7_3
Diff to: previous 1.138.2.4: preferred, colored; branchpoint 1.138: preferred, colored; next MAIN 1.139: preferred, colored
Changes since revision 1.138.2.4: +9 -8 lines
SVN rev 199682 on 2009-11-22 23:46:44Z by attilio

MFC r199007:
Fix a memory leak.

Revision 1.152.2.3: download - view: text, markup, annotated - select for diffs
Sun Nov 22 16:09:27 2009 UTC (2 years, 2 months ago) by attilio
Branches: RELENG_8
Diff to: previous 1.152.2.2: preferred, colored; branchpoint 1.152: preferred, colored
Changes since revision 1.152.2.2: +9 -8 lines
SVN rev 199652 on 2009-11-22 16:09:27Z by attilio

MFC r199007:
Fix a memory leak.

Revision 1.156: download - view: text, markup, annotated - select for diffs
Fri Nov 6 22:29:46 2009 UTC (2 years, 3 months ago) by attilio
Branches: MAIN
Diff to: previous 1.155: preferred, colored
Changes since revision 1.155: +9 -8 lines
SVN rev 199007 on 2009-11-06 22:29:46Z by attilio

- Improve comments about locking of the "struct fifoinfo" which is a bit
  unclear.
- Fix a memory leak [0]

[0] Diagnosed by:	Dorr H. Clark <dclark at engr dot scu dot edu>
MFC:	1 week

Revision 1.152.2.2.2.1: download - view: text, markup, annotated - select for diffs
Sun Oct 25 01:10:29 2009 UTC (2 years, 3 months ago) by kensmith
Branches: RELENG_8_0
CVS tags: RELENG_8_0_0_RELEASE
Diff to: previous 1.152.2.2: preferred, colored; next MAIN 1.152.2.3: preferred, colored
Changes since revision 1.152.2.2: +0 -0 lines
SVN rev 198460 on 2009-10-25 01:10:29Z by kensmith

Copy stable/8 to releng/8.0 as part of 8.0-RELEASE release procedure.

Approved by:	re (implicit)

Revision 1.155: download - view: text, markup, annotated - select for diffs
Thu Oct 1 17:22:03 2009 UTC (2 years, 4 months ago) by trasz
Branches: MAIN
Diff to: previous 1.154: preferred, colored
Changes since revision 1.154: +0 -1 lines
SVN rev 197680 on 2009-10-01 17:22:03Z by trasz

Provide default implementation for VOP_ACCESS(9), so that filesystems which
want to provide VOP_ACCESSX(9) don't have to implement both.  Note that
this commit makes implementation of either of these two mandatory.

Reviewed by:	kib

Revision 1.154: download - view: text, markup, annotated - select for diffs
Sat Sep 12 20:03:45 2009 UTC (2 years, 4 months ago) by rwatson
Branches: MAIN
Diff to: previous 1.153: preferred, colored
Changes since revision 1.153: +15 -6 lines
SVN rev 197134 on 2009-09-12 20:03:45Z by rwatson

Use C99 initialization for struct filterops.

Obtained from:	Mac OS X
Sponsored by:	Apple Inc.
MFC after:	3 weeks

Revision 1.152.2.2: download - view: text, markup, annotated - select for diffs
Tue Sep 1 20:58:41 2009 UTC (2 years, 5 months ago) by jilles
Branches: RELENG_8
CVS tags: RELENG_8_0_BP
Branch point for: RELENG_8_0
Diff to: previous 1.152.2.1: preferred, colored; branchpoint 1.152: preferred, colored
Changes since revision 1.152.2.1: +3 -0 lines
SVN rev 196741 on 2009-09-01 20:58:41Z by jilles

MFC r196460

  Fix the conformance of poll(2) for sockets after r195423 by
  returning POLLHUP instead of POLLIN for several cases. Now, the
  tools/regression/poll results for FreeBSD are closer to that of the
  Solaris and Linux.

  Also, improve the POSIX conformance by explicitely clearing POLLOUT
  when POLLHUP is reported in pollscan(), making the fix global.

  Submitted by:	bde
  Reviewed by:	rwatson

MFC r196556

  Fix poll() on half-closed sockets, while retaining POLLHUP for fifos.

  This reverts part of r196460, so that sockets only return POLLHUP if both
  directions are closed/error. Fifos get POLLHUP by closing the unused
  direction immediately after creating the sockets.

  The tools/regression/poll/*poll.c tests now pass except for two other
  things:
  - if POLLHUP is returned, POLLIN is always returned as well instead of
    only when there is data left in the buffer to be read
  - fifo old/new reader distinction does not work the way POSIX specs it

  Reviewed by:	kib, bde

MFC r196554

  Add some tests for poll(2)/shutdown(2) interaction.

Approved by:	re (kensmith)

Revision 1.153: download - view: text, markup, annotated - select for diffs
Tue Aug 25 21:44:14 2009 UTC (2 years, 5 months ago) by jilles
Branches: MAIN
Diff to: previous 1.152: preferred, colored
Changes since revision 1.152: +3 -0 lines
SVN rev 196556 on 2009-08-25 21:44:14Z by jilles

Fix poll() on half-closed sockets, while retaining POLLHUP for fifos.

This reverts part of r196460, so that sockets only return POLLHUP if both
directions are closed/error. Fifos get POLLHUP by closing the unused
direction immediately after creating the sockets.

The tools/regression/poll/*poll.c tests now pass except for two other things:
- if POLLHUP is returned, POLLIN is always returned as well instead of only
  when there is data left in the buffer to be read
- fifo old/new reader distinction does not work the way POSIX specs it

Reviewed by:	kib, bde

Revision 1.152.2.1: download - view: text, markup, annotated - select for diffs
Mon Aug 3 08:13:06 2009 UTC (2 years, 6 months ago) by kensmith
Branches: RELENG_8
Diff to: previous 1.152: preferred, colored
Changes since revision 1.152: +0 -0 lines
SVN rev 196045 on 2009-08-03 08:13:06Z by kensmith

Copy head to stable/8 as part of 8.0 Release cycle.

Approved by:	re (Implicit)

Revision 1.152: download - view: text, markup, annotated - select for diffs
Tue Jul 7 09:43:44 2009 UTC (2 years, 7 months ago) by kib
Branches: MAIN
CVS tags: RELENG_8_BP
Branch point for: RELENG_8
Diff to: previous 1.151: preferred, colored
Changes since revision 1.151: +14 -20 lines
SVN rev 195423 on 2009-07-07 09:43:44Z by kib

Fix poll(2) and select(2) for named pipes to return "ready for read"
when all writers, observed by reader, exited. Use writer generation
counter for fifo, and store the snapshot of the fifo generation in the
f_seqcount field of struct file, that is otherwise unused for fifos.
Set FreeBSD-undocumented POLLINIGNEOF flag only when file f_seqcount is
equal to fifo' fi_wgen, and revert r89376.

Fix POLLINIGNEOF for sockets and pipes, and return POLLHUP for them.
Note that the patch does not fix not returning POLLHUP for fifos.

PR:	kern/94772
Submitted by:	bde (original version)
Reviewed by:	rwatson, jilles
Approved by:	re (kensmith)
MFC after:	6 weeks (might be)

Revision 1.138.2.4: download - view: text, markup, annotated - select for diffs
Wed Jun 24 09:54:05 2009 UTC (2 years, 7 months ago) by kib
Branches: RELENG_7
Diff to: previous 1.138.2.3: preferred, colored; branchpoint 1.138: preferred, colored
Changes since revision 1.138.2.3: +1 -1 lines
SVN rev 194817 on 2009-06-24 09:54:05Z by kib

MFC r193923:
s/a_fdidx/a_fp/ for VOP_OPEN comments that inline struct vop_open_args
definition.

MFC r193924:
Fix r193923 by noting that type of a_fp is struct file *, not int.

Revision 1.138.2.3: download - view: text, markup, annotated - select for diffs
Wed Jun 24 09:45:10 2009 UTC (2 years, 7 months ago) by kib
Branches: RELENG_7
Diff to: previous 1.138.2.2: preferred, colored; branchpoint 1.138: preferred, colored
Changes since revision 1.138.2.2: +2 -40 lines
SVN rev 194816 on 2009-06-24 09:45:10Z by kib

MFC r193922:
Remove unused VOP_IOCTL and VOP_KQFILTER implementations for fifofs.

Revision 1.151: download - view: text, markup, annotated - select for diffs
Wed Jun 10 14:09:05 2009 UTC (2 years, 8 months ago) by kib
Branches: MAIN
Diff to: previous 1.150: preferred, colored
Changes since revision 1.150: +1 -1 lines
SVN rev 193923 on 2009-06-10 14:09:05Z by kib

s/a_fdidx/a_fp/ for VOP_OPEN comments that inline struct vop_open_args
definition.

Discussed with:	bde
MFC after:	2 weeks

Revision 1.150: download - view: text, markup, annotated - select for diffs
Wed Jun 10 14:02:22 2009 UTC (2 years, 8 months ago) by kib
Branches: MAIN
Diff to: previous 1.149: preferred, colored
Changes since revision 1.149: +2 -40 lines
SVN rev 193922 on 2009-06-10 14:02:22Z by kib

Remove unused VOP_IOCTL and VOP_KQFILTER implementations for fifofs.

MFC after:	2 weeks

Revision 1.138.2.2.2.1: download - view: text, markup, annotated - select for diffs
Wed Apr 15 03:14:26 2009 UTC (2 years, 9 months ago) by kensmith
Branches: RELENG_7_2
CVS tags: RELENG_7_2_0_RELEASE
Diff to: previous 1.138.2.2: preferred, colored; next MAIN 1.138.2.3: preferred, colored
Changes since revision 1.138.2.2: +0 -0 lines
SVN rev 191087 on 2009-04-15 03:14:26Z by kensmith

Create releng/7.2 from stable/7 in preparation for 7.2-RELEASE.

Approved by:	re (implicit)

Revision 1.149: download - view: text, markup, annotated - select for diffs
Fri Apr 10 10:52:19 2009 UTC (2 years, 10 months ago) by rwatson
Branches: MAIN
Diff to: previous 1.148: preferred, colored
Changes since revision 1.148: +0 -1 lines
SVN rev 190888 on 2009-04-10 10:52:19Z by rwatson

Remove VOP_LEASE and supporting functions.  This hasn't been used since
the removal of NQNFS, but was left in in case it was required for NFSv4.
Since our new NFSv4 client and server can't use it for their
requirements, GC the old mechanism, as well as other unused lease-
related code and interfaces.

Due to its impact on kernel programming and binary interfaces, this
change should not be MFC'd.

Proposed by:    jeff
Reviewed by:    jeff
Discussed with: rmacklem, zach loafman @ isilon

Revision 1.138.2.2: download - view: text, markup, annotated - select for diffs
Mon Feb 9 12:22:49 2009 UTC (3 years ago) by kib
Branches: RELENG_7
CVS tags: RELENG_7_2_BP
Branch point for: RELENG_7_2
Diff to: previous 1.138.2.1: preferred, colored; branchpoint 1.138: preferred, colored
Changes since revision 1.138.2.1: +4 -1 lines
SVN rev 188389 on 2009-02-09 12:22:49Z by kib

MFC r187715:

The kernel may do unbalanced calls to fifo_close() for fifo vnode,
without corresponding number of fifo_open(). This causes assertion
failure in fifo_close() due to vp->v_fifoinfo being NULL for kernel
with INVARIANTS, or NULL pointer dereference otherwise. In fact, we may
ignore excess calls to fifo_close() without bad consequences.

Turn KASSERT() into the return, and print warning for now.

Revision 1.148: download - view: text, markup, annotated - select for diffs
Fri Feb 6 20:06:48 2009 UTC (3 years ago) by jhb
Branches: MAIN
Diff to: previous 1.147: preferred, colored
Changes since revision 1.147: +1 -0 lines
SVN rev 188244 on 2009-02-06 20:06:48Z by jhb

Tweak the output of VOP_PRINT/vn_printf() some.
- Align the fifo output in fifo_print() with other vn_printf() output.
- Remove the leading space from lockmgr_printinfo() so its output lines up
  in vn_printf().
- lockmgr_printinfo() now ends with a newline, so remove an extra newline
  from vn_printf().

Revision 1.147: download - view: text, markup, annotated - select for diffs
Wed Jan 28 18:10:57 2009 UTC (3 years ago) by jhb
Branches: MAIN
Diff to: previous 1.146: preferred, colored
Changes since revision 1.146: +2 -2 lines
SVN rev 187832 on 2009-01-28 18:10:57Z by jhb

Assert an exclusive vnode lock for fifo_cleanup() and fifo_close() since
they change v_fifoinfo.

Discussed with:	ups (a while ago)

Revision 1.146: download - view: text, markup, annotated - select for diffs
Mon Jan 26 14:21:00 2009 UTC (3 years ago) by kib
Branches: MAIN
Diff to: previous 1.145: preferred, colored
Changes since revision 1.145: +4 -1 lines
SVN rev 187715 on 2009-01-26 14:21:00Z by kib

The kernel may do unbalanced calls to fifo_close() for fifo vnode,
without corresponding number of fifo_open(). This causes assertion
failure in fifo_close() due to vp->v_fifoinfo being NULL for kernel
with INVARIANTS, or NULL pointer dereference otherwise. In fact, we may
ignore excess calls to fifo_close() without bad consequences.

Turn KASSERT() into the return, and print warning for now.

Tested by:	pho
Reviewed by:	rwatson
MFC after:	2 weeks

Revision 1.138.2.1.2.1: download - view: text, markup, annotated - select for diffs
Tue Nov 25 02:59:29 2008 UTC (3 years, 2 months ago) by kensmith
Branches: RELENG_7_1
CVS tags: RELENG_7_1_0_RELEASE
Diff to: previous 1.138.2.1: preferred, colored; next MAIN 1.138.2.2: preferred, colored
Changes since revision 1.138.2.1: +0 -0 lines
SVN rev 185281 on 2008-11-25 02:59:29Z by kensmith

Create releng/7.1 in preparation for moving into RC phase of 7.1 release
cycle.

Approved by:	re (implicit)

Revision 1.145: download - view: text, markup, annotated - select for diffs
Thu Oct 23 15:53:51 2008 UTC (3 years, 3 months ago) by des
Branches: MAIN
Diff to: previous 1.144: preferred, colored
Changes since revision 1.144: +2 -2 lines
SVN rev 184205 on 2008-10-23 15:53:51Z by des

Retire the MALLOC and FREE macros.  They are an abomination unto style(9).

MFC after:	3 months

Revision 1.113.2.20.4.1: download - view: text, markup, annotated - select for diffs
Thu Oct 2 02:57:24 2008 UTC (3 years, 4 months ago) by kensmith
Branches: RELENG_6_4
CVS tags: RELENG_6_4_0_RELEASE
Diff to: previous 1.113.2.20: preferred, colored; next MAIN 1.113.2.21: preferred, colored
Changes since revision 1.113.2.20: +0 -0 lines
SVN rev 183531 on 2008-10-02 02:57:24Z by kensmith

Create releng/6.4 from stable/6 in preparation for 6.4-RC1.

Approved by:	re (implicit)

Revision 1.138.2.1: download - view: text, markup, annotated - select for diffs
Sun Apr 27 14:24:37 2008 UTC (3 years, 9 months ago) by rwatson
Branches: RELENG_7
CVS tags: RELENG_7_1_BP
Branch point for: RELENG_7_1
Diff to: previous 1.138: preferred, colored
Changes since revision 1.138: +4 -10 lines
Remove fifo_vnops.c:1.143 from HEAD to RELENG_7:

  Remove Giant acquisition around soreceive() and sosend() in fifofs.
  The bug that caused us to reintroduce it is believed to be fixed,
  and Kris says he no longer sees problems with fifofs in highly
  parallel builds.

  Pointed out by: kris

Revision 1.144: download - view: text, markup, annotated - select for diffs
Wed Mar 12 10:11:56 2008 UTC (3 years, 10 months ago) by jeff
Branches: MAIN
Diff to: previous 1.143: preferred, colored
Changes since revision 1.143: +1 -1 lines
Remove kernel support for M:N threading.

While the KSE project was quite successful in bringing threading to
FreeBSD, the M:N approach taken by the kse library was never developed
to its full potential.  Backwards compatibility will be provided via
libmap.conf for dynamically linked binaries and static binaries will
be broken.

Revision 1.143: download - view: text, markup, annotated - select for diffs
Sat Jan 26 12:34:23 2008 UTC (4 years ago) by rwatson
Branches: MAIN
Diff to: previous 1.142: preferred, colored
Changes since revision 1.142: +4 -10 lines
Remove Giant acquisition around soreceive() and sosend() in fifofs.  The
bug that caused us to reintroduce it is believed to be fixed, and Kris
says he no longer sees problems with fifofs in highly parallel builds.
If this works out, we'll MFC it for 7.1.

MFC after:	3 months
Pointed out by:	kris

Revision 1.142: download - view: text, markup, annotated - select for diffs
Sun Jan 13 14:44:03 2008 UTC (4 years ago) by attilio
Branches: MAIN
Diff to: previous 1.141: preferred, colored
Changes since revision 1.141: +2 -2 lines
VOP_LOCK1() (and so VOP_LOCK()) and VOP_UNLOCK() are only used in
conjuction with 'thread' argument passing which is always curthread.
Remove the unuseful extra-argument and pass explicitly curthread to lower
layer functions, when necessary.

KPI results broken by this change, which should affect several ports, so
version bumping and manpage update will be further committed.

Tested by: kris, pho, Diego Sardina <siarodx at gmail dot com>

Revision 1.141: download - view: text, markup, annotated - select for diffs
Thu Jan 10 01:10:45 2008 UTC (4 years, 1 month ago) by attilio
Branches: MAIN
Diff to: previous 1.140: preferred, colored
Changes since revision 1.140: +2 -2 lines
vn_lock() is currently only used with the 'curthread' passed as argument.
Remove this argument and pass curthread directly to underlying
VOP_LOCK1() VFS method. This modify makes the code cleaner and in
particular remove an annoying dependence helping next lockmgr() cleanup.
KPI results, obviously, changed.

Manpage and FreeBSD_version will be updated through further commits.

As a side note, would be valuable to say that next commits will address
a similar cleanup about VFS methods, in particular vop_lock1 and
vop_unlock.

Tested by:	Diego Sardina <siarodx at gmail dot com>,
		Andrea Di Pasquale <whyx dot it at gmail dot com>

Revision 1.140: download - view: text, markup, annotated - select for diffs
Mon Jan 7 20:05:18 2008 UTC (4 years, 1 month ago) by jhb
Branches: MAIN
Diff to: previous 1.139: preferred, colored
Changes since revision 1.139: +9 -0 lines
Make ftruncate a 'struct file' operation rather than a vnode operation.
This makes it possible to support ftruncate() on non-vnode file types in
the future.
- 'struct fileops' grows a 'fo_truncate' method to handle an ftruncate() on
  a given file descriptor.
- ftruncate() moves to kern/sys_generic.c and now just fetches a file
  object and invokes fo_truncate().
- The vnode-specific portions of ftruncate() move to vn_truncate() in
  vfs_vnops.c which implements fo_truncate() for vnode file types.
- Non-vnode file types return EINVAL in their fo_truncate() method.

Submitted by:	rwatson

Revision 1.139: download - view: text, markup, annotated - select for diffs
Sun Dec 30 01:42:13 2007 UTC (4 years, 1 month ago) by jeff
Branches: MAIN
Diff to: previous 1.138: preferred, colored
Changes since revision 1.138: +1 -4 lines
Remove explicit locking of struct file.
 - Introduce a finit() which is used to initailize the fields of struct file
   in such a way that the ops vector is only valid after the data, type,
   and flags are valid.
 - Protect f_flag and f_count with atomic operations.
 - Remove the global list of all files and associated accounting.
 - Rewrite the unp garbage collection such that it no longer requires
   the global list of all files and instead uses a list of all unp sockets.
 - Mark sockets in the accept queue so we don't incorrectly gc them.

Tested by:	kris, pho

Revision 1.113.2.20: download - view: text, markup, annotated - select for diffs
Wed Oct 3 21:06:05 2007 UTC (4 years, 4 months ago) by jhb
Branches: RELENG_6
CVS tags: RELENG_6_4_BP, RELENG_6_3_BP, RELENG_6_3_0_RELEASE, RELENG_6_3
Branch point for: RELENG_6_4
Diff to: previous 1.113.2.19: preferred, colored; branchpoint 1.113: preferred, colored
Changes since revision 1.113.2.19: +1 -1 lines
MFC: Always use an exclusive lock on the leaf vnode during an open() when
shared lookups are enabled.  This closes a few races including a race where
concurrent opens of a fifo could result in different v_fifoinfo structures
in different threads.

Revision 1.138: download - view: text, markup, annotated - select for diffs
Thu Jul 26 16:58:09 2007 UTC (4 years, 6 months ago) by pjd
Branches: MAIN
CVS tags: RELENG_7_BP, RELENG_7_0_BP, RELENG_7_0_0_RELEASE, RELENG_7_0
Branch point for: RELENG_7
Diff to: previous 1.137: preferred, colored
Changes since revision 1.137: +1 -1 lines
When we do open, we should lock the vnode exclusively. This fixes few races:
- fifo race, where two threads assign v_fifoinfo,
- v_writecount modifications,
- v_object modifications,
- and probably more...

Discussed with:	kib, ups
Approved by:	re (rwatson)

Revision 1.137: download - view: text, markup, annotated - select for diffs
Thu May 31 11:51:50 2007 UTC (4 years, 8 months ago) by kib
Branches: MAIN
Diff to: previous 1.136: preferred, colored
Changes since revision 1.136: +3 -4 lines
Revert UF_OPENING workaround for CURRENT.
Change the VOP_OPEN(), vn_open() vnode operation and d_fdopen() cdev operation
argument from being file descriptor index into the pointer to struct file.

Proposed and reviewed by:	jhb
Reviewed by:	daichi (unionfs)
Approved by:	re (kensmith)

Revision 1.136: download - view: text, markup, annotated - select for diffs
Wed Apr 4 09:11:32 2007 UTC (4 years, 10 months ago) by rwatson
Branches: MAIN
Diff to: previous 1.135: preferred, colored
Changes since revision 1.135: +3 -1 lines
Replace custom file descriptor array sleep lock constructed using a mutex
and flags with an sxlock.  This leads to a significant and measurable
performance improvement as a result of access to shared locking for
frequent lookup operations, reduced general overhead, and reduced overhead
in the event of contention.  All of these are imported for threaded
applications where simultaneous access to a shared file descriptor array
occurs frequently.  Kris has reported 2x-4x transaction rate improvements
on 8-core MySQL benchmarks; smaller improvements can be expected for many
workloads as a result of reduced overhead.

- Generally eliminate the distinction between "fast" and regular
  acquisisition of the filedesc lock; the plan is that they will now all
  be fast.  Change all locking instances to either shared or exclusive
  locks.

- Correct a bug (pointed out by kib) in fdfree() where previously msleep()
  was called without the mutex held; sx_sleep() is now always called with
  the sxlock held exclusively.

- Universally hold the struct file lock over changes to struct file,
  rather than the filedesc lock or no lock.  Always update the f_ops
  field last. A further memory barrier is required here in the future
  (discussed with jhb).

- Improve locking and reference management in linux_at(), which fails to
  properly acquire vnode references before using vnode pointers.  Annotate
  improper use of vn_fullpath(), which will be replaced at a future date.

In fcntl(), we conservatively acquire an exclusive lock, even though in
some cases a shared lock may be sufficient, which should be revisited.
The dropping of the filedesc lock in fdgrowtable() is no longer required
as the sxlock can be held over the sleep operation; we should consider
removing that (pointed out by attilio).

Tested by:	kris
Discussed with:	jhb, kris, attilio, jeff

Revision 1.135: download - view: text, markup, annotated - select for diffs
Fri Mar 2 00:10:11 2007 UTC (4 years, 11 months ago) by mpp
Branches: MAIN
Diff to: previous 1.134: preferred, colored
Changes since revision 1.134: +4 -0 lines
Change fifo_printinfo to check if the vnode v_fifoinfo pointer
is NULL and print a message to that effect to prevent a panic.

Revision 1.113.2.19: download - view: text, markup, annotated - select for diffs
Tue Mar 28 12:42:20 2006 UTC (5 years, 10 months ago) by rwatson
Branches: RELENG_6
CVS tags: RELENG_6_2_BP, RELENG_6_2_0_RELEASE, RELENG_6_2, RELENG_6_1_BP, RELENG_6_1_0_RELEASE, RELENG_6_1
Diff to: previous 1.113.2.18: preferred, colored; branchpoint 1.113: preferred, colored
Changes since revision 1.113.2.18: +1 -0 lines
Merge fifo_vnops.c:1.134 from HEAD to RELENG_6:

  Add a_fdidx to comment prototype for fifo_open().

  Submitted by:   Kostik Belousov <kostikbel at gmail dot com>

Approved by:	re (mux)

Revision 1.113.2.18: download - view: text, markup, annotated - select for diffs
Mon Mar 20 14:24:21 2006 UTC (5 years, 10 months ago) by rwatson
Branches: RELENG_6
Diff to: previous 1.113.2.17: preferred, colored; branchpoint 1.113: preferred, colored
Changes since revision 1.113.2.17: +2 -0 lines
Merge fifo_vnops.c:1.133 from HEAD to RELENG_6:

  If fifo_open() is called with a negative file descriptor, return EINVAL
  rather than panicking later.  This can occur if the kernel calls
  vn_open() on a fifo, as there will be no associated file descriptor,
  and therefore the file descriptor operations cannot be modified to
  point to the fifo operation set.

  Reported by:    Martin <nakal at nurfuerspam dot de>
  PR:             94278

Approved by:    re (scottl)

Revision 1.134: download - view: text, markup, annotated - select for diffs
Wed Mar 15 10:15:35 2006 UTC (5 years, 10 months ago) by rwatson
Branches: MAIN
Diff to: previous 1.133: preferred, colored
Changes since revision 1.133: +1 -0 lines
Add a_fdidx to comment prototype for fifo_open().

MFC after:	3 days
Submitted by:	Kostik Belousov <kostikbel at gmail dot com>

Revision 1.133: download - view: text, markup, annotated - select for diffs
Tue Mar 14 19:29:45 2006 UTC (5 years, 10 months ago) by rwatson
Branches: MAIN
Diff to: previous 1.132: preferred, colored
Changes since revision 1.132: +2 -0 lines
If fifo_open() is called with a negative file descriptor, return EINVAL
rather than panicking later.  This can occur if the kernel calls
vn_open() on a fifo, as there will be no associated file descriptor,
and therefore the file descriptor operations cannot be modified to
point to the fifo operation set.

MFC after:	3 days
Reported by:	Martin <nakal at nurfuerspam dot de>
PR:		94278

Revision 1.113.2.17: download - view: text, markup, annotated - select for diffs
Tue Oct 4 15:33:06 2005 UTC (6 years, 4 months ago) by rwatson
Branches: RELENG_6
CVS tags: RELENG_6_0_BP, RELENG_6_0_0_RELEASE, RELENG_6_0
Diff to: previous 1.113.2.16: preferred, colored; branchpoint 1.113: preferred, colored
Changes since revision 1.113.2.16: +4 -0 lines
Merge fifo_vnops.c:1.132 from HEAD to RELENG_6:

  Second attempt at a work-around for fifo-related socket panics during
  make -j with high levels of parallelism: acquire Giant in fifo I/O
  routines.

  Discussed with: ups

Approved by:	re (scottl)

Revision 1.113.2.16: download - view: text, markup, annotated - select for diffs
Sun Oct 2 10:07:21 2005 UTC (6 years, 4 months ago) by rwatson
Branches: RELENG_6
Diff to: previous 1.113.2.15: preferred, colored; branchpoint 1.113: preferred, colored
Changes since revision 1.113.2.15: +1 -0 lines
Merge fifo_vnops.c:1.130 from HEAD to RELENG_6:

  Assert v_fifoinfo is non-NULL in fifo_close() in order to catch
  non-conforming cases sooner.

  Reported by:    Peter Holm <peter at holm dot cc>

Approved by:	re (scottl)

Revision 1.132: download - view: text, markup, annotated - select for diffs
Sat Oct 1 20:15:41 2005 UTC (6 years, 4 months ago) by rwatson
Branches: MAIN
Diff to: previous 1.131: preferred, colored
Changes since revision 1.131: +4 -0 lines
Second attempt at a work-around for fifo-related socket panics during
make -j with high levels of parallelism: acquire Giant in fifo I/O
routines.

Discussed with:	ups
MFC after:	3 days

Revision 1.101.2.10: download - view: text, markup, annotated - select for diffs
Wed Sep 28 06:56:14 2005 UTC (6 years, 4 months ago) by rwatson
Branches: RELENG_5
CVS tags: RELENG_5_5_BP, RELENG_5_5_0_RELEASE, RELENG_5_5
Diff to: previous 1.101.2.9: preferred, colored; branchpoint 1.101: preferred, colored; next MAIN 1.102: preferred, colored
Changes since revision 1.101.2.9: +2 -2 lines
Merge fifo_vnops.c:1.129 from HEAD to RELENG_5:

  Lock the read socket receive buffer when frobbing the sb_state flag on
  that socket during open, not the write socket receive buffer.

  Spotted by:     ups

Revision 1.113.2.15: download - view: text, markup, annotated - select for diffs
Wed Sep 28 06:55:02 2005 UTC (6 years, 4 months ago) by rwatson
Branches: RELENG_6
Diff to: previous 1.113.2.14: preferred, colored; branchpoint 1.113: preferred, colored
Changes since revision 1.113.2.14: +2 -2 lines
Merge fifo_vnops.c:1.129 from HEAD to RELENG_6:

  Lock the read socket receive buffer when frobbing the sb_state flag on
  that socket during open, not the write socket receive buffer.

  Spotted by:	ups

Approved by:	re (scottl)

Revision 1.101.2.9: download - view: text, markup, annotated - select for diffs
Wed Sep 28 06:48:09 2005 UTC (6 years, 4 months ago) by rwatson
Branches: RELENG_5
Diff to: previous 1.101.2.8: preferred, colored; branchpoint 1.101: preferred, colored
Changes since revision 1.101.2.8: +1 -0 lines
Merge fifo_vnops.c:1.128 from HEAD to RELENG_5:

  For reasons of consistency (and necessity), assert an exclusive vnode
  lock on the fifo vnode in fifo_open(): we rely on the vnode lock to
  serialize access to v_fifoinfo.

Revision 1.113.2.14: download - view: text, markup, annotated - select for diffs
Wed Sep 28 06:47:32 2005 UTC (6 years, 4 months ago) by rwatson
Branches: RELENG_6
Diff to: previous 1.113.2.13: preferred, colored; branchpoint 1.113: preferred, colored
Changes since revision 1.113.2.13: +1 -0 lines
Merge fifo_vnops.c:1.128 from HEAD to RELENG_6:

  For reasons of consistency (and necessity), assert an exclusive vnode
  lock on the fifo vnode in fifo_open(): we rely on the vnode lock to
  serialize access to v_fifoinfo.

Approved by:	re (scottl)

Revision 1.131: download - view: text, markup, annotated - select for diffs
Tue Sep 27 16:45:22 2005 UTC (6 years, 4 months ago) by rwatson
Branches: MAIN
Diff to: previous 1.130: preferred, colored
Changes since revision 1.130: +3 -16 lines
Back out fifo_vnops.c:1.127, which introduced an sx lock around I/O on
a fifo.  While this did indeed close the race, confirming suspicions
about the nature of the problem, it causes difficulties with blocking
I/O on fifos.

Discussed with:		ups
Also spotted by:	Peter Holm <peter at holm dot cc>

Revision 1.130: download - view: text, markup, annotated - select for diffs
Mon Sep 26 08:17:03 2005 UTC (6 years, 4 months ago) by rwatson
Branches: MAIN
Diff to: previous 1.129: preferred, colored
Changes since revision 1.129: +1 -0 lines
Assert v_fifoinfo is non-NULL in fifo_close() in order to catch
non-conforming cases sooner.

MFC after:	3 days
Reported by:	Peter Holm <peter at holm dot cc>

Revision 1.129: download - view: text, markup, annotated - select for diffs
Sun Sep 25 19:52:09 2005 UTC (6 years, 4 months ago) by rwatson
Branches: MAIN
Diff to: previous 1.128: preferred, colored
Changes since revision 1.128: +2 -2 lines
Lock the read socket receive buffer when frobbing the sb_state flag on
that socket during open, not the write socket receive buffer.  This
might explain clearing of the sb_state SB_LOCK flag seen occasionally
in soreceive() on fifos.

MFC after:	3 days
Spotted by:	ups

Revision 1.128: download - view: text, markup, annotated - select for diffs
Fri Sep 23 12:39:51 2005 UTC (6 years, 4 months ago) by rwatson
Branches: MAIN
Diff to: previous 1.127: preferred, colored
Changes since revision 1.127: +1 -0 lines
For reasons of consistency (and necessity), assert an exclusive vnode
lock on the fifo vnode in fifo_open(): we rely on the vnode lock to
serialize access to v_fifoinfo.

MFC after:	3 days

Revision 1.127: download - view: text, markup, annotated - select for diffs
Thu Sep 22 10:51:12 2005 UTC (6 years, 4 months ago) by rwatson
Branches: MAIN
Diff to: previous 1.126: preferred, colored
Changes since revision 1.126: +16 -3 lines
Add fi_sx, an sx lock to serialize I/O operations on the socket pair
underlying the POSIX fifo implementation.  In 6.x/7.x, fifo access is
moved from the VFS layer, where it was serialized using the vnode
lock, to the file descriptor layer, where access is protected by a
reference count but not serialized.  This exposed socket buffer
locking to high levels of parallelism in specific fifo workloads, such
as make -j 32, which expose as yet unresolved socket buffer bugs.

fi_sx re-adds serialization about the read and write routines,
although not paths that simply test socket buffer mbuf queue state,
such as the poll and kqueue methods.  This restores the extra locking
cost previously present in some cases, but is an effective workaround
for the instability that has been experienced.  This workaround should
be removed once the bug in socket buffer handling has been fixed.

Reported by:	kris, jhb, Julien Gabel <jpeg at thilelli dot net>,
		Peter Holm <peter at holm dot cc>, others
MFC after:	3 days

Revision 1.101.2.8: download - view: text, markup, annotated - select for diffs
Wed Sep 21 15:35:08 2005 UTC (6 years, 4 months ago) by rwatson
Branches: RELENG_5
Diff to: previous 1.101.2.7: preferred, colored; branchpoint 1.101: preferred, colored
Changes since revision 1.101.2.7: +1 -0 lines
Merge fifo_vnops.c:1.126 from HEAD to RELENG_5:

  Assert that (vp) is locked in fifo_close(), since we rely on the
  exclusive vnode lock to synchronize the reference counts on struct
  fifoinfo.

Revision 1.113.2.13: download - view: text, markup, annotated - select for diffs
Wed Sep 21 15:31:26 2005 UTC (6 years, 4 months ago) by rwatson
Branches: RELENG_6
Diff to: previous 1.113.2.12: preferred, colored; branchpoint 1.113: preferred, colored
Changes since revision 1.113.2.12: +1 -0 lines
Merge fifo_vnops.c:1.126 from HEAD to RELENG_6:

  Assert that (vp) is locked in fifo_close(), since we rely on the
  exclusive vnode lock to synchronize the reference counts on struct
  fifoinfo.

Approved by:	re (scottl)

Revision 1.101.2.7: download - view: text, markup, annotated - select for diffs
Tue Sep 20 13:58:59 2005 UTC (6 years, 4 months ago) by rwatson
Branches: RELENG_5
Diff to: previous 1.101.2.6: preferred, colored; branchpoint 1.101: preferred, colored
Changes since revision 1.101.2.6: +4 -7 lines
Merge fifo_vnops.c:1.125 from HEAD to RELENG_5:

  The socket pointers in fifoinfo are not permitted to be NULL, so
  don't check if they are, it just confuses the fifo code more.

Revision 1.113.2.12: download - view: text, markup, annotated - select for diffs
Tue Sep 20 13:57:17 2005 UTC (6 years, 4 months ago) by rwatson
Branches: RELENG_6
Diff to: previous 1.113.2.11: preferred, colored; branchpoint 1.113: preferred, colored
Changes since revision 1.113.2.11: +2 -5 lines
Merge fifo_vnops.c:1.125 from HEAD to RELENG_6:

  The socket pointers in fifoinfo are not permitted to be NULL, so
  don't check if they are, it just confuses the fifo code more.

Approved by:	re (kensmith)

Revision 1.101.2.6: download - view: text, markup, annotated - select for diffs
Tue Sep 20 13:33:07 2005 UTC (6 years, 4 months ago) by rwatson
Branches: RELENG_5
Diff to: previous 1.101.2.5: preferred, colored; branchpoint 1.101: preferred, colored
Changes since revision 1.101.2.5: +6 -18 lines
Merge fifo_vnops.c:1.123 from HEAD to RELENG_5:

  As a result of kqueue locking work, socket buffer locks will always
  be held when entering a kqueue filter for fifos via a socket buffer
  event: as such, assert the lock unconditionally rather than acquiring
  it conditionally.

Revision 1.126: download - view: text, markup, annotated - select for diffs
Sun Sep 18 10:44:50 2005 UTC (6 years, 4 months ago) by rwatson
Branches: MAIN
Diff to: previous 1.125: preferred, colored
Changes since revision 1.125: +1 -0 lines
Assert that (vp) is locked in fifo_close(), since we rely on the
exclusive vnode lock to synchronize the reference counts on struct
fifoinfo.

MFC after:	3 days

Revision 1.113.2.11: download - view: text, markup, annotated - select for diffs
Fri Sep 16 14:03:57 2005 UTC (6 years, 4 months ago) by rwatson
Branches: RELENG_6
Diff to: previous 1.113.2.10: preferred, colored; branchpoint 1.113: preferred, colored
Changes since revision 1.113.2.10: +75 -65 lines
Merge fifo_vnops.c:1.124 from HEAD to RELENG_6:

  Trim down now (believed to be) unused fifo_ioctl() and
  fifo_kqfilter() VOP implementations, since they in theory are used
  only on open file descriptors, in which case the ioctls are via
  fifo_ioctl_f() and kqueue requests are via fifo_kqfilter_f().
  Generate warnings if they are entered for now.  These printf()
  calls should become panic() calls.

  Annotate and re-implement fifo_ioctl_f(): don't arbitrarily
  forward ioctls to the socket layer, only forward the ones we
  explicitly support for fifos.  In the case of FIONREAD, don't
  forward the request to the write socket on a read-write fifo, or
  the read result is overwritten.  Annotate a nasty case for the
  undefined POSIX O_RDWR on fifos, in which failure of the second
  ioctl will result in the socket pair being in an inconsistent
  state.

  Assert copyright as I find myself rewriting non-trivial parts of
  fifofs.

Approved by:	re (scottl)

Revision 1.113.2.10: download - view: text, markup, annotated - select for diffs
Fri Sep 16 14:03:10 2005 UTC (6 years, 4 months ago) by rwatson
Branches: RELENG_6
Diff to: previous 1.113.2.9: preferred, colored; branchpoint 1.113: preferred, colored
Changes since revision 1.113.2.9: +12 -0 lines
Merge fifo_vnops.c:1.122 from HEAD to RELENG_6:

  Annotate two issues:

  1) fifo_kqfilter() is not actually ever used, it likely should be GC'd.

  2) fifo_kqfilter_f() doesn't implement EVFILT_VNODE, so detecting events
     on the underlying vnode for a fifo no longer works (it did in 4.x).
     Likely, fifo_kqfilter_f() should forward the request to the VFS using
     fp->f_vnode, which would work once fifo_kqfilter() was detached from
     the vnode operation vector (removing the fifo override).

  Discussed with: phk

Approved by:	re (scottl)

Revision 1.113.2.9: download - view: text, markup, annotated - select for diffs
Fri Sep 16 13:36:44 2005 UTC (6 years, 4 months ago) by rwatson
Branches: RELENG_6
Diff to: previous 1.113.2.8: preferred, colored; branchpoint 1.113: preferred, colored
Changes since revision 1.113.2.8: +6 -18 lines
Merge fifo_vnops.c:1.123 from HEAD to RELENG_6:

  As a result of kqueue locking work, socket buffer locks will always
  be held when entering a kqueue filter for fifos via a socket buffer
  event: as such, assert the lock unconditionally rather than acquiring
  it conditionally.

Approved by:	re (scottl)

Revision 1.101.2.5: download - view: text, markup, annotated - select for diffs
Fri Sep 16 09:06:16 2005 UTC (6 years, 4 months ago) by rwatson
Branches: RELENG_5
Diff to: previous 1.101.2.4: preferred, colored; branchpoint 1.101: preferred, colored
Changes since revision 1.101.2.4: +1 -1 lines
Merge fifo_vnops.c:1.120 (in spirit) from HEAD to RELENG_5:

  When a request is made to register a filter on a fifo that doesn't
  apply to the fifo (i.e., not EVFILT_READ or EVFILT_WRITE), reject
  it as EINVAL, not by returning 1 (EPERM).

Revision 1.101.2.4: download - view: text, markup, annotated - select for diffs
Fri Sep 16 09:02:25 2005 UTC (6 years, 4 months ago) by rwatson
Branches: RELENG_5
Diff to: previous 1.101.2.3: preferred, colored; branchpoint 1.101: preferred, colored
Changes since revision 1.101.2.3: +1 -1 lines
Merge fifo_vnops.c:1.116 from HEAD to RELENG_5:

  When a writer opens a fifo, wake up the read socket for read, not the
  write socket.

Revision 1.101.2.3: download - view: text, markup, annotated - select for diffs
Fri Sep 16 09:01:50 2005 UTC (6 years, 4 months ago) by rwatson
Branches: RELENG_5
Diff to: previous 1.101.2.2: preferred, colored; branchpoint 1.101: preferred, colored
Changes since revision 1.101.2.2: +2 -0 lines
Merge fifo_vnops.c:1.115 from HEAD to RELENG_5:

  Add an assertion that fifo_open() doesn't race against other threads
  while sleeping to allocate fifo state: due to using the vnode lock to
  serialize access to a fifo during open, it shouldn't happen (tm).

Revision 1.101.2.2: download - view: text, markup, annotated - select for diffs
Fri Sep 16 09:00:58 2005 UTC (6 years, 4 months ago) by rwatson
Branches: RELENG_5
Diff to: previous 1.101.2.1: preferred, colored; branchpoint 1.101: preferred, colored
Changes since revision 1.101.2.1: +1 -1 lines
Merge fifo_vnops.c:1.114 from HEAD to RELENG_5:

  Rather than reaching into the internals of the UNIX domain socket code
  by calling uipc_connect2() to connect two socket endpoints to create a
  fifo, call soconnect2().

Revision 1.113.2.8: download - view: text, markup, annotated - select for diffs
Thu Sep 15 20:53:56 2005 UTC (6 years, 4 months ago) by rwatson
Branches: RELENG_6
Diff to: previous 1.113.2.7: preferred, colored; branchpoint 1.113: preferred, colored
Changes since revision 1.113.2.7: +33 -1 lines
Merge fifo_vnops.c:1.121 from HEAD to RELENG_6:

  Introduce no-op nosup fifo kqueue filter and detach routine, which are
  used when a read filter is requested on a write-only fifo descriptor, or
  a write filter is requested on a read-only fifo descriptor.  This
  permits the filters to be registered, but never raises the event, which
  causes kqueue behavior for fifos to more closely match similar semantics
  for poll and select, which permit testing for the condition even though
  the condition will never be raised, and is consistent with POSIX's notion
  that a fifo has identical semantics to a one-way IPC channel created
  using pipe() on most operating systems.

  The fifo regression test suite can now run to completion on HEAD without
  errors.

Approved by:	re (kensmith)

Revision 1.113.2.7: download - view: text, markup, annotated - select for diffs
Thu Sep 15 20:50:31 2005 UTC (6 years, 4 months ago) by rwatson
Branches: RELENG_6
Diff to: previous 1.113.2.6: preferred, colored; branchpoint 1.113: preferred, colored
Changes since revision 1.113.2.6: +2 -2 lines
Merge fifo_vnops.c:1.120 from HEAD to RELENG_6:

  When a request is made to register a filter on a fifo that doesn't
  apply to the fifo (i.e., not EVFILT_READ or EVFILT_WRITE), reject
  it as EINVAL, not by returning 1 (EPERM).

Approved by:	re (kensmith)

Revision 1.113.2.6: download - view: text, markup, annotated - select for diffs
Thu Sep 15 20:50:04 2005 UTC (6 years, 4 months ago) by rwatson
Branches: RELENG_6
Diff to: previous 1.113.2.5: preferred, colored; branchpoint 1.113: preferred, colored
Changes since revision 1.113.2.5: +1 -1 lines
Merge fifo_vnops.c:1.119 from HEAD to RELENG_6:

  Remove DFLAG_SEEKABLE from fifo file descriptors: fifos are not seekable
  according to POSIX, not to mention the fact that it doesn't make sense
  (and hence isn't really implemented).  This causes the fifo_misc
  regression test to succeed.

Approved by:	re (scottl)

Revision 1.113.2.5: download - view: text, markup, annotated - select for diffs
Thu Sep 15 20:28:56 2005 UTC (6 years, 4 months ago) by rwatson
Branches: RELENG_6
Diff to: previous 1.113.2.4: preferred, colored; branchpoint 1.113: preferred, colored
Changes since revision 1.113.2.4: +2 -2 lines
Merge fifo_vnops.c:1.118 from HEAD to RELENG_6:

  Only poll the fifo for read events if the fifo is attached to a readable
  file descriptor.  Otherwise, the read end of a fifo might return that it
  is writable (which it isn't).

  Only poll the fifo for write events if the fifo attached to a writable
  file descriptor.  Otherwise, the write end of a fifo might return that
  it is readable (which it isn't).

  In the event that a file is FREAD|FWRITE (which is allowed by POSIX, but
  has undefined behavior), we poll for both.

Approved by:	re (kensmith)

Revision 1.113.2.4: download - view: text, markup, annotated - select for diffs
Thu Sep 15 20:28:27 2005 UTC (6 years, 4 months ago) by rwatson
Branches: RELENG_6
Diff to: previous 1.113.2.3: preferred, colored; branchpoint 1.113: preferred, colored
Changes since revision 1.113.2.3: +2 -2 lines
Merge fifo_vnops.c:1.117 from HEAD to RELENG_6:

  After going to some trouble to identify only the write-related events
  to poll the write socket for, the fifo polling code proceeded to poll
  for the complete set of events.  Use 'levents' instead of 'events' as
  the argument to poll, and only poll the write socket if there is
  interest in write events.

Approved by:	re (kensmith)

Revision 1.113.2.3: download - view: text, markup, annotated - select for diffs
Thu Sep 15 20:27:56 2005 UTC (6 years, 4 months ago) by rwatson
Branches: RELENG_6
Diff to: previous 1.113.2.2: preferred, colored; branchpoint 1.113: preferred, colored
Changes since revision 1.113.2.2: +1 -1 lines
Merge fifo_vnops.c:1.116 from HEAD to RELENG_6:

  When a writer opens a fifo, wake up the read socket for read, not the
  write socket.

Approved by:	re (kensmith)

Revision 1.113.2.2: download - view: text, markup, annotated - select for diffs
Thu Sep 15 20:27:25 2005 UTC (6 years, 4 months ago) by rwatson
Branches: RELENG_6
Diff to: previous 1.113.2.1: preferred, colored; branchpoint 1.113: preferred, colored
Changes since revision 1.113.2.1: +2 -0 lines
Merge fifo_vnops.c:1.115 from HEAD to RELENG_6:

  Add an assertion that fifo_open() doesn't race against other threads
  while sleeping to allocate fifo state: due to using the vnode lock to
  serialize access to a fifo during open, it shouldn't happen (tm).

Approved by:	re (kensmith)

Revision 1.113.2.1: download - view: text, markup, annotated - select for diffs
Thu Sep 15 20:26:19 2005 UTC (6 years, 4 months ago) by rwatson
Branches: RELENG_6
Diff to: previous 1.113: preferred, colored
Changes since revision 1.113: +1 -1 lines
Merge fifo_vnops.c:1.114 from HEAD to RELENG_6:

  Rather than reaching into the internals of the UNIX domain socket code
  by calling uipc_connect2() to connect two socket endpoints to create a
  fifo, call soconnect2().

Approved by:    re (kensmith)

Revision 1.125: download - view: text, markup, annotated - select for diffs
Thu Sep 15 15:45:34 2005 UTC (6 years, 4 months ago) by rwatson
Branches: MAIN
Diff to: previous 1.124: preferred, colored
Changes since revision 1.124: +2 -5 lines
The socket pointers in fifoinfo are not permitted to be NULL, so
don't check if they are, it just confuses the fifo code more.

MFC after:	3 days

Revision 1.124: download - view: text, markup, annotated - select for diffs
Tue Sep 13 17:46:48 2005 UTC (6 years, 4 months ago) by rwatson
Branches: MAIN
Diff to: previous 1.123: preferred, colored
Changes since revision 1.123: +75 -65 lines
Trim down now (believed to be) unused fifo_ioctl() and
fifo_kqfilter() VOP implementations, since they in theory are used
only on open file descriptors, in which case the ioctls are via
fifo_ioctl_f() and kqueue requests are via fifo_kqfilter_f().
Generate warnings if they are entered for now.  These printf()
calls should become panic() calls.

Annotate and re-implement fifo_ioctl_f(): don't arbitrarily
forward ioctls to the socket layer, only forward the ones we
explicitly support for fifos.  In the case of FIONREAD, don't
forward the request to the write socket on a read-write fifo, or
the read result is overwritten.  Annotate a nasty case for the
undefined POSIX O_RDWR on fifos, in which failure of the second
ioctl will result in the socket pair being in an inconsistent
state.

Assert copyright as I find myself rewriting non-trivial parts of
fifofs.

MFC after:	3 days

Revision 1.123: download - view: text, markup, annotated - select for diffs
Tue Sep 13 10:39:24 2005 UTC (6 years, 4 months ago) by rwatson
Branches: MAIN
Diff to: previous 1.122: preferred, colored
Changes since revision 1.122: +6 -18 lines
As a result of kqueue locking work, socket buffer locks will always
be held when entering a kqueue filter for fifos via a socket buffer
event: as such, assert the lock unconditionally rather than acquiring
it conditionall.

MFC after:	3 days

Revision 1.122: download - view: text, markup, annotated - select for diffs
Tue Sep 13 09:23:22 2005 UTC (6 years, 4 months ago) by rwatson
Branches: MAIN
Diff to: previous 1.121: preferred, colored
Changes since revision 1.121: +12 -0 lines
Annotate two issues:

1) fifo_kqfilter() is not actually ever used, it likely should be GC'd.

2) fifo_kqfilter_f() doesn't implement EVFILT_VNODE, so detecting events
   on the underlying vnode for a fifo no longer works (it did in 4.x).
   Likely, fifo_kqfilter_f() should forward the request to the VFS using
   fp->f_vnode, which would work once fifo_kqfilter() was detached from
   the vnode operation vector (removing the fifo override).

Discussed with:	phk

Revision 1.121: download - view: text, markup, annotated - select for diffs
Mon Sep 12 19:59:12 2005 UTC (6 years, 4 months ago) by rwatson
Branches: MAIN
Diff to: previous 1.120: preferred, colored
Changes since revision 1.120: +33 -1 lines
Introduce no-op nosup fifo kqueue filter and detach routine, which are
used when a read filter is requested on a write-only fifo descriptor, or
a write filter is requested on a read-only fifo descriptor.  This
permits the filters to be registered, but never raises the event, which
causes kqueue behavior for fifos to more closely match similar semantics
for poll and select, which permit testing for the condition even though
the condition will never be raised, and is consistent with POSIX's notion
that a fifo has identical semantics to a one-way IPC channel created
using pipe() on most operating systems.

The fifo regression test suite can now run to completion on HEAD without
errors.

MFC after:	3 days

Revision 1.120: download - view: text, markup, annotated - select for diffs
Mon Sep 12 18:07:49 2005 UTC (6 years, 4 months ago) by rwatson
Branches: MAIN
Diff to: previous 1.119: preferred, colored
Changes since revision 1.119: +2 -2 lines
When a request is made to register a filter on a fifo that doesn't
apply to the fifo (i.e., not EVFILT_READ or EVFILT_WRITE), reject
it as EINVAL, not by returning 1 (EPERM).

MFC after:	3 days

Revision 1.119: download - view: text, markup, annotated - select for diffs
Mon Sep 12 12:15:12 2005 UTC (6 years, 4 months ago) by rwatson
Branches: MAIN
Diff to: previous 1.118: preferred, colored
Changes since revision 1.118: +1 -1 lines
Remove DFLAG_SEEKABLE from fifo file descriptors: fifos are not seekable
according to POSIX, not to mention the fact that it doesn't make sense
(and hence isn't really implemented).  This causes the fifo_misc
regression test to succeed.

Revision 1.118: download - view: text, markup, annotated - select for diffs
Mon Sep 12 10:16:18 2005 UTC (6 years, 4 months ago) by rwatson
Branches: MAIN
Diff to: previous 1.117: preferred, colored
Changes since revision 1.117: +2 -2 lines
Only poll the fifo for read events if the fifo is attached to a readable
file descriptor.  Otherwise, the read end of a fifo might return that it
is writable (which it isn't).

Only poll the fifo for write events if the fifo attached to a writable
file descriptor.  Otherwise, the write end of a fifo might return that
it is readable (which it isn't).

In the event that a file is FREAD|FWRITE (which is allowed by POSIX, but
has undefined behavior), we poll for both.

MFC after:	3 days

Revision 1.117: download - view: text, markup, annotated - select for diffs
Mon Sep 12 10:13:15 2005 UTC (6 years, 4 months ago) by rwatson
Branches: MAIN
Diff to: previous 1.116: preferred, colored
Changes since revision 1.116: +2 -2 lines
After going to some trouble to identify only the write-related events
to poll the write socket for, the fifo polling code proceeded to poll
for the complete set of events.  Use 'levents' instead of 'events' as
the argument to poll, and only poll the write socket if there is
interest in write events.

MFC after:	3 days

Revision 1.116: download - view: text, markup, annotated - select for diffs
Mon Sep 12 10:07:21 2005 UTC (6 years, 4 months ago) by rwatson
Branches: MAIN
Diff to: previous 1.115: preferred, colored
Changes since revision 1.115: +1 -1 lines
When a writer opens a fifo, wake up the read socket for read, not the
write socket.

MFC after:	3 days

Revision 1.115: download - view: text, markup, annotated - select for diffs
Mon Sep 12 10:06:38 2005 UTC (6 years, 4 months ago) by rwatson
Branches: MAIN
Diff to: previous 1.114: preferred, colored
Changes since revision 1.114: +2 -0 lines
Add an assertion that fifo_open() doesn't race against other threads
while sleeping to allocate fifo state: due to using the vnode lock to
serialize access to a fifo during open, it shouldn't happen (tm).

MFC after:	3 days

Revision 1.114: download - view: text, markup, annotated - select for diffs
Mon Sep 12 10:05:08 2005 UTC (6 years, 4 months ago) by rwatson
Branches: MAIN
Diff to: previous 1.113: preferred, colored
Changes since revision 1.113: +1 -1 lines
Rather than reaching into the internals of the UNIX domain socket code
by calling uipc_connect2() to connect two socket endpoints to create a
fifo, call soconnect2().

MFC after:	3 days

Revision 1.113: download - view: text, markup, annotated - select for diffs
Sun Mar 13 12:18:23 2005 UTC (6 years, 10 months ago) by jeff
Branches: MAIN
CVS tags: RELENG_6_BP
Branch point for: RELENG_6
Diff to: previous 1.112: preferred, colored
Changes since revision 1.112: +0 -4 lines
 - The VI_DOOMED flag now signals the end of a vnode's relationship with
   the filesystem.  Check that rather than VI_XLOCK.
 - VOP_INACTIVE should no longer drop the vnode lock.
 - The vnode lock is required around calls to vrecycle() and vgone().

Sponsored by:	Isilon Systems, Inc.

Revision 1.101.2.1: download - view: text, markup, annotated - select for diffs
Mon Jan 31 23:25:56 2005 UTC (7 years ago) by imp
Branches: RELENG_5
CVS tags: RELENG_5_4_BP, RELENG_5_4_0_RELEASE, RELENG_5_4
Diff to: previous 1.101: preferred, colored
Changes since revision 1.101: +1 -1 lines
MFC: /*- and related license changes

Revision 1.112: download - view: text, markup, annotated - select for diffs
Thu Jan 13 18:59:47 2005 UTC (7 years ago) by phk
Branches: MAIN
Diff to: previous 1.111: preferred, colored
Changes since revision 1.111: +1 -0 lines
Whitespace in vop_vector{} initializations.

Revision 1.111: download - view: text, markup, annotated - select for diffs
Thu Jan 6 18:10:38 2005 UTC (7 years, 1 month ago) by imp
Branches: MAIN
Diff to: previous 1.110: preferred, colored
Changes since revision 1.110: +1 -1 lines
/* -> /*- for copyright notices, minor format tweaks as necessary

Revision 1.110: download - view: text, markup, annotated - select for diffs
Mon Dec 13 10:07:57 2004 UTC (7 years, 1 month ago) by phk
Branches: MAIN
Diff to: previous 1.109: preferred, colored
Changes since revision 1.109: +6 -8 lines
Don't forget to bypass vnodes in corner cases.

Found by:	kkenn and ports/shell/zsh
Thanks to:	jeffr

Revision 1.109: download - view: text, markup, annotated - select for diffs
Mon Dec 13 07:07:50 2004 UTC (7 years, 1 month ago) by phk
Branches: MAIN
Diff to: previous 1.108: preferred, colored
Changes since revision 1.108: +2 -0 lines
Explicitly panic vop_read/vop_write on fifos.

Revision 1.108: download - view: text, markup, annotated - select for diffs
Wed Dec 1 23:16:32 2004 UTC (7 years, 2 months ago) by phk
Branches: MAIN
Diff to: previous 1.107: preferred, colored
Changes since revision 1.107: +25 -41 lines
Back when VOP_* was introduced, we did not have new-style struct
initializations but we did have lofty goals and big ideals.

Adjust to more contemporary circumstances and gain type checking.

	Replace the entire vop_t frobbing thing with properly typed
	structures.  The only casualty is that we can not add a new
	VOP_ method with a loadable module.  History has not given
	us reason to belive this would ever be feasible in the the
	first place.

	Eliminate in toto VOCALL(), vop_t, VNODEOP_SET() etc.

	Give coda correct prototypes and function definitions for
	all vop_()s.

	Generate a bit more data from the vnode_if.src file:  a
	struct vop_vector and protype typedefs for all vop methods.

	Add a new vop_bypass() and make vop_default be a pointer
	to another struct vop_vector.

	Remove a lot of vfs_init since vop_vector is ready to use
	from the compiler.

	Cast various vop_mumble() to void * with uppercase name,
	for instance VOP_PANIC, VOP_NULL etc.

	Implement VCALL() by making vdesc_offset the offsetof() the
	relevant function pointer in vop_vector.  This is disgusting
	but since the code is generated by a script comparatively
	safe.  The alternative for nullfs etc. would be much worse.

	Fix up all vnode method vectors to remove casts so they
	become typesafe.  (The bulk of this is generated by scripts)

Revision 1.107: download - view: text, markup, annotated - select for diffs
Wed Dec 1 12:24:39 2004 UTC (7 years, 2 months ago) by phk
Branches: MAIN
Diff to: previous 1.106: preferred, colored
Changes since revision 1.106: +7 -7 lines
Mechanically change prototypes for vnode operations to use the new typedefs.

Revision 1.106: download - view: text, markup, annotated - select for diffs
Thu Nov 18 17:18:11 2004 UTC (7 years, 2 months ago) by phk
Branches: MAIN
Diff to: previous 1.105: preferred, colored
Changes since revision 1.105: +20 -1 lines
Add dropped implementation of ioctl for fifos.

Revision 1.105: download - view: text, markup, annotated - select for diffs
Wed Nov 17 07:30:02 2004 UTC (7 years, 2 months ago) by phk
Branches: MAIN
Diff to: previous 1.104: preferred, colored
Changes since revision 1.104: +6 -133 lines
Make vnode bypass for fifos (read, write, poll) mandatory.

Revision 1.104: download - view: text, markup, annotated - select for diffs
Mon Nov 15 14:51:44 2004 UTC (7 years, 2 months ago) by phk
Branches: MAIN
Diff to: previous 1.103: preferred, colored
Changes since revision 1.103: +164 -1 lines
Add file ops to fifofs so that we can bypass vnodes (and Giant) for the
heavy-duty operations (read, write, poll/select, kqueue).

Disabled for now, enable with "vfs.fifofs.fops=1" in loader.conf.

Revision 1.103: download - view: text, markup, annotated - select for diffs
Sat Nov 13 18:51:13 2004 UTC (7 years, 2 months ago) by phk
Branches: MAIN
Diff to: previous 1.102: preferred, colored
Changes since revision 1.102: +0 -19 lines
fifos doesn't need a vop_lookup, the default will do fine.

Revision 1.102: download - view: text, markup, annotated - select for diffs
Sat Nov 6 11:41:21 2004 UTC (7 years, 3 months ago) by phk
Branches: MAIN
Diff to: previous 1.101: preferred, colored
Changes since revision 1.101: +0 -1 lines
Properly implement a default version of VOP_GETWRITEMOUNT.

Remove improper access to vop_stdgetwritemount() which should and
will instead rely on the VOP default path.

Revision 1.101: download - view: text, markup, annotated - select for diffs
Sun Aug 15 06:24:40 2004 UTC (7 years, 5 months ago) by jmg
Branches: MAIN
CVS tags: RELENG_5_BP, RELENG_5_3_BP, RELENG_5_3_0_RELEASE, RELENG_5_3
Branch point for: RELENG_5
Diff to: previous 1.100: preferred, colored
Changes since revision 1.100: +5 -5 lines
Add locking to the kqueue subsystem.  This also makes the kqueue subsystem
a more complete subsystem, and removes the knowlege of how things are
implemented from the drivers.  Include locking around filter ops, so a
module like aio will know when not to be unloaded if there are outstanding
knotes using it's filter ops.

Currently, it uses the MTX_DUPOK even though it is not always safe to
aquire duplicate locks.  Witness currently doesn't support the ability
to discover if a dup lock is ok (in some cases).

Reviewed by:	green, rwatson (both earlier versions)

Revision 1.100: download - view: text, markup, annotated - select for diffs
Wed Jun 23 00:35:50 2004 UTC (7 years, 7 months ago) by rwatson
Branches: MAIN
Diff to: previous 1.99: preferred, colored
Changes since revision 1.99: +0 -1 lines
Remove unlocked read annotation for sbspace(); the read is locked.

Revision 1.99: download - view: text, markup, annotated - select for diffs
Fri Jun 18 02:57:54 2004 UTC (7 years, 7 months ago) by rwatson
Branches: MAIN
Diff to: previous 1.98: preferred, colored
Changes since revision 1.98: +27 -6 lines
Merge some additional leaf node socket buffer locking from
rwatson_netperf:

Introduce conditional locking of the socket buffer in fifofs kqueue
filters; KNOTE() will be called holding the socket buffer locks in
fifofs, but sometimes the kqueue() system call will poll using the
same entry point without holding the socket buffer lock.

Introduce conditional locking of the socket buffer in the socket
kqueue filters; KNOTE() will be called holding the socket buffer
locks in the socket code, but sometimes the kqueue() system call
will poll using the same entry points without holding the socket
buffer lock.

Simplify the logic in sodisconnect() since we no longer need spls.

NOTE: To remove conditional locking in the kqueue filters, it would
make sense to use a separate kqueue API entry into the socket/fifo
code when calling from the kqueue() system call.

Revision 1.98: download - view: text, markup, annotated - select for diffs
Thu Jun 17 22:48:09 2004 UTC (7 years, 7 months ago) by rwatson
Branches: MAIN
Diff to: previous 1.97: preferred, colored
Changes since revision 1.97: +2 -0 lines
Merge additional socket buffer locking from rwatson_netperf:

- Lock down low hanging fruit use of sb_flags with socket buffer
  lock.

- Lock down low hanging fruit use of so_state with socket lock.

- Lock down low hanging fruit use of so_options.

- Lock down low-hanging fruit use of sb_lowwat and sb_hiwat with
  socket buffer lock.

- Annotate situations in which we unlock the socket lock and then
  grab the receive socket buffer lock, which are currently actually
  the same lock.  Depending on how we want to play our cards, we
  may want to coallesce these lock uses to reduce overhead.

- Convert a if()->panic() into a KASSERT relating to so_state in
  soaccept().

- Remove a number of splnet()/splx() references.

More complex merging of socket and socket buffer locking to
follow.

Revision 1.97: download - view: text, markup, annotated - select for diffs
Tue Jun 15 03:51:43 2004 UTC (7 years, 7 months ago) by rwatson
Branches: MAIN
Diff to: previous 1.96: preferred, colored
Changes since revision 1.96: +6 -0 lines
Grab the socket buffer send or receive mutex when performing a
read-modify-write on the sb_state field.  This commit catches only
the "easy" ones where it doesn't interact with as yet unmerged
locking.

Revision 1.96: download - view: text, markup, annotated - select for diffs
Mon Jun 14 18:16:20 2004 UTC (7 years, 7 months ago) by rwatson
Branches: MAIN
Diff to: previous 1.95: preferred, colored
Changes since revision 1.95: +5 -5 lines
The socket field so_state is used to hold a variety of socket related
flags relating to several aspects of socket functionality.  This change
breaks out several bits relating to send and receive operation into a
new per-socket buffer field, sb_state, in order to facilitate locking.
This is required because, in order to provide more granular locking of
sockets, different state fields have different locking properties.  The
following fields are moved to sb_state:

  SS_CANTRCVMORE            (so_state)
  SS_CANTSENDMORE           (so_state)
  SS_RCVATMARK              (so_state)

Rename respectively to:

  SBS_CANTRCVMORE           (so_rcv.sb_state)
  SBS_CANTSENDMORE          (so_snd.sb_state)
  SBS_RCVATMARK             (so_rcv.sb_state)

This facilitates locking by isolating fields to be located with other
identically locked fields, and permits greater granularity in socket
locking by avoiding storing fields with different locking semantics in
the same short (avoiding locking conflicts).  In the future, we may
wish to coallesce sb_state and sb_flags; for the time being I leave
them separate and there is no additional memory overhead due to the
packing/alignment of shorts in the socket buffer structure.

Revision 1.95: download - view: text, markup, annotated - select for diffs
Tue Jun 1 01:18:50 2004 UTC (7 years, 8 months ago) by truckman
Branches: MAIN
Diff to: previous 1.94: preferred, colored
Changes since revision 1.94: +6 -12 lines
Add MSG_NBIO flag option to soreceive() and sosend() that causes
them to behave the same as if the SS_NBIO socket flag had been set
for this call.  The SS_NBIO flag for ordinary sockets is set by
fcntl(fd, F_SETFL, O_NONBLOCK).

Pass the MSG_NBIO flag to the soreceive() and sosend() calls in
fifo_read() and fifo_write() instead of frobbing the SS_NBIO flag
on the underlying socket for each I/O operation.  The O_NONBLOCK
flag is a property of the descriptor, and unlike ordinary sockets,
fifos may be referenced by multiple descriptors.

Revision 1.94: download - view: text, markup, annotated - select for diffs
Mon May 17 20:16:40 2004 UTC (7 years, 8 months ago) by truckman
Branches: MAIN
Diff to: previous 1.93: preferred, colored
Changes since revision 1.93: +23 -24 lines
Switch from using the vnode interlock to a private mutex in fifo_open()
to avoid lock order problems when manipulating the sockets associated
with the fifo.

Minor optimization of a couple of calls to fifo_cleanup() from
fifo_open().

Revision 1.93: download - view: text, markup, annotated - select for diffs
Wed Apr 7 20:45:59 2004 UTC (7 years, 10 months ago) by imp
Branches: MAIN
Diff to: previous 1.92: preferred, colored
Changes since revision 1.92: +0 -4 lines
Remove advertising clause from University of California Regent's
license, per letter dated July 22, 1999 and email from Peter Wemm,
Alan Cox and Robert Watson.

Approved by: core, peter, alc, rwatson

Revision 1.92: download - view: text, markup, annotated - select for diffs
Wed Mar 31 01:41:29 2004 UTC (7 years, 10 months ago) by rwatson
Branches: MAIN
Diff to: previous 1.91: preferred, colored
Changes since revision 1.91: +1 -1 lines
Export uipc_connect2() from uipc_usrreq.c instead of unp_connect2(),
and consume that interface in portalfs and fifofs instead.  In the
new world order, unp_connect2() assumes that the unpcb mutex is
held, whereas uipc_connect2() validates that the passed sockets are
UNIX domain sockets, then grabs the mutex.

NB: the portalfs and fifofs code gets down and dirty with UNIX domain
sockets.  Maybe this is a bad thing.

Revision 1.91: download - view: text, markup, annotated - select for diffs
Sun Nov 16 01:11:11 2003 UTC (8 years, 2 months ago) by truckman
Branches: MAIN
CVS tags: RELENG_5_2_BP, RELENG_5_2_1_RELEASE, RELENG_5_2_0_RELEASE, RELENG_5_2
Diff to: previous 1.90: preferred, colored
Changes since revision 1.90: +3 -6 lines
Use "fip->fi_readers == 0 && fip->fi_writers == 0" as the condition for
disposing fifo resources in fifo_cleanup() instead using of
"vp->v_usecount == 1".  There may be other references to the vnode, for
instance by nullfs, at the time fifo_open() or fifo_close() is called,
which could cause a resource leak.

Don't bother grabbing the vnode interlock in fifo_cleanup() since it no
longer accesses v_usecount.

Revision 1.90: download - view: text, markup, annotated - select for diffs
Mon Nov 10 22:21:00 2003 UTC (8 years, 3 months ago) by truckman
Branches: MAIN
Diff to: previous 1.89: preferred, colored
Changes since revision 1.89: +23 -9 lines
If fifo_open() is interrupted, fifo_close() may not get called, causing
a resource leak.  Move the resource deallocation code from fifo_close()
to a new function, fifo_cleanup(), and call fifo_cleanup() from
fifo_close() and the appropriate places in fifo_open().

Tested by: 	Lukas Ertl
Pointy hat to:	truckman

Revision 1.89: download - view: text, markup, annotated - select for diffs
Mon Jun 16 17:17:09 2003 UTC (8 years, 7 months ago) by truckman
Branches: MAIN
Diff to: previous 1.88: preferred, colored
Changes since revision 1.88: +4 -20 lines
Partially back out rev 1.87 by nuking fifo_inactive() and moving the
resource deallocation back to fifo_close().  This eliminates any
stale data that might be stuck in the socket buffers after all the
readers and writers have closed the fifo.

Tested by: Thorsten Schroeder <ths@katjusha.de>

Revision 1.88: download - view: text, markup, annotated - select for diffs
Fri Jun 13 06:58:11 2003 UTC (8 years, 8 months ago) by truckman
Branches: MAIN
Diff to: previous 1.87: preferred, colored
Changes since revision 1.87: +30 -45 lines
Clean up the fifo_open() implementation:

        Restructure the error handling portion of the resource allocation
        code to eliminate duplicated code.

        Test for the O_NONBLOCK && fi_readers == 0 case before incrementing
        fi_writers and modifying the the socket flag to avoid having to
        undo these operations in this error case.

        Restructure and simplify the code that handles blocking opens.

There should be no change to functionality.

Revision 1.87: download - view: text, markup, annotated - select for diffs
Sun Jun 1 06:24:32 2003 UTC (8 years, 8 months ago) by truckman
Branches: MAIN
Diff to: previous 1.86: preferred, colored
Changes since revision 1.86: +73 -25 lines
Fix up locking problems in fifo_open() and fifo_close():

	Sleep on the vnode interlock while waiting for another
	caller to increment fi_readers or fi_writers.  Hold the
	vnode interlock while incrementing fi_readers or fi_writers
	to prevent a wakeup from being missed.

	Only access fi_readers and fi_writers while holding the vnode
	lock.  Previously fifo_close() decremented their values without
	holding a lock.

	Move resource deallocation from fifo_close() to fifo_inactive(),
	which allows the VOP_CLOSE() call in the error return path in
	fifo_open() to be removed.  Fifo_open() was calling VOP_CLOSE()
	with the vnode lock held, in violation the current vnode locking
	API.  Also the way fifo_close() used vrefcnt() to decide whether
	to deallocate resources was bogus according to comments in the
	vrefcnt() implementation.

Reviewed by:	bde

Revision 1.86: download - view: text, markup, annotated - select for diffs
Sat May 31 18:45:32 2003 UTC (8 years, 8 months ago) by phk
Branches: MAIN
Diff to: previous 1.85: preferred, colored
Changes since revision 1.85: +1 -2 lines
Remove unused variable.

Found by:       FlexeLint

Revision 1.85: download - view: text, markup, annotated - select for diffs
Mon Mar 24 11:03:42 2003 UTC (8 years, 10 months ago) by bde
Branches: MAIN
CVS tags: RELENG_5_1_BP, RELENG_5_1_0_RELEASE, RELENG_5_1
Diff to: previous 1.84: preferred, colored
Changes since revision 1.84: +13 -8 lines
Better fix for the problem addressed by rev.1.79: don't loop in
fifo_open() waiting for another reader or writer if one arrived and
departed while we were waiting (or a little earlier).

Rev.1.79 broke blocking opens of fifos by making them time out after 1
second.  This was bad for at least apsfilter.

Tested by:	"Simon 'corecode' Schubert" <corecode@corecode.ath.cx>,
		Alexander Leidinger <Alexander@leidinger.net>,
		phk
MFC after:	4 weeks

Revision 1.84: download - view: text, markup, annotated - select for diffs
Sun Mar 2 16:54:35 2003 UTC (8 years, 11 months ago) by des
Branches: MAIN
Diff to: previous 1.83: preferred, colored
Changes since revision 1.83: +4 -4 lines
More low-hanging fruit: kill caddr_t in calls to wakeup(9) / [mt]sleep(9).

Revision 1.83: download - view: text, markup, annotated - select for diffs
Wed Feb 19 05:47:17 2003 UTC (8 years, 11 months ago) by imp
Branches: MAIN
Diff to: previous 1.82: preferred, colored
Changes since revision 1.82: +1 -1 lines
Back out M_* changes, per decision of the TRB.

Approved by: trb

Revision 1.82: download - view: text, markup, annotated - select for diffs
Tue Jan 21 08:55:46 2003 UTC (9 years ago) by alfred
Branches: MAIN
Diff to: previous 1.81: preferred, colored
Changes since revision 1.81: +1 -1 lines
Remove M_TRYWAIT/M_WAITOK/M_WAIT.  Callers should use 0.
Merge M_NOWAIT/M_DONTWAIT into a single flag M_NOWAIT.

Revision 1.81: download - view: text, markup, annotated - select for diffs
Mon Jan 13 00:28:57 2003 UTC (9 years ago) by dillon
Branches: MAIN
Diff to: previous 1.80: preferred, colored
Changes since revision 1.80: +7 -6 lines
Bow to the whining masses and change a union back into void *.  Retain
removal of unnecessary casts and throw in some minor cleanups to see if
anyone complains, just for the hell of it.

Revision 1.80: download - view: text, markup, annotated - select for diffs
Sun Jan 12 01:37:12 2003 UTC (9 years, 1 month ago) by dillon
Branches: MAIN
Diff to: previous 1.79: preferred, colored
Changes since revision 1.79: +6 -6 lines
Change struct file f_data to un_data, a union of the correct struct
pointer types, and remove a huge number of casts from code using it.

Change struct xfile xf_data to xun_data (ABI is still compatible).

If we need to add a #define for f_data and xf_data we can, but I don't
think it will be necessary.  There are no operational changes in this
commit.

Revision 1.78.2.1: download - view: text, markup, annotated - select for diffs
Thu Jan 2 19:51:07 2003 UTC (9 years, 1 month ago) by phk
Branches: RELENG_5_0
CVS tags: RELENG_5_0_0_RELEASE
Diff to: previous 1.78: preferred, colored; next MAIN 1.79: preferred, colored
Changes since revision 1.78: +6 -1 lines
MFC: Put a one-second timeout (And a XXX: comment) on a tsleep which
under certain not understood circumstances hangs sendmail during
boot.

Approved by:	re@

Revision 1.79: download - view: text, markup, annotated - select for diffs
Sun Dec 29 10:32:16 2002 UTC (9 years, 1 month ago) by phk
Branches: MAIN
Diff to: previous 1.78: preferred, colored
Changes since revision 1.78: +6 -1 lines
There is some sort of race/deadlock which I have not identified
here.  It manifests itself by sendmail hanging in "fifoow" during
boot on a diskless machine with sendmail disabled.

Giving the sleep a 1sec timout breaks the deadlock, but does not solve
the underlying problem.

XXX comment applied.

Revision 1.78: download - view: text, markup, annotated - select for diffs
Wed Oct 16 08:04:11 2002 UTC (9 years, 3 months ago) by phk
Branches: MAIN
CVS tags: RELENG_5_0_BP
Branch point for: RELENG_5_0
Diff to: previous 1.77: preferred, colored
Changes since revision 1.77: +1 -1 lines
Fix comments and one resulting code confusion about the type of the
"command" argument to VOP_IOCTL.

Spotted by:	FlexeLint.

Revision 1.77: download - view: text, markup, annotated - select for diffs
Sat Sep 28 17:14:42 2002 UTC (9 years, 4 months ago) by phk
Branches: MAIN
Diff to: previous 1.76: preferred, colored
Changes since revision 1.76: +1 -1 lines
Be consistent about "static" functions: if the function is marked
static in its prototype, mark it static at the definition too.

Inspired by:    FlexeLint warning #512

Revision 1.76: download - view: text, markup, annotated - select for diffs
Wed Sep 25 02:32:36 2002 UTC (9 years, 4 months ago) by jeff
Branches: MAIN
Diff to: previous 1.75: preferred, colored
Changes since revision 1.75: +1 -1 lines
 - Use vrefcnt() where it is safe to do so instead of doing direct and
   unlocked accesses to v_usecount.
 - Lock access to the buf lists in the various sync routines.  interlock
   locking could be avoided almost entirely in leaf filesystems if the
   fsync function had a generic helper.

Revision 1.75: download - view: text, markup, annotated - select for diffs
Wed Sep 18 20:42:02 2002 UTC (9 years, 4 months ago) by njl
Branches: MAIN
Diff to: previous 1.74: preferred, colored
Changes since revision 1.74: +0 -2 lines
Remove any VOP_PRINT that redundantly prints the tag.
Move lockmgr_printinfo() into vprint() for everyone's benefit.

Suggested by: bde

Revision 1.74: download - view: text, markup, annotated - select for diffs
Sat Sep 14 09:02:21 2002 UTC (9 years, 4 months ago) by njl
Branches: MAIN
Diff to: previous 1.73: preferred, colored
Changes since revision 1.73: +1 -1 lines
Remove all use of vnode->v_tag, replacing with appropriate substitutes.
v_tag is now const char * and should only be used for debugging.

Additionally:
1. All users of VT_NTS now check vfsconf->vf_type VFCF_NETWORK
2. The user of VT_PROCFS now checks for the new flag VV_PROCDEP, which
is propagated by pseudofs to all child vnodes if the fs sets PFS_PROCDEP.

Suggested by:   phk
Reviewed by:    bde, rwatson (earlier version)

Revision 1.73: download - view: text, markup, annotated - select for diffs
Tue Aug 20 02:17:59 2002 UTC (9 years, 5 months ago) by rwatson
Branches: MAIN
Diff to: previous 1.72: preferred, colored
Changes since revision 1.72: +3 -2 lines
Handle one more case of a fifofs filetmp: set filetmp.f_cred to
ap->a_cred, and pass in ap->a_td->td_ucred as the active_cred to
soo_poll().

Obtained from:	TrustedBSD Project
Sponsored by:	DARPA, NAI Labs

Revision 1.72: download - view: text, markup, annotated - select for diffs
Sat Aug 17 02:36:15 2002 UTC (9 years, 5 months ago) by rwatson
Branches: MAIN
Diff to: previous 1.71: preferred, colored
Changes since revision 1.71: +6 -2 lines
In continuation of early fileop credential changes, modify fo_ioctl() to
accept an 'active_cred' argument reflecting the credential of the thread
initiating the ioctl operation.

- Change fo_ioctl() to accept active_cred; change consumers of the
  fo_ioctl() interface to generally pass active_cred from td->td_ucred.
- In fifofs, initialize filetmp.f_cred to ap->a_cred so that the
  invocations of soo_ioctl() are provided access to the calling f_cred.
  Pass ap->a_td->td_ucred as the active_cred, but note that this is
  required because we don't yet distinguish file_cred and active_cred
  in invoking VOP's.
- Update kqueue_ioctl() for its new argument.
- Update pipe_ioctl() for its new argument, pass active_cred rather
  than td_ucred to MAC for authorization.
- Update soo_ioctl() for its new argument.
- Update vn_ioctl() for its new argument, use active_cred rather than
  td->td_ucred to authorize VOP_IOCTL() and the associated VOP_GETATTR().

Obtained from:	TrustedBSD Project
Sponsored by:	DARPA, NAI Labs

Revision 1.71: download - view: text, markup, annotated - select for diffs
Fri Aug 16 12:51:55 2002 UTC (9 years, 5 months ago) by rwatson
Branches: MAIN
Diff to: previous 1.70: preferred, colored
Changes since revision 1.70: +3 -2 lines
Make similar changes to fo_stat() and fo_poll() as made earlier to
fo_read() and fo_write(): explicitly use the cred argument to fo_poll()
as "active_cred" using the passed file descriptor's f_cred reference
to provide access to the file credential.  Add an active_cred
argument to fo_stat() so that implementers have access to the active
credential as well as the file credential.  Generally modify callers
of fo_stat() to pass in td->td_ucred rather than fp->f_cred, which
was redundantly provided via the fp argument.  This set of modifications
also permits threads to perform these operations on behalf of another
thread without modifying their credential.

Trickle this change down into fo_stat/poll() implementations:

- badfo_poll(), badfo_stat(): modify/add arguments.
- kqueue_poll(), kqueue_stat(): modify arguments.
- pipe_poll(), pipe_stat(): modify/add arguments, pass active_cred to
  MAC checks rather than td->td_ucred.
- soo_poll(), soo_stat(): modify/add arguments, pass fp->f_cred rather
  than cred to pru_sopoll() to maintain current semantics.
- sopoll(): moidfy arguments.
- vn_poll(), vn_statfile(): modify/add arguments, pass new arguments
  to vn_stat().  Pass active_cred to MAC and fp->f_cred to VOP_POLL()
  to maintian current semantics.
- vn_close(): rename cred to file_cred to reflect reality while I'm here.
- vn_stat(): Add active_cred and file_cred arguments to vn_stat()
  and consumers so that this distinction is maintained at the VFS
  as well as 'struct file' layer.  Pass active_cred instead of
  td->td_ucred to MAC and to VOP_GETATTR() to maintain current semantics.

- fifofs: modify the creation of a "filetemp" so that the file
  credential is properly initialized and can be used in the socket
  code if desired.  Pass ap->a_td->td_ucred as the active
  credential to soo_poll().  If we teach the vnop interface about
  the distinction between file and active credentials, we would use
  the active credential here.

Note that current inconsistent passing of active_cred vs. file_cred to
VOP's is maintained.  It's not clear why GETATTR would be authorized
using active_cred while POLL would be authorized using file_cred at
the file system level.

Obtained from:	TrustedBSD Project
Sponsored by:	DARPA, NAI Labs

Revision 1.70: download - view: text, markup, annotated - select for diffs
Fri May 31 11:52:29 2002 UTC (9 years, 8 months ago) by tanimura
Branches: MAIN
Diff to: previous 1.69: preferred, colored
Changes since revision 1.69: +4 -30 lines
Back out my lats commit of locking down a socket, it conflicts with hsu's work.

Requested by:	hsu

Revision 1.69: download - view: text, markup, annotated - select for diffs
Tue May 21 02:37:56 2002 UTC (9 years, 8 months ago) by tanimura
Branches: MAIN
Diff to: previous 1.68: preferred, colored
Changes since revision 1.68: +3 -1 lines
Lock the writer socket across sorwakeup(fip->fi_writesock).

Spotted by:	peter

Revision 1.68: download - view: text, markup, annotated - select for diffs
Mon May 20 05:41:03 2002 UTC (9 years, 8 months ago) by tanimura
Branches: MAIN
Diff to: previous 1.67: preferred, colored
Changes since revision 1.67: +28 -4 lines
Lock down a socket, milestone 1.

o Add a mutex (sb_mtx) to struct sockbuf. This protects the data in a
  socket buffer. The mutex in the receive buffer also protects the data
  in struct socket.

o Determine the lock strategy for each members in struct socket.

o Lock down the following members:

  - so_count
  - so_options
  - so_linger
  - so_state

o Remove *_locked() socket APIs.  Make the following socket APIs
  touching the members above now require a locked socket:

 - sodisconnect()
 - soisconnected()
 - soisconnecting()
 - soisdisconnected()
 - soisdisconnecting()
 - sofree()
 - soref()
 - sorele()
 - sorwakeup()
 - sotryfree()
 - sowakeup()
 - sowwakeup()

Reviewed by:	alfred

Revision 1.67: download - view: text, markup, annotated - select for diffs
Thu May 2 19:13:19 2002 UTC (9 years, 9 months ago) by phk
Branches: MAIN
Diff to: previous 1.66: preferred, colored
Changes since revision 1.66: +11 -23 lines
Use vop_panic() instead of rolling our own.

Revision 1.66: download - view: text, markup, annotated - select for diffs
Tue Apr 30 01:54:51 2002 UTC (9 years, 9 months ago) by tanimura
Branches: MAIN
Diff to: previous 1.65: preferred, colored
Changes since revision 1.65: +10 -8 lines
Revert the change of #includes in sys/filedesc.h and sys/socketvar.h.

Requested by:	bde

Since locking sigio_lock is usually followed by calling pgsigio(),
move the declaration of sigio_lock and the definitions of SIGIO_*() to
sys/signalvar.h.

While I am here, sort include files alphabetically, where possible.

Revision 1.65: download - view: text, markup, annotated - select for diffs
Thu Apr 18 14:47:34 2002 UTC (9 years, 9 months ago) by alfred
Branches: MAIN
Diff to: previous 1.64: preferred, colored
Changes since revision 1.64: +18 -20 lines
Cleanup of logic, flow and comments.

Submitted by: bde

Revision 1.64: download - view: text, markup, annotated - select for diffs
Tue Mar 19 22:19:59 2002 UTC (9 years, 10 months ago) by alfred
Branches: MAIN
Diff to: previous 1.63: preferred, colored
Changes since revision 1.63: +12 -12 lines
Remove __P.

Revision 1.63: download - view: text, markup, annotated - select for diffs
Wed Feb 27 18:31:49 2002 UTC (9 years, 11 months ago) by jhb
Branches: MAIN
Diff to: previous 1.62: preferred, colored
Changes since revision 1.62: +2 -2 lines
Simple p_ucred -> td_ucred changes to start using the per-thread ucred
reference.

Revision 1.62: download - view: text, markup, annotated - select for diffs
Mon Jan 14 22:03:48 2002 UTC (10 years ago) by alfred
Branches: MAIN
Diff to: previous 1.61: preferred, colored
Changes since revision 1.61: +28 -10 lines
Fix select on fifos.

Backout revision 1.56 and 1.57 of fifo_vnops.c.

Introduce a new poll op "POLLINIGNEOF" that can be used to ignore
EOF on a fifo, POLLIN/POLLRDNORM is converted to POLLINIGNEOF within
the FIFO implementation to effect the correct behavior.

This should allow one to view a fifo pretty much as a data source
rather than worry about connections coming and going.

Reviewed by: bde

Revision 1.61: download - view: text, markup, annotated - select for diffs
Mon Jan 14 02:18:59 2002 UTC (10 years ago) by alfred
Branches: MAIN
Diff to: previous 1.60: preferred, colored
Changes since revision 1.60: +0 -6 lines
don't initialize the mutex in the temporary struct file, the soo_*
functions just grab f_data and don't muck with anything else so this
should be ok.

this fixes a panic with invariants where it thinks we've doubly initialized
the filetmp mutex even though all we've done is neglect to bzero it.

Revision 1.60: download - view: text, markup, annotated - select for diffs
Sun Jan 13 21:37:47 2002 UTC (10 years ago) by alfred
Branches: MAIN
Diff to: previous 1.59: preferred, colored
Changes since revision 1.59: +1 -0 lines
Include sys/_lock.h and sys/_mutex.h to reduce namespace pollution.

Requested by: jhb

Revision 1.59: download - view: text, markup, annotated - select for diffs
Sun Jan 13 11:57:55 2002 UTC (10 years ago) by alfred
Branches: MAIN
Diff to: previous 1.58: preferred, colored
Changes since revision 1.58: +13 -4 lines
SMP Lock struct file, filedesc and the global file list.

Seigo Tanimura (tanimura) posted the initial delta.

I've polished it quite a bit reducing the need for locking and
adapting it for KSE.

Locks:

1 mutex in each filedesc
   protects all the fields.
   protects "struct file" initialization, while a struct file
     is being changed from &badfileops -> &pipeops or something
     the filedesc should be locked.

1 mutex in each struct file
   protects the refcount fields.
   doesn't protect anything else.
   the flags used for garbage collection have been moved to
     f_gcflag which was the FILLER short, this doesn't need
     locking because the garbage collection is a single threaded
     container.
  could likely be made to use a pool mutex.

1 sx lock for the global filelist.

struct file *	fhold(struct file *fp);
        /* increments reference count on a file */

struct file *	fhold_locked(struct file *fp);
        /* like fhold but expects file to locked */

struct file *	ffind_hold(struct thread *, int fd);
        /* finds the struct file in thread, adds one reference and
                returns it unlocked */

struct file *	ffind_lock(struct thread *, int fd);
        /* ffind_hold, but returns file locked */

I still have to smp-safe the fget cruft, I'll get to that asap.

Revision 1.58: download - view: text, markup, annotated - select for diffs
Mon Dec 31 17:45:14 2001 UTC (10 years, 1 month ago) by rwatson
Branches: MAIN
Diff to: previous 1.57: preferred, colored
Changes since revision 1.57: +4 -2 lines
o Make the credential used by socreate() an explicit argument to
  socreate(), rather than getting it implicitly from the thread
  argument.

o Make NFS cache the credential provided at mount-time, and use
  the cached credential (nfsmount->nm_cred) when making calls to
  socreate() on initially connecting, or reconnecting the socket.

This fixes bugs involving NFS over TCP and ipfw uid/gid rules, as well
as bugs involving NFS and mandatory access control implementations.

Reviewed by:	freebsd-arch

Revision 1.57: download - view: text, markup, annotated - select for diffs
Wed Dec 12 09:35:33 2001 UTC (10 years, 2 months ago) by alfred
Branches: MAIN
Diff to: previous 1.56: preferred, colored
Changes since revision 1.56: +0 -1 lines
Fix select on named pipes without a reader.

PR: kern/19871
MFC after: 1 month

Revision 1.56: download - view: text, markup, annotated - select for diffs
Thu Nov 8 10:28:32 2001 UTC (10 years, 3 months ago) by alfred
Branches: MAIN
Diff to: previous 1.55: preferred, colored
Changes since revision 1.55: +6 -1 lines
Switch behavior of fifos to more closely match what goes on in other OSes.
Basically FIFOs become a real pain to abuse as a rendevous point without
this change because you can't really select(2) on them because they always
return ready even though there is no writer (to signal EOF).

Obtained from: BSD/os

Revision 1.55: download - view: text, markup, annotated - select for diffs
Wed Sep 12 08:37:17 2001 UTC (10 years, 5 months ago) by julian
Branches: MAIN
CVS tags: KSE_MILESTONE_2
Diff to: previous 1.54: preferred, colored
Changes since revision 1.54: +25 -24 lines
KSE Milestone 2
Note ALL MODULES MUST BE RECOMPILED
make the kernel aware that there are smaller units of scheduling than the
process. (but only allow one thread per process at this time).
This is functionally equivalent to teh previousl -current except
that there is a thread associated with each process.

Sorry john! (your next MFC will be a doosie!)

Reviewed by: peter@freebsd.org, dillon@freebsd.org

X-MFC after:    ha ha ha ha

Revision 1.54: download - view: text, markup, annotated - select for diffs
Wed Jun 6 17:38:36 2001 UTC (10 years, 8 months ago) by jlemon
Branches: MAIN
CVS tags: KSE_PRE_MILESTONE_2
Diff to: previous 1.53: preferred, colored
Changes since revision 1.53: +12 -5 lines
The kq write filter was hooked up to the wrong socket, and thus was
not behaving correctly.  Fix by attaching to the correct socket.

Also call so{rw}wakeup in addition to the fifo wakeup, so that any
kqfilters attached to the socket buffer get poked.

Revision 1.53: download - view: text, markup, annotated - select for diffs
Wed May 23 09:42:09 2001 UTC (10 years, 8 months ago) by ru
Branches: MAIN
Diff to: previous 1.52: preferred, colored
Changes since revision 1.52: +2 -2 lines
- FDESC, FIFO, NULL, PORTAL, PROC, UMAP and UNION file
  systems were repo-copied from sys/miscfs to sys/fs.

- Renamed the following file systems and their modules:
  fdesc -> fdescfs, portal -> portalfs, union -> unionfs.

- Renamed corresponding kernel options:
  FDESC -> FDESCFS, PORTAL -> PORTALFS, UNION -> UNIONFS.

- Install header files for the above file systems.

- Removed bogus -I${.CURDIR}/../../sys CFLAGS from userland
  Makefiles.

Revision 1.52: download - view: text, markup, annotated - select for diffs
Sun Apr 29 11:48:36 2001 UTC (10 years, 9 months ago) by phk
Branches: MAIN
Diff to: previous 1.51: preferred, colored
Changes since revision 1.51: +1 -29 lines
Add a vop_stdbmap(), and make it part of the default vop vector.

Make 7 filesystems which don't really know about VOP_BMAP rely
on the default vector, rather than more or less complete local
vop_nopbmap() implementations.

Revision 1.45.2.2: download - view: text, markup, annotated - select for diffs
Mon Feb 26 04:23:20 2001 UTC (10 years, 11 months ago) by jlemon
Branches: old_RELENG_4
CVS tags: old_RELENG_4_3_BP, old_RELENG_4_3_0_RELEASE, old_RELENG_4_3
Diff to: previous 1.45.2.1: preferred, colored; branchpoint 1.45: preferred, colored; next MAIN 1.46: preferred, colored
Changes since revision 1.45.2.1: +38 -32 lines
MFC: sync kq up to current (extend to device layer, plus other fixes)

Revision 1.51: download - view: text, markup, annotated - select for diffs
Thu Feb 15 16:34:09 2001 UTC (10 years, 11 months ago) by jlemon
Branches: MAIN
Diff to: previous 1.50: preferred, colored
Changes since revision 1.50: +37 -31 lines
Extend kqueue down to the device layer.

Backwards compatible approach suggested by: peter

Revision 1.50: download - view: text, markup, annotated - select for diffs
Fri Aug 18 10:00:59 2000 UTC (11 years, 5 months ago) by phk
Branches: MAIN
CVS tags: old_PRE_SMPNG
Diff to: previous 1.49: preferred, colored
Changes since revision 1.49: +2 -16 lines
Introduce vop_stdinactive() and make it the default if no vop_inactive
is declared.

Sort and prune a few vop_op[].

Revision 1.49: download - view: text, markup, annotated - select for diffs
Tue Jul 11 22:07:45 2000 UTC (11 years, 7 months ago) by mckusick
Branches: MAIN
Diff to: previous 1.48: preferred, colored
Changes since revision 1.48: +2 -1 lines
Add snapshots to the fast filesystem. Most of the changes support
the gating of system calls that cause modifications to the underlying
filesystem. The gating can be enabled by any filesystem that needs
to consistently suspend operations by adding the vop_stdgetwritemount
to their set of vnops. Once gating is enabled, the function
vfs_write_suspend stops all new write operations to a filesystem,
allows any filesystem modifying system calls already in progress
to complete, then sync's the filesystem to disk and returns. The
function vfs_write_resume allows the suspended write operations to
begin again. Gating is not added by default for all filesystems as
for SMP systems it adds two extra locks to such critical kernel
paths as the write system call. Thus, gating should only be added
as needed.

Details on the use and current status of snapshots in FFS can be
found in /sys/ufs/ffs/README.snapshot so for brevity and timelyness
is not included here. Unless and until you create a snapshot file,
these changes should have no effect on your system (famous last words).

Revision 1.48: download - view: text, markup, annotated - select for diffs
Fri May 26 02:04:56 2000 UTC (11 years, 8 months ago) by jake
Branches: MAIN
Diff to: previous 1.47: preferred, colored
Changes since revision 1.47: +3 -3 lines
Back out the previous change to the queue(3) interface.
It was not discussed and should probably not happen.

Requested by:		msmith and others

Revision 1.47: download - view: text, markup, annotated - select for diffs
Tue May 23 20:37:35 2000 UTC (11 years, 8 months ago) by jake
Branches: MAIN
Diff to: previous 1.46: preferred, colored
Changes since revision 1.46: +3 -3 lines
Change the way that the queue(3) structures are declared; don't assume that
the type argument to *_HEAD and *_ENTRY is a struct.

Suggested by:	phk
Reviewed by:	phk
Approved by:	mdodd

Revision 1.45.2.1: download - view: text, markup, annotated - select for diffs
Fri May 5 03:50:08 2000 UTC (11 years, 9 months ago) by jlemon
Branches: old_RELENG_4
CVS tags: old_RELENG_4_2_0_RELEASE, old_RELENG_4_1_1_RELEASE, old_RELENG_4_1_0_RELEASE
Diff to: previous 1.45: preferred, colored
Changes since revision 1.45: +87 -1 lines
MFC: kqueue() and kevent()

Revision 1.46: download - view: text, markup, annotated - select for diffs
Sun Apr 16 18:53:38 2000 UTC (11 years, 9 months ago) by jlemon
Branches: MAIN
Diff to: previous 1.45: preferred, colored
Changes since revision 1.45: +87 -1 lines
Introduce kqueue() and kevent(), a kernel event notification facility.

Revision 1.45: download - view: text, markup, annotated - select for diffs
Wed Dec 15 23:02:04 1999 UTC (12 years, 1 month ago) by eivind
Branches: MAIN
CVS tags: old_RELENG_4_BP, old_RELENG_4_0_0_RELEASE
Branch point for: old_RELENG_4
Diff to: previous 1.44: preferred, colored
Changes since revision 1.44: +1 -2 lines
Introduce NDFREE (and remove VOP_ABORTOP)

Revision 1.9.4.2: download - view: text, markup, annotated - select for diffs
Sun Sep 5 08:33:19 1999 UTC (12 years, 5 months ago) by peter
Branches: old_RELENG_2_1_0
Diff to: previous 1.9.4.1: preferred, colored; branchpoint 1.9: preferred, colored; next MAIN 1.10: preferred, colored
Changes since revision 1.9.4.1: +1 -1 lines
$Id$ -> $FreeBSD$

Revision 1.17.2.1: download - view: text, markup, annotated - select for diffs
Sun Sep 5 08:16:35 1999 UTC (12 years, 5 months ago) by peter
Branches: old_RELENG_2_2
Diff to: previous 1.17: preferred, colored; next MAIN 1.18: preferred, colored
Changes since revision 1.17: +1 -1 lines
$Id$ -> $FreeBSD$

Revision 1.43.2.1: download - view: text, markup, annotated - select for diffs
Sun Aug 29 16:26:43 1999 UTC (12 years, 5 months ago) by peter
Branches: old_RELENG_3
CVS tags: old_RELENG_3_5_0_RELEASE, old_RELENG_3_4_0_RELEASE, old_RELENG_3_3_0_RELEASE
Diff to: previous 1.43: preferred, colored; next MAIN 1.44: preferred, colored
Changes since revision 1.43: +1 -1 lines
$Id$ -> $FreeBSD$

Revision 1.44: download - view: text, markup, annotated - select for diffs
Sat Aug 28 00:46:47 1999 UTC (12 years, 5 months ago) by peter
Branches: MAIN
Diff to: previous 1.43: preferred, colored
Changes since revision 1.43: +1 -1 lines
$Id$ -> $FreeBSD$

Revision 1.43: download - view: text, markup, annotated - select for diffs
Fri Feb 6 12:13:36 1998 UTC (14 years ago) by eivind
Branches: MAIN
CVS tags: old_RELENG_3_BP, old_RELENG_3_2_PAO_BP, old_RELENG_3_2_PAO, old_RELENG_3_2_0_RELEASE, old_RELENG_3_1_0_RELEASE, old_RELENG_3_0_0_RELEASE, old_PRE_VFS_BIO_NFS_PATCH, old_PRE_SOFTUPDATE, old_PRE_SMP_VMSHARE, old_PRE_NOBDEV, old_PRE_NEWBUS, old_PRE_DEVFS_SLICE, old_POST_VFS_BIO_NFS_PATCH, old_POST_SOFTUPDATE, old_POST_SMP_VMSHARE, old_POST_NEWBUS, old_POST_DEVFS_SLICE
Branch point for: old_RELENG_3
Diff to: previous 1.42: preferred, colored
Changes since revision 1.42: +1 -3 lines
Back out DIAGNOSTIC changes.

Revision 1.42: download - view: text, markup, annotated - select for diffs
Wed Feb 4 22:32:45 1998 UTC (14 years ago) by eivind
Branches: MAIN
Diff to: previous 1.41: preferred, colored
Changes since revision 1.41: +3 -1 lines
Turn DIAGNOSTIC into a new-style option.

Revision 1.41: download - view: text, markup, annotated - select for diffs
Fri Dec 19 18:58:14 1997 UTC (14 years, 1 month ago) by bde
Branches: MAIN
Diff to: previous 1.40: preferred, colored
Changes since revision 1.40: +2 -1 lines
Set the sender's low watermark to match the maximum size for atomic
writes that we advertise (PIPE_BUF = 512).

Revision 1.40: download - view: text, markup, annotated - select for diffs
Sat Dec 13 13:49:59 1997 UTC (14 years, 2 months ago) by bde
Branches: MAIN
Diff to: previous 1.39: preferred, colored
Changes since revision 1.39: +2 -8 lines
Fixed EOF handing.

1. SS_CANTRCVMORE was initially set on the wrong socket, so reads
when there has never been a writer on the socket did not return 0.
Note that such reads are only possible if the fifo was opened in
(O_RDONLY | O_NONBLOCK) mode.

2. SS_CANTSENDMORE was initially set on the wrong socket, but this
was harmless because the wrong socket is never sent from and there
is no need to set the flag initially on the right socket (since open
in (O_WRONLY | O_NONBLOCK) mode fails if there is no reader...).

3. SS_CANTRCVMORE was cleared when read() returns.  This broke the
case where read() returns 0 - subsequent reads are supposed to
return 0 until a writer appears.  There is no need to clear the
flag when read() returns, since it is cleared correctly when a
writer appears.

Revision 1.39: download - view: text, markup, annotated - select for diffs
Sat Dec 13 12:58:09 1997 UTC (14 years, 2 months ago) by bde
Branches: MAIN
Diff to: previous 1.38: preferred, colored
Changes since revision 1.38: +32 -2 lines
Restored fifo_pathconf() from rev.1.32.  vop_stdpathconf() is too
general to be of much use.  Using it here weakened the _PC_MAX_CANON,
_PC_MAX_INPUT and _PC_VDISABLE cases.

fifo_pathconf() is not quite correct either.  _PC_CHOWN_RESTRICTED
and _PC_LINK_MAX should be handled by the host file system.  For
directories, the host file system should let us handle _PC_PIPE_BUF.

Revision 1.38: download - view: text, markup, annotated - select for diffs
Fri Dec 5 19:55:46 1997 UTC (14 years, 2 months ago) by bde
Branches: MAIN
Diff to: previous 1.37: preferred, colored
Changes since revision 1.37: +2 -1 lines
Don't include <sys/lock.h> in headers when only `struct simplelock' is
required.  Fixed everything that depended on the pollution.

Revision 1.37: download - view: text, markup, annotated - select for diffs
Mon Oct 27 15:33:04 1997 UTC (14 years, 3 months ago) by bde
Branches: MAIN
Diff to: previous 1.36: preferred, colored
Changes since revision 1.36: +3 -4 lines
Use unique sleep message strings.

Revision 1.36: download - view: text, markup, annotated - select for diffs
Mon Oct 27 13:33:39 1997 UTC (14 years, 3 months ago) by bde
Branches: MAIN
Diff to: previous 1.35: preferred, colored
Changes since revision 1.35: +1 -2 lines
Removed unused #includes.  The need for most of them went away with
recent changes (docluster* and vfs improvements).

Revision 1.35: download - view: text, markup, annotated - select for diffs
Sun Oct 26 20:55:16 1997 UTC (14 years, 3 months ago) by phk
Branches: MAIN
Diff to: previous 1.34: preferred, colored
Changes since revision 1.34: +7 -18 lines
VFS interior redecoration.

Rename vn_default_error to vop_defaultop all over the place.
Move vn_bwrite from vfs_bio.c to vfs_default.c and call it vop_stdbwrite.
Use vop_null instead of nullop.
Move vop_nopoll from vfs_subr.c to vfs_default.c
Move vop_sharedlock from vfs_subr.c to vfs_default.c
Move vop_nolock from vfs_subr.c to vfs_default.c
Move vop_nounlock from vfs_subr.c to vfs_default.c
Move vop_noislocked from vfs_subr.c to vfs_default.c
Use vop_ebadf instead of *_ebadf.
Add vop_defaultop for getpages on master vnode in MFS.

Revision 1.34: download - view: text, markup, annotated - select for diffs
Thu Oct 16 22:00:12 1997 UTC (14 years, 3 months ago) by phk
Branches: MAIN
Diff to: previous 1.33: preferred, colored
Changes since revision 1.33: +1 -4 lines
VFS clean up "hekto commit"

1.  Add defaults for more VOPs
        VOP_LOCK        vop_nolock
        VOP_ISLOCKED    vop_noislocked
        VOP_UNLOCK      vop_nounlock
    and remove direct reference in filesystems.

2.  Rename the nfsv2 vnop tables to improve sorting order.

Revision 1.33: download - view: text, markup, annotated - select for diffs
Thu Oct 16 20:32:26 1997 UTC (14 years, 3 months ago) by phk
Branches: MAIN
Diff to: previous 1.32: preferred, colored
Changes since revision 1.32: +2 -35 lines
Another VFS cleanup "kilo commit"

1.  Remove VOP_UPDATE, it is (also) an UFS/{FFS,LFS,EXT2FS,MFS}
    intereface function, and now lives in the ufsmount structure.

2.  Remove VOP_SEEK, it was unused.

3.  Add mode default vops:

    VOP_ADVLOCK          vop_einval
    VOP_CLOSE            vop_null
    VOP_FSYNC            vop_null
    VOP_IOCTL            vop_enotty
    VOP_MMAP             vop_einval
    VOP_OPEN             vop_null
    VOP_PATHCONF         vop_einval
    VOP_READLINK         vop_einval
    VOP_REALLOCBLKS      vop_eopnotsupp

    And remove identical functionality from filesystems

4.   Add vop_stdpathconf, which returns the canonical stuff.  Use
     it in the filesystems.  (XXX: It's probably wrong that specfs
     and fifofs sets this vop, shouldn't it come from the "host"
     filesystem, for instance ufs or cd9660 ?)

5.   Try to make system wide VOP functions have vop_* names.

6.   Initialize the um_* vectors in LFS.

(Recompile your LKMS!!!)

Revision 1.32: download - view: text, markup, annotated - select for diffs
Thu Oct 16 10:48:25 1997 UTC (14 years, 3 months ago) by phk
Branches: MAIN
Diff to: previous 1.31: preferred, colored
Changes since revision 1.31: +1 -8 lines
VFS mega cleanup commit (x/N)

1.  Add new file "sys/kern/vfs_default.c" where default actions for
    VOPs go. Implement proper defaults for ABORTOP, BWRITE, LEASE,
    POLL, REVOKE and STRATEGY.  Various stuff spread over the entire
    tree belongs here.

2.  Change VOP_BLKATOFF to a normal function in cd9660.

3.  Kill VOP_BLKATOFF, VOP_TRUNCATE, VOP_VFREE, VOP_VALLOC.  These
    are private interface functions between UFS and the underlying
    storage manager layer (FFS/LFS/MFS/EXT2FS).  The functions now
    live in struct ufsmount instead.

4.  Remove a kludge of VOP_ functions in all filesystems, that did
    nothing but obscure the simplicity and break the expandability.
    If a filesystem doesn't implement VOP_FOO, it shouldn't have an
    entry for it in its vnops table.  The system will try to DTRT
    if it is not implemented.  There are still some cruft left, but
    the bulk of it is done.

5.  Fix another VCALL in vfs_cache.c (thanks Bruce!)

Revision 1.31: download - view: text, markup, annotated - select for diffs
Wed Oct 15 13:23:12 1997 UTC (14 years, 3 months ago) by phk
Branches: MAIN
Diff to: previous 1.30: preferred, colored
Changes since revision 1.30: +67 -43 lines
vnops megacommit

1.  Use the default function to access all the specfs operations.
2.  Use the default function to access all the fifofs operations.
3.  Use the default function to access all the ufs operations.
4.  Fix VCALL usage in vfs_cache.c
5.  Use VOCALL to access specfs functions in devfs_vnops.c
6.  Staticize most of the spec and fifofs vnops functions.
7.  Make UFS panic if it lacks bits of the underlying storage handling.

Revision 1.30: download - view: text, markup, annotated - select for diffs
Wed Oct 15 10:04:18 1997 UTC (14 years, 3 months ago) by phk
Branches: MAIN
Diff to: previous 1.29: preferred, colored
Changes since revision 1.29: +8 -8 lines
Hmm, realign the vnops into two columns.

Revision 1.29: download - view: text, markup, annotated - select for diffs
Wed Oct 15 09:21:00 1997 UTC (14 years, 3 months ago) by phk
Branches: MAIN
Diff to: previous 1.28: preferred, colored
Changes since revision 1.28: +44 -45 lines
Stylistic overhaul of vnops tables.
        1. Remove comment stating the blatantly obvious.
        2. Align in two columns.
        3. Sort all but the default element alphabetically.
        4. Remove XXX comments pointing out entries not needed.

Revision 1.28: download - view: text, markup, annotated - select for diffs
Sun Oct 12 20:24:42 1997 UTC (14 years, 4 months ago) by phk
Branches: MAIN
Diff to: previous 1.27: preferred, colored
Changes since revision 1.27: +2 -2 lines
Last major round (Unless Bruce thinks of somthing :-) of malloc changes.

Distribute all but the most fundamental malloc types.  This time I also
remembered the trick to making things static:  Put "static" in front of
them.

A couple of finer points by:	bde

Revision 1.27: download - view: text, markup, annotated - select for diffs
Sun Sep 14 02:57:53 1997 UTC (14 years, 4 months ago) by peter
Branches: MAIN
Diff to: previous 1.26: preferred, colored
Changes since revision 1.26: +17 -16 lines
Convert select -> poll.
Delete 'always succeed' select/poll handlers, replaced with generic call.
Flag missing vnode op table entries.

Revision 1.26: download - view: text, markup, annotated - select for diffs
Tue Sep 2 20:06:11 1997 UTC (14 years, 5 months ago) by bde
Branches: MAIN
Diff to: previous 1.25: preferred, colored
Changes since revision 1.25: +1 -6 lines
Removed unused #includes.

Revision 1.25: download - view: text, markup, annotated - select for diffs
Sat Aug 16 19:15:13 1997 UTC (14 years, 5 months ago) by wollman
Branches: MAIN
Diff to: previous 1.24: preferred, colored
Changes since revision 1.24: +4 -3 lines
Fix all areas of the system (or at least all those in LINT) to avoid storing
socket addresses in mbufs.  (Socket buffers are the one exception.)  A number
of kernel APIs needed to get fixed in order to make this happen.  Also,
fix three protocol families which kept PCBs in mbufs to not malloc them
instead.  Delete some old compatibility cruft while we're at it, and add
some new routines in the in_cksum family.

Revision 1.24.2.1: download - view: text, markup, annotated - select for diffs
Wed Jul 2 19:53:56 1997 UTC (14 years, 7 months ago) by wollman
Branches: old_WOLLMAN_MBUF
Diff to: previous 1.24: preferred, colored; next MAIN 1.25: preferred, colored
Changes since revision 1.24: +4 -3 lines
Check in my big get-rid-of-sockaddrs-in-mbufs patch, on a private branch.

Requested by: julian

Revision 1.24: download - view: text, markup, annotated - select for diffs
Mon Mar 24 11:37:53 1997 UTC (14 years, 10 months ago) by bde
Branches: MAIN
CVS tags: old_pre_smp_merge, old_post_smp_merge, old_BP_WOLLMAN_MBUF
Branch point for: old_WOLLMAN_MBUF
Diff to: previous 1.23: preferred, colored
Changes since revision 1.23: +2 -2 lines
Don't include <sys/ioctl.h> in the kernel.  Stage 3: include
<sys/filio.h> instead of <sys/ioctl.h> in non-network non-tty files.

Revision 1.23: download - view: text, markup, annotated - select for diffs
Sun Mar 23 03:36:49 1997 UTC (14 years, 10 months ago) by bde
Branches: MAIN
Diff to: previous 1.22: preferred, colored
Changes since revision 1.22: +2 -1 lines
Don't #include <sys/fcntl.h> in <sys/file.h> if KERNEL is defined.
Fixed everything that depended on getting fcntl.h stuff from the wrong
place.  Most things don't depend on file.h stuff at all.

Revision 1.22: download - view: text, markup, annotated - select for diffs
Sat Feb 22 09:40:17 1997 UTC (14 years, 11 months ago) by peter
Branches: MAIN
Diff to: previous 1.21: preferred, colored
Changes since revision 1.21: +1 -1 lines
Back out part 1 of the MCFH that changed $Id$ to $FreeBSD$.  We are not
ready for it yet.

Revision 1.21: download - view: text, markup, annotated - select for diffs
Wed Feb 12 16:26:37 1997 UTC (15 years ago) by mpp
Branches: MAIN
Diff to: previous 1.20: preferred, colored
Changes since revision 1.20: +1 -0 lines
Rstored #include of <sys/kernel.h> so that this compiles
without warnings again.

Submitted by:	bde

Revision 1.20: download - view: text, markup, annotated - select for diffs
Mon Feb 10 02:12:32 1997 UTC (15 years ago) by dyson
Branches: MAIN
Diff to: previous 1.19: preferred, colored
Changes since revision 1.19: +88 -89 lines
This is the kernel Lite/2 commit.  There are some requisite userland
changes, so don't expect to be able to run the kernel as-is (very well)
without the appropriate Lite/2 userland changes.

The system boots and can mount UFS filesystems.

Untested: ext2fs, msdosfs, NFS
Known problems: Incorrect Berkeley ID strings in some files.
		Mount_std mounts will not work until the getfsent
		library routine is changed.

Reviewed by:	various people
Submitted by:	Jeffery Hsu <hsu@freebsd.org>

Revision 1.19: download - view: text, markup, annotated - select for diffs
Tue Jan 14 06:46:03 1997 UTC (15 years ago) by jkh
Branches: MAIN
Diff to: previous 1.18: preferred, colored
Changes since revision 1.18: +1 -1 lines
Make the long-awaited change from $Id$ to $FreeBSD$

This will make a number of things easier in the future, as well as (finally!)
avoiding the Id-smashing problem which has plagued developers for so long.

Boy, I'm glad we're not using sup anymore.  This update would have been
insane otherwise.

Revision 1.18: download - view: text, markup, annotated - select for diffs
Thu Dec 19 18:16:28 1996 UTC (15 years, 1 month ago) by bde
Branches: MAIN
Diff to: previous 1.17: preferred, colored
Changes since revision 1.17: +2 -2 lines
Fixed errno for unsupported advisory locks.  The errno is now EINVAL
fcntl() and EOPNOTSUPP for flock().  POSIX specifies the weaker EINVAL
errno and the man page agrees.

Not fixed:
deadfs: always returns wrong EBADF
devfs, msdosfs: always return sometimes-wrong EINVAL
cd9660, fdesc, kernfs, portal: always return sometimes-wrong EOPNOTSUPP
procfs: always returns wrong EIO
mfs: panic?!
nfs: fudged

NetBSD uses a generic file system genfs to do return the sometimes-wrong
EOPNOTSUPP more consistently :-)(.

Found by:	NIST-PCTS

Revision 1.17: download - view: text, markup, annotated - select for diffs
Tue Sep 3 14:22:23 1996 UTC (15 years, 5 months ago) by bde
Branches: MAIN
CVS tags: old_RELENG_2_2_BP, old_RELENG_2_2_8_RELEASE, old_RELENG_2_2_7_RELEASE, old_RELENG_2_2_6_RELEASE, old_RELENG_2_2_5_RELEASE, old_RELENG_2_2_2_RELEASE, old_RELENG_2_2_1_RELEASE, old_RELENG_2_2_0_RELEASE
Branch point for: old_RELENG_2_2
Diff to: previous 1.16: preferred, colored
Changes since revision 1.16: +2 -1 lines
Eliminated nested include of <sys/unistd.h> in <sys/file.h> in the kernel.
Include it directly in the few places where it is used.

Reduced some #includes of <sys/file.h> to #includes of <sys/fcntl.h> or
nothing.

Revision 1.1.1.2 (vendor branch): download - view: text, markup, annotated - select for diffs
Mon Mar 11 19:28:58 1996 UTC (15 years, 11 months ago) by peter
Branches: old_CSRG
CVS tags: old_bsd_44_lite_2
Diff to: previous 1.1.1.1: preferred, colored
Changes since revision 1.1.1.1: +90 -69 lines
Import 4.4BSD-Lite2 onto the vendor branch, note that in the kernel, all
files are off the vendor branch, so this should not change anything.

A "U" marker generally means that the file was not changed in between
the 4.4Lite and Lite-2 releases, and does not need a merge.  "C" generally
means that there was a change.
[two new auxillary files in miscfs/union]

Revision 1.16: download - view: text, markup, annotated - select for diffs
Tue Feb 13 18:16:23 1996 UTC (15 years, 11 months ago) by wollman
Branches: MAIN
CVS tags: old_wollman_polling
Diff to: previous 1.15: preferred, colored
Changes since revision 1.15: +3 -3 lines
Kill XNS.
While we're at it, fix socreate() to take a process argument.  (This
was supposed to get committed days ago...)

Revision 1.15: download - view: text, markup, annotated - select for diffs
Thu Dec 14 09:53:03 1995 UTC (16 years, 2 months ago) by phk
Branches: MAIN
Diff to: previous 1.14: preferred, colored
Changes since revision 1.14: +12 -7 lines
Another mega commit to staticize things.

Revision 1.14: download - view: text, markup, annotated - select for diffs
Mon Dec 11 10:26:34 1995 UTC (16 years, 2 months ago) by phk
Branches: MAIN
Diff to: previous 1.13: preferred, colored
Changes since revision 1.13: +7 -7 lines
Back out this one, must have screwed up somewhere :-(

Revision 1.13: download - view: text, markup, annotated - select for diffs
Mon Dec 11 09:24:13 1995 UTC (16 years, 2 months ago) by phk
Branches: MAIN
Diff to: previous 1.12: preferred, colored
Changes since revision 1.12: +7 -7 lines
Staticize.

Revision 1.12: download - view: text, markup, annotated - select for diffs
Thu Nov 9 08:15:27 1995 UTC (16 years, 3 months ago) by bde
Branches: MAIN
Diff to: previous 1.11: preferred, colored
Changes since revision 1.11: +44 -44 lines
Introduced a type `vop_t' for vnode operation functions and used
it 1138 times (:-() in casts and a few more times in declarations.
This change is null for the i386.

The type has to be `typedef int vop_t(void *)' and not `typedef
int vop_t()' because `gcc -Wstrict-prototypes' warns about the
latter.  Since vnode op functions are called with args of different
(struct pointer) types, neither of these function types is any use
for type checking of the arg, so it would be preferable not to use
the complete function type, especially since using the complete
type requires adding 1138 casts to avoid compiler warnings and
another 40+ casts to reverse the function pointer conversions before
calling the functions.

Revision 1.9.4.1: download - view: text, markup, annotated - select for diffs
Thu Sep 28 13:32:03 1995 UTC (16 years, 4 months ago) by davidg
Branches: old_RELENG_2_1_0
CVS tags: old_RELENG_2_1_7_RELEASE, old_RELENG_2_1_6_RELEASE, old_RELENG_2_1_6_1_RELEASE, old_RELENG_2_1_5_RELEASE, old_RELENG_2_1_0_RELEASE
Diff to: previous 1.9: preferred, colored
Changes since revision 1.9: +29 -16 lines
Brought in changes from rev 1.10: add ability to have a fifo open for
read & write simultaneously. Needed for proper SCO support.

Revision 1.11: download - view: text, markup, annotated - select for diffs
Mon Sep 4 00:20:33 1995 UTC (16 years, 5 months ago) by dyson
Branches: MAIN
Diff to: previous 1.10: preferred, colored
Changes since revision 1.10: +5 -1 lines
Added VOP_GETPAGES/VOP_PUTPAGES and also the "backwards" block count
for VOP_BMAP.  Updated affected filesystems...

Revision 1.10: download - view: text, markup, annotated - select for diffs
Sun Aug 6 16:14:21 1995 UTC (16 years, 6 months ago) by jkh
Branches: MAIN
Diff to: previous 1.9: preferred, colored
Changes since revision 1.9: +28 -15 lines
Allow a pipe to be opened read/write at one end, as is allowed in
SunOS and SCO.  You can then even use the pipe as a cheap fifo stack
(yuck!).  A semantic change also important (but not limited) to iBCS2
compatibility.
Submitted by:	swallace

Revision 1.9: download - view: text, markup, annotated - select for diffs
Tue May 30 08:06:59 1995 UTC (16 years, 8 months ago) by rgrimes
Branches: MAIN
CVS tags: old_RELENG_2_1_0_BP, old_RELENG_2_0_5_RELEASE, old_RELENG_2_0_5_BP, old_RELENG_2_0_5
Branch point for: old_RELENG_2_1_0
Diff to: previous 1.8: preferred, colored
Changes since revision 1.8: +4 -4 lines
Remove trailing whitespace.

Revision 1.8: download - view: text, markup, annotated - select for diffs
Thu Mar 16 18:13:13 1995 UTC (16 years, 10 months ago) by bde
Branches: MAIN
CVS tags: old_RELENG_2_0_5_ALPHA
Diff to: previous 1.7: preferred, colored
Changes since revision 1.7: +2 -1 lines
Add and move declarations to fix all of the warnings from `gcc -Wimplicit'
(except in netccitt, netiso and netns) and most of the warnings from
`gcc -Wnested-externs'.  Fix all the bugs found.  There were no serious
ones.

Revision 1.7: download - view: text, markup, annotated - select for diffs
Fri Feb 3 06:46:13 1995 UTC (17 years ago) by davidg
Branches: MAIN
Diff to: previous 1.6: preferred, colored
Changes since revision 1.6: +3 -1 lines
Fixed bmap run-length brokeness.
Use bmap run-length extension when doing clustered paging.

Submitted by:	John Dyson

Revision 1.6: download - view: text, markup, annotated - select for diffs
Sun Oct 2 17:48:00 1994 UTC (17 years, 4 months ago) by phk
Branches: MAIN
CVS tags: old_RELEASE_2_0, old_OLAH_TTCP, old_BETA_2_0, old_ALPHA_2_0
Diff to: previous 1.5: preferred, colored
Changes since revision 1.5: +24 -20 lines
GCC cleanup.
Reviewed by:
Submitted by:
Obtained from:

Revision 1.5: download - view: text, markup, annotated - select for diffs
Thu Sep 22 19:38:07 1994 UTC (17 years, 4 months ago) by wollman
Branches: MAIN
Diff to: previous 1.4: preferred, colored
Changes since revision 1.4: +2 -1 lines
More loadable VFS changes:

- Make a number of filesystems work again when they are statically compiled
  (blush)

- FIFOs are no longer optional; ``options FIFO'' removed from distributed
  config files.

Revision 1.4: download - view: text, markup, annotated - select for diffs
Wed Sep 21 03:46:57 1994 UTC (17 years, 4 months ago) by wollman
Branches: MAIN
Diff to: previous 1.3: preferred, colored
Changes since revision 1.3: +3 -1 lines
Implemented loadable VFS modules, and made most existing filesystems
loadable.  (NFS is a notable exception.)

Revision 1.3: download - view: text, markup, annotated - select for diffs
Tue Aug 2 07:44:56 1994 UTC (17 years, 6 months ago) by davidg
Branches: MAIN
Diff to: previous 1.2: preferred, colored
Changes since revision 1.2: +1 -0 lines
Added $Id$

Revision 1.2: download - view: text, markup, annotated - select for diffs
Wed May 25 09:07:23 1994 UTC (17 years, 8 months ago) by rgrimes
Branches: MAIN
Diff to: previous 1.1: preferred, colored
Changes since revision 1.1: +18 -0 lines
The big 4.4BSD Lite to FreeBSD 2.0.0 (Development) patch.

Reviewed by:	Rodney W. Grimes
Submitted by:	John Dyson and David Greenman

Revision 1.1.1.1 (vendor branch): download - view: text, markup, annotated - select for diffs
Tue May 24 10:05:00 1994 UTC (17 years, 8 months ago) by rgrimes
Branches: old_CSRG
CVS tags: old_bsd_44_lite, old_REL_before_johndavid_2_0_0
Diff to: previous 1.1: preferred, colored
Changes since revision 1.1: +0 -0 lines
BSD 4.4 Lite Kernel Sources

Revision 1.1: download - view: text, markup, annotated - select for diffs
Tue May 24 10:04:59 1994 UTC (17 years, 8 months ago) by rgrimes
Branches: MAIN
Initial revision

Diff request

This form allows you to request diffs between any two revisions of a file. You may select a symbolic revision name using the selection box or you may type in a numeric name using the type-in text box.

Log view options