Commit Graph

2102 Commits

Author SHA1 Message Date
Andriy Gapon
c858f5cebd lock.9: fix incorrect descriptions of LK_SHARED and LK_DOWNGRADE behavior
Reviewed by:	attilio
MFC after:	5 days
X-MFC after:	r243900
2012-12-23 12:56:04 +00:00
Jaakko Heinonen
b1e1f725e7 Reject spaces and double quotation marks in device names. devctl(4)
and devd(8) can't handle names with such characters properly.

PR:		bin/144736, kern/161912
Discussed with:	imp, kib, pjd
2012-12-22 13:33:28 +00:00
Pawel Jakub Dawidek
2f891cd504 Implemented uma_zone_set_warning(9) function that sets a warning, which
will be printed once the given zone becomes full and cannot allocate an
item. The warning will not be printed more often than every five minutes.

All UMA warnings can be globally turned off by setting sysctl/tunable
vm.zone_warnings to 0.

Discussed on:	arch
Obtained from:	WHEEL Systems
MFC after:	2 weeks
2012-12-07 22:27:13 +00:00
Kevin Lo
aef49b2b1a Document pffinddomain().
Reviewed by:	glebius
2012-12-07 02:29:32 +00:00
Konstantin Belousov
c1e231bcbb Fix typo.
Submitted by:	bjk
MFC after:	3 days
2012-12-04 14:07:17 +00:00
Konstantin Belousov
471af3a8df Document the interpretation of the negative value of ticks for
taskqueue_enqueue_timeout(9).

MFC after:	3 days
2012-12-04 00:32:12 +00:00
Benjamin Kaduk
c33ae5331f Improve grammar.
Approved by:	hrs (mentor)
2012-11-18 22:52:17 +00:00
Joel Dahl
788c8ebcb5 Remove trailing whitespace. 2012-11-16 11:56:53 +00:00
Alan Cox
96509a1fd9 M_USE_RESERVE is no longer deprecated. It is once again supported.
Reviewed by:	kib
2012-11-16 06:40:40 +00:00
Andre Oppermann
327210de43 Remove description of deprecated IP fragment checksum support.
Since SMPng it wasn't really supported anymore and if it worked
then only by chance.  Only very few drivers ever supported it.

Discussed with:	yongari
MFC after:	2 weeks
2012-11-13 20:52:17 +00:00
Sergey Kandaurov
030c03b513 - Lowercase a cross reference to make.
- Sort SEE ALSO cross references.

MFC after:	3 days
2012-11-13 20:07:34 +00:00
Sergey Kandaurov
eb2c1f87f8 Avoid an ambiguous reference to mtx_lock(9).
MFC after:	3 days
2012-11-13 19:21:51 +00:00
Sergey Kandaurov
fe6ba75294 Correct rmlock(9) xref and add a missing comma. 2012-11-13 19:03:13 +00:00
Kevin Lo
0191c147a5 Sync with domain and protosw data structures.
Reviewed by:	glebius
2012-11-05 09:45:37 +00:00
Jim Harris
d9fad1defa Add descriptions for callout_reset_on and callout_schedule_on and
their curcpu variants.

Discussed with:	mav, davide
MFC after:	1 week
2012-11-01 21:00:13 +00:00
Edward Tomasz Napierala
207c7ec842 Document disk_resize(9). 2012-10-30 13:05:50 +00:00
Kevin Lo
969ed8f744 The argument len of m_pullup(9) could be less than or equal to MHLEN.
Reviewed by:	glebius
2012-10-30 10:13:26 +00:00
Edward Tomasz Napierala
2864c799d6 Make it clear that NULL can only be returned when M_NOWAIT was used. 2012-10-28 21:01:32 +00:00
Joel Dahl
04e9501602 mdoc: sort sections. 2012-10-26 16:40:03 +00:00
Kevin Lo
2e3ee2392a Fix MINCLSIZE. It should be MHLEN + 1.
Reviewed by:	glebius
2012-10-25 08:38:43 +00:00
Andre Oppermann
a375e5b1ac Update zero_copy(9) man page to note the renamed kernel options
and to warn about unsafeness of COW based sends.
2012-10-23 14:25:37 +00:00
Konstantin Belousov
5050aa86cf Remove the support for using non-mpsafe filesystem modules.
In particular, do not lock Giant conditionally when calling into the
filesystem module, remove the VFS_LOCK_GIANT() and related
macros. Stop handling buffers belonging to non-mpsafe filesystems.

