Skip to content
Commits on Mar 20, 2013
  1. @splbio
  2. Add VNET wrappers around the rest of the ieee80211 rtsock messages.

    adrian committed
    I triggered the cac/radar messages when doing testing in DFS channels.
Commits on Mar 19, 2013
  1. Add simple example.

    joel committed
  2. @jillest

    Implement SOCK_CLOEXEC, SOCK_NONBLOCK and MSG_CMSG_CLOEXEC.

    jillest committed
    This change allows creating file descriptors with close-on-exec set in some
    situations. SOCK_CLOEXEC and SOCK_NONBLOCK can be OR'ed in socket() and
    socketpair()'s type parameter, and MSG_CMSG_CLOEXEC to recvmsg() makes file
    descriptors (SCM_RIGHTS) atomically close-on-exec.
    
    The numerical values for SOCK_CLOEXEC and SOCK_NONBLOCK are as in NetBSD.
    MSG_CMSG_CLOEXEC is the first free bit for MSG_*.
    
    The SOCK_* flags are not passed to MAC because this may cause incorrect
    failures and can be done later via fcntl() anyway. On the other hand, audit
    is expected to cope with the new flags.
    
    For MSG_CMSG_CLOEXEC, unp_externalize() is extended to take a flags
    argument.
    
    Reviewed by:	kib
  3. Break out the RX completion path into "FIFO check / refill" and

    adrian committed
    "complete RX frames."
    
    The 128 entry RX FIFO is really easy to fill up and miss refilling
    when it's done in the ath taskq - as that gets blocked up doing
    RX completion, TX completion and other random things.
    
    So the 128 entry RX FIFO now gets emptied and refilled in the ath_intr()
    task (and it grabs / releases locks, so now ath_intr() can't just be
    a FAST handler yet!) but the locks aren't held for very long. The
    completion part is done in the ath taskqueue context.
    
    Details:
    
    * Create a new completed frame list - sc->sc_rx_rxlist;
    * Split the EDMA RX process queue into two halves - one that
      processes the RX FIFO and refills it with new frames; another
      that completes the completed frame list;
    * When tearing down the driver, flush whatever is in the deferred
      queue as well as what's in the FIFO;
    * Create two new RX methods - one that processes all RX queues,
      one that processes the given RX queue.  When MSI is implemented,
      we get told which RX queue the interrupt came in on so we can
      specifically schedule that.  (And I can do that with the non-MSI
      path too; I'll figure that out later.)
    * Convert the legacy code over to use these new RX methods;
    * Replace all the instances of the RX taskqueue enqueue with a call
      to a relevant RX method to enqueue one or all RX queues.
    
    Tested:
    
    * AR9380, STA
    * AR9580, STA
    * AR5413, STA
  4. Add more TODO items.

    adrian committed
  5. Now that the tx map field is correctly populated for both edma and

    adrian committed
    legacy chips, just use that.
  6. Add a comment about why aout support is still here: We need it for

    imp committed
    compat2x, which is still in use, as evidence by recent bug reports.
  7. @kostikbel

    ahci(4) and siis(4) are ready to process the unmapped i/o requests

    kostikbel committed
    Sponsored by:	The FreeBSD Foundation
    Tested by:	pho
    Submitted by:	bf (siis patch)
  8. @kostikbel

    UFS support of the unmapped i/o for the user data buffers.

    kostikbel committed
    Sponsored by:	The FreeBSD Foundation
    Tested by:	pho, scottl, jhb, bf
  9. @kostikbel

    Commit the removal of a whitespace to record the proper commit message

    kostikbel committed
    for the r248519:
    
    For the cam-attached HBAs, allow the driver to specify that it accepts
    the unmapped bio by the PIM_UNMAPPED flag.  The CAM passes the
    CAM_DATA_BIO data transfer type request for the unmapped bio, and the
    driver could use the bus_dmamap_load_ccb() as a helper to
    transparently handle the ccb.
    
    Sponsored by:	The FreeBSD Foundation
    Reviewed by:	scottl
    Tested by:	pho, scottl
  10. @kostikbel

    Support unmapped i/o for the md(4).

    kostikbel committed
    The vnode-backed md(4) has to map the unmapped bio because VOP_READ()
    and VOP_WRITE() interfaces do not allow to pass unmapped requests to
    the filesystem. Vnode-backed md(4) uses pbufs instead of relying on
    the bio_transient_map, to avoid usual md deadlock.
    
    Sponsored by:	The FreeBSD Foundation
    Tested by:	pho, scottl
  11. @kostikbel

    Support unmapped i/o for the md(4).

    kostikbel committed
    The vnode-backed md(4) has to map the unmapped bio because VOP_READ()
    and VOP_WRITE() interfaces do not allow to pass unmapped requests to
    the filesystem. Vnode-backed md(4) uses pbufs instead of relying on
    the bio_transient_map, to avoid usual md deadlock.
    
    Sponsored by:	The FreeBSD Foundation
    Tested by:	pho, scottl
  12. @kostikbel

    The geom_part provider supports unmapped bio iff the underlying

    kostikbel committed
    provider does so, since geom_part never inspects the bio_data.
    
    Sponsored by:	The FreeBSD Foundation
    Tested by:	pho
  13. @kostikbel

    A flag for the geom disk driver to indicate that it accepts the

    kostikbel committed
    unmapped i/o requests.
    
    Sponsored by:	The FreeBSD Foundation
    Tested by:	pho
  14. @kostikbel

    Do not remap usermode pages into KVA for physio.

    kostikbel committed
    Sponsored by:	The FreeBSD Foundation
    Tested by:	pho
  15. @kostikbel

    Do not map the swap i/o pbufs if the geom provider for the swap

    kostikbel committed
    partition accepts unmapped requests.
    
    Sponsored by:	The FreeBSD Foundation
    Tested by:	pho
  16. @kostikbel

    Pass unmapped buffers for page in requests if the filesystem indicate…

    kostikbel committed
    …d support
    
    for the unmapped i/o.
    
    Sponsored by:	The FreeBSD Foundation
    Tested by:	pho
  17. @kostikbel

    A flag for the filesystem to indicate to the upper levels that it acc…

    kostikbel committed
    …epts
    
    unmapped buffers for the VOP_STRATEGY().
    
    Sponsored by:	The FreeBSD Foundation
    Tested by:	pho
  18. @kostikbel

    Add a helper function vfs_bio_bzero_buf() to zero the portion of the

    kostikbel committed
    buffer, transparently handling mapped or unmapped buffers.  Its intent
    is to replace the use of bzero(bp->b_data) in cases where the buffer
    might be unmapped, to avoid unneeded upgrades.
    
    Sponsored by:	The FreeBSD Foundation
    Tested by:	pho
  19. Return "start" and "end" to u_long world. Because rman handle address…

    ray committed
    …es as
    
    u_long too.
    
    Discussed with:	ian@
    Pointy hat to:	ray@
  20. @kostikbel

    Implement the concept of the unmapped VMIO buffers, i.e. buffers which

    kostikbel committed
    do not map the b_pages pages into buffer_map KVA.  The use of the
    unmapped buffers eliminate the need to perform TLB shootdown for
    mapping on the buffer creation and reuse, greatly reducing the amount
    of IPIs for shootdown on big-SMP machines and eliminating up to 25-30%
    of the system time on i/o intensive workloads.
    
    The unmapped buffer should be explicitely requested by the GB_UNMAPPED
    flag by the consumer.  For unmapped buffer, no KVA reservation is
    performed at all. The consumer might request unmapped buffer which
    does have a KVA reserve, to manually map it without recursing into
    buffer cache and blocking, with the GB_KVAALLOC flag.
    
    When the mapped buffer is requested and unmapped buffer already
    exists, the cache performs an upgrade, possibly reusing the KVA
    reservation.
    
    Unmapped buffer is translated into unmapped bio in g_vfs_strategy().
    Unmapped bio carry a pointer to the vm_page_t array, offset and length
    instead of the data pointer.  The provider which processes the bio
    should explicitely specify a readiness to accept unmapped bio,
    otherwise g_down geom thread performs the transient upgrade of the bio
    request by mapping the pages into the new bio_transient_map KVA
    submap.
    
    The bio_transient_map submap claims up to 10% of the buffer map, and
    the total buffer_map + bio_transient_map KVA usage stays the
    same. Still, it could be manually tuned by kern.bio_transient_maxcnt
    tunable, in the units of the transient mappings.  Eventually, the
    bio_transient_map could be removed after all geom classes and drivers
    can accept unmapped i/o requests.
    
    Unmapped support can be turned off by the vfs.unmapped_buf_allowed
    tunable, disabling which makes the buffer (or cluster) creation
    requests to ignore GB_UNMAPPED and GB_KVAALLOC flags.  Unmapped
    buffers are only enabled by default on the architectures where
    pmap_copy_page() was implemented and tested.
    
    In the rework, filesystem metadata is not the subject to maxbufspace
    limit anymore. Since the metadata buffers are always mapped, the
    buffers still have to fit into the buffer map, which provides a
    reasonable (but practically unreachable) upper bound on it. The
    non-metadata buffer allocations, both mapped and unmapped, is
    accounted against maxbufspace, as before. Effectively, this means that
    the maxbufspace is forced on mapped and unmapped buffers separately.
    The pre-patch bufspace limiting code did not worked, because
    buffer_map fragmentation does not allow the limit to be reached.
    
    By Jeff Roberson request, the getnewbuf() function was split into
    smaller single-purpose functions.
    
    Sponsored by:	The FreeBSD Foundation
    Discussed with:	jeff (previous version)
    Tested by:	pho, scottl (previous version), jhb, bf
    MFC after:	2 weeks
  21. @glebius

    iwn(4) doesn't support adhoc mode.

    glebius committed
    PR:		misc/177106
    Submitted by:	Hiren Panchasara <hiren.panchasara gmail.com>
  22. @kostikbel

    Add a convenience macro bread_gb() to wrap a call to

    kostikbel committed
    breadn_flags(). Comparing with bread(), it adds an argument to pass
    the flags to getblk().
    
    Sponsored by:	The FreeBSD Foundation
    Tested by:	pho
    MFC after:	2 weeks
  23. Cast "start" to u_long. Temporary fix to unbreak tinderbox.

    ray committed
    We need here max possible storage or dynamic, depend on size of address cell.
  24. @kostikbel

    Assert that a ccb passed to cam_periph_mapmem() for XPT_SCSI_IO and

    kostikbel committed
    XPT_ATA_IO holds virtual buffer address.
    
    Sponsored by:	The FreeBSD Foundation
    Tested by:	pho
  25. @emaste

    Fix remainder calculation when biosize is not a power of 2

    emaste committed
    In common configurations biosize is a power of two, but is not required to
    be so.  Thanks to markj@ for spotting an additional case beyond my original
    patch.
    
    Reviewed by: rmacklem@
  26. Add new USB ID.

    hselasky committed
    PR:		usb/177105
    MFC after:	1 week
  27. Remove obsolete objformat information.

    joel committed
    Submitted by:	db
  28. @mmatuska

    Plug memory leak in dsl_check_snap_cb()

    mmatuska committed
    This was unnoticed because the function is very rarely used.
    
    MFC after:	3 days
  29. mdoc: remove superfluous paragraph macro.

    joel committed
  30. Separate the locking macros that are used in the packet flow path

    ae committed
    from others. This helps easy switch to use pfil(4) lock.
  31. Fix style and comments.

    ae committed
  32. @glebius

    There are actually two different cases when mlock(2) returns

    glebius committed
    ENOMEM. Clarify this, taking text from SUS.
    
    Reviewed by:	kib
  33. @cperciva

    Fix typo in previous commit: Exit if */dev/dumpdev* does not exist, n…

    cperciva committed
    …ot if
    
    */bin/realpath* does not exist...
    
    Submitted by:	markj
    Pointy hat to:	cperciva
Something went wrong with that request. Please try again.