The VFS_VERSION is bumped to indicate the interface change which does
not result in the interface signatures changes.

Conducted and reviewed by:	attilio
Tested by:	pho
2012-10-22 17:50:54 +00:00
Alexander V. Chernikov
4dab1a18a3 Make PFIL use per-VNET lock instead of per-AF lock. Since most used packet
filters (ipfw and PF) use the same ruleset with the same lock for both
AF_INET and AF_INET6 there is no need in more fine-grade locking.
However, it is possible to request personal lock by specifying
PFIL_FLAG_PRIVATE_LOCK flag in pfil_head structure (see pfil.9 for
more details).

Export PFIL lock via rw_lock(9)/rm_lock(9)-like API permitting pfil consumers
to use this lock instead of own lock. This help reducing locks on main
traffic path.

pfil_assert() is currently not implemented due to absense of rm_assert().
Waiting for some kind of r234648 to be merged in HEAD.

This change is part of bigger patch reducing routing locking.

Sponsored by:	Yandex LLC
Reviewed by:	glebius, ae
OK'd by:	silence on net@
MFC after:	3 weeks
2012-10-22 14:10:17 +00:00
Kevin Lo
61ec8e057f Since the moduledata structure member priv is a void pointer, using
NULL instead of 0 when dealing with pointers.
2012-10-12 01:31:02 +00:00
Kevin Lo
9823d52705 Revert previous commit...
Pointyhat to:	kevlo (myself)
2012-10-10 08:36:38 +00:00
Kevin Lo
a10cee30c9 Prefer NULL over 0 for pointers 2012-10-09 08:27:40 +00:00
Gleb Smirnoff
21d172a3f1 A step in resolving mess with byte ordering for AF_INET. After this change:
- All packets in NETISR_IP queue are in net byte order.
  - ip_input() is entered in net byte order and converts packet
    to host byte order right _after_ processing pfil(9) hooks.
  - ip_output() is entered in host byte order and converts packet
    to net byte order right _before_ processing pfil(9) hooks.
  - ip_fragment() accepts and emits packet in net byte order.
  - ip_forward(), ip_mloopback() use host byte order (untouched actually).
  - ip_fastforward() no longer modifies packet at all (except ip_ttl).
  - Swapping of byte order there and back removed from the following modules:
    pf(4), ipfw(4), enc(4), if_bridge(4).
  - Swapping of byte order added to ipfilter(4), based on __FreeBSD_version
  - __FreeBSD_version bumped.
  - pfil(9) manual page updated.

Reviewed by:	ray, luigi, eri, melifaro
Tested by:	glebius (LE), ray (BE)
2012-10-06 10:02:11 +00:00
Joel Dahl
2ccfa03129 mdoc: remove superfluous paragraph macro. 2012-09-30 07:51:57 +00:00
Gleb Smirnoff
063efed28c The drbr(9) API appeared to be so unclear, that most drivers in
tree used it incorrectly, which lead to inaccurate overrated
if_obytes accounting. The drbr(9) used to update ifnet stats on
drbr_enqueue(), which is not accurate since enqueuing doesn't
imply successful processing by driver. Dequeuing neither mean
that. Most drivers also called drbr_stats_update() which did
accounting again, leading to doubled if_obytes statistics. And
in case of severe transmitting, when a packet could be several
times enqueued and dequeued it could have been accounted several
times.

o Thus, make drbr(9) API thinner. Now drbr(9) merely chooses between
  ALTQ queueing or buf_ring(9) queueing.
  - It doesn't touch the buf_ring stats any more.
  - It doesn't touch ifnet stats anymore.
  - drbr_stats_update() no longer exists.

o buf_ring(9) handles its stats itself:
  - It handles br_drops itself.
  - br_prod_bytes stats are dropped. Rationale: no one ever
    reads them but update of a common counter on every packet
    negatively affects performance due to excessive cache
    invalidation.
  - buf_ring_enqueue_bytes() reduced to buf_ring_enqueue(), since
    we no longer account bytes.

o Drivers handle their stats theirselves: if_obytes, if_omcasts.

o mlx4(4), igb(4), em(4), vxge(4), oce(4) and  ixv(4) no longer
  use drbr_stats_update(), and update ifnet stats theirselves.

o bxe(4) was the most correct driver, it didn't call
  drbr_stats_update(), thus it was the only driver accurate under
  moderate load. Now it also maintains stats itself.

o ixgbe(4) had already taken stats from hardware, so just
  - drop software stats updating.
  - take multicast packet count from hardware as well.

o mxge(4) just no longer needs NO_SLOW_STATS define.

o cxgb(4), cxgbe(4) need no change, since they obtain stats
  from hardware.

Reviewed by:	jfv, gnn
2012-09-28 18:28:27 +00:00
Kevin Lo
201e2cd64b Remove references to brelse and bremfree, which don't actually exist. 2012-09-20 07:07:35 +00:00
Joel Dahl
9f668383b7 Remove trailing whitespace. 2012-09-16 21:17:28 +00:00
Alexander V. Chernikov
54202ab3d1 Add section describing existing filtering points.
Document byteorder behavior in AF_INET[6] hooks in new section.

MFC after:	2 weeks
2012-09-16 13:13:02 +00:00
Kevin Lo
c25372b320 Add references to VFS_SET(9) and VOP_VPTOFH(9) 2012-09-12 03:39:32 +00:00
Gleb Smirnoff
62208ca5d2 - Move jenkins.h to jenkins_hash.c
- Provide missing function that can do hashing of arbitrary sized buffer.
- Refetch lookup3.c and do only minimal edits to it, so that diff between
  our jenkins_hash.c and lookup3.c is minimal.
- Add declarations for jenkins_hash(), jenkins_hash32() to sys/hash.h.
- Document these functions in hash(9)

Obtained from:	http://burtleburtle.net/bob/c/lookup3.c
2012-09-04 12:07:33 +00:00
John Baldwin
28b5187f44 Clarify that bus_dma does not stall future load requests once a load is
deferred.  The caller is required to enforce that if that is desired.

MFC after:	2 weeks
2012-08-30 14:44:30 +00:00
Sergey Kandaurov
f2fbdacbf8 Remove a duplicated "thread". 2012-08-30 11:52:26 +00:00
Sergey Kandaurov
08783659c5 Follow r239818 and remove no more relevant vslock() ENOMEM error.
Reviewed by:	zont
MFC after:	2 weeks
2012-08-29 13:00:00 +00:00
John Baldwin
f2560cec70 Add a manpage for BUS_CHILD_DETACHED(). 2012-08-21 18:41:38 +00:00
John Baldwin
6f7d0018b0 Add a BUS_CHILD_DELETED() method that a bus can hook to allow it to cleanup
any bus-specific state (such as ivars) when a child device is deleted.

Requested by:	kan
MFC after:	1 month
2012-08-21 18:13:09 +00:00
John Baldwin
988a1851d7 Document DRIVER_MODULE_ORDERED, EARLY_DRIVER_MODULE, and
EARLY_DRIVER_MODULE_ORDERED.
2012-08-21 17:58:39 +00:00
Hans Petter Selasky
07da61a6cc Streamline use of cdevpriv and correct some corner cases.
1) It is not useful to call "devfs_clear_cdevpriv()" from
"d_close" callbacks, hence for example read, write, ioctl and
so on might be sleeping at the time of "d_close" being called
and then then freed private data can still be accessed.
Examples: dtrace, linux_compat, ksyms (all fixed by this patch)

2) In sys/dev/drm* there are some cases in which memory will
be freed twice, if open fails, first by code in the open
routine, secondly by the cdevpriv destructor. Move registration
of the cdevpriv to the end of the drm open routines.

3) devfs_clear_cdevpriv() is not called if the "d_open" callback
registered cdevpriv data and the "d_open" callback function
returned an error. Fix this.

Discussed with:	phk
MFC after:	2 weeks
2012-08-15 16:19:39 +00:00
Kevin Lo
d14fdb79fe Put parenthesis around sizeof args. 2012-07-17 02:05:39 +00:00
Gleb Smirnoff
d8115a8690 Document RO_RTFREE() macro. 2012-07-04 07:42:12 +00:00
Jens Schweikhardt
b21a8885cf Correct a grammo. 2012-07-01 19:40:51 +00:00
Julian Elischer
2139f5e0df Try clean up some of my original text and neaten a table.
MFC after:	1 week
2012-06-27 01:13:37 +00:00
Kenneth D. Merry
c3fb2891f0 Fix a bug which causes a panic in daopen(). The panic is caused by
a da(4) instance going away while GEOM is still probing it.

In this case, the GEOM disk class instance has been created by
disk_create(), and the taste of the disk is queued in the GEOM
event queue.

While that event is queued, the da(4) instance goes away.  When the
open call comes into the da(4) driver, it dereferences the freed
(but non-NULL) peripheral pointer provided by GEOM, which results
in a panic.

The solution is to add a callback to the GEOM disk code that is
called when all of its resources are cleaned up.  This is
implemented inside GEOM by adding an optional callback that is
called when all consumers have detached from a provider, and the
provider is about to be deleted.

scsi_cd.c,
scsi_da.c:	In the register routine for the cd(4) and da(4)
		routines, acquire a reference to the CAM peripheral
		instance just before we call disk_create().

		Use the new GEOM disk d_gone() callback to register
		a callback (dadiskgonecb()/cddiskgonecb()) that
		decrements the peripheral reference count once GEOM
		has finished cleaning up its resources.

		In the cd(4) driver, clean up open and close
		behavior slightly.  GEOM makes sure we only get one
		open() and one close call, so there is no need to
		set an open flag and decrement the reference count
		if we are not the first open.

		In the cd(4) driver, use cam_periph_release_locked()
		in a couple of error scenarios to avoid extra mutex
		calls.

geom.h:		Add a new, optional, providergone callback that
		is called when a provider is about to be deleted.

geom_disk.h:	Add a new d_gone() callback to the GEOM disk
		interface.

		Bump the DISK_VERSION to version 2.  This probably
		should have been done after a couple of previous
		changes, especially the addition of the d_getattr()
		callback.

geom_disk.c:	Add a providergone callback for the disk class,
		g_disk_providergone(), that calls the user's
		d_gone() callback if it exists.

		Bump the DISK_VERSION to 2.

geom_subr.c:	In g_destroy_provider(), call the providergone
		callback if it has been provided.

		In g_new_geomf(), propagate the class's
		providergone callback to the new geom instance.

blkfront.c:	Callers of disk_create() are supposed to pass in
		DISK_VERSION, not an explicit disk API version
		number.  Update the blkfront driver to do that.

disk.9:		Update the disk(9) man page to include information
		on the new d_gone() callback, as well as the
		previously added d_getattr() callback, d_descr
		field, and HBA PCI ID fields.

MFC after:	5 days
2012-06-24 04:29:03 +00:00
John Baldwin
8403b19372 Several updates:
- Consistently refer to rmlocks as "read-mostly locks".
- Relate rmlocks to rwlocks rather than sx locks since they are closer to
  rwlocks.
- Add a separate paragraph on sleepable read-mostly locks contrasting them
  with "normal" read-mostly locks.
- The flag passed to rm_init_flags() to enable recursion for readers is
  RM_RECURSE, not LO_RECURSABLE.
- Fix the description for RM_RECURSE (it allows readers to recurse, not
  writers).
- Explicitly note that rm_try_rlock() honors RM_RECURSE.
- Fix some minor grammar nits.
2012-06-08 21:30:35 +00:00
John Baldwin
3d2a7480b3 Use the defined terms "readers" and "writers" to simplify some text. 2012-06-06 13:35:30 +00:00
Edward Tomasz Napierala
18183ca93f Fix lock interaction table for rmlocks - by default they cannot sleep,
just like rwlocks.

MFC after:	1 week
2012-05-29 14:41:16 +00:00
Alexander V. Chernikov
6c74ff0ea6 Fix panic on attaching to non-existent interface (introduced by r233937, pointed by hrs@)
Fix panic on tcpdump being attached to interface being removed (introduced by r233937, pointed by hrs@ and adrian@)
Protect most of bpf_setf() by BPF global lock

Add several forgotten assertions (thanks to adrian@)

Document current locking model inside bpf.c
Document EVENTHANDLER(9) usage inside BPF.

Approved by:       kib(mentor)
Tested by:         gnn
MFC in:            4 weeks
2012-05-21 22:13:48 +00:00