History log of /dflybsd-src/sys/dev/disk/nata/ata-queue.c (Results 1 – 25 of 37)
Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
Revision tags: v6.4.0, v6.4.0rc1, v6.5.0, v6.2.2, v6.2.1, v6.3.0, v6.0.1, v6.0.0, v6.0.0rc1, v6.1.0, v5.8.3, v5.8.2, v5.8.1, v5.8.0, v5.9.0, v5.8.0rc1, v5.6.3, v5.6.2, v5.6.1, v5.6.0, v5.6.0rc1, v5.7.0, v5.4.3, v5.4.2
# eb67213a 26-Mar-2019 Matthew Dillon <dillon@apollo.backplane.com>

kernel - Rewrite the callout_*() API

* Rewrite the entire API from scratch and improve compatibility
with FreeBSD. This is not an attempt to achieve full API compatibility,
as FreeBSD's API has

kernel - Rewrite the callout_*() API

* Rewrite the entire API from scratch and improve compatibility
with FreeBSD. This is not an attempt to achieve full API compatibility,
as FreeBSD's API has unnecessary complexity that coders would frequently
make mistakes interpreting.

* Remove the IPI mechanisms in favor of fine-grained spin-locks instead.

* Add some robustness features in an attempt to track down corrupted
callwheel lists due to originating subsystems freeing structures out
from under an active callout.

* The code supports a full-blown type-stable/adhoc-reuse structural
separation between the front-end and the back-end, but this feature
is currently not operational and may be removed at some future point.
Instead we currently just embed the struct _callout inside the
struct callout.

* Replace callout_stop_sync() with callout_cancel().

* callout_drain() is now implemented as a synchronous cancel instead
of an asynchronous stop, which is closer to the FreeBSD API and
expected operation for ported code (usb stack in particular). We
will just have to fix any deadlocks which we come across.

* Retain our callout_terminate() function as the 'better' way to
stop using a callout, as it will not only cancel the callout but
also de-flag the structure so it can no longer be used.

show more ...


Revision tags: v5.4.1, v5.4.0, v5.5.0, v5.4.0rc1, v5.2.2, v5.2.1, v5.2.0, v5.3.0, v5.2.0rc
# c3783d8f 04-Feb-2018 zrj <rimvydas.jasinskas@gmail.com>

kernel/disk: Remove use of "%b" format.

Switch to args safe "%pb%i" internal format.


Revision tags: v5.0.2
# c04da965 26-Nov-2017 zrj <rimvydas.jasinskas@gmail.com>

kernel/nata: Extract ata_tf_read() and ata_tf_write().

While there swap check order ata_intel_31244_command() and
adjust few places to use request->parent.

No functional change.


# bb15467a 25-Nov-2017 zrj <rimvydas.jasinskas@gmail.com>

kernel/nata: Misc cleanup in non chipset codes.

* Move some stuff around.
* Add local implementations of biofinish() and g_io_deliver().
* Add prints for READ_NATIVE_MAX_ADDRESS.
* Use >= in

kernel/nata: Misc cleanup in non chipset codes.

* Move some stuff around.
* Add local implementations of biofinish() and g_io_deliver().
* Add prints for READ_NATIVE_MAX_ADDRESS.
* Use >= in comparisons for devclass_get_maxunit()

No functional change.

show more ...


# 9243051b 24-Nov-2017 zrj <rimvydas.jasinskas@gmail.com>

kernel/nata: Return more data for natacontrol(8).

* include info about backing subdisks
* use last 16 bytes of serial number in meta (as MatrixRAID does)
* add optional automatc spindown/spinup s

kernel/nata: Return more data for natacontrol(8).

* include info about backing subdisks
* use last 16 bytes of serial number in meta (as MatrixRAID does)
* add optional automatc spindown/spinup support (dmesg noisy)
* various cleanups
* natacontrol(8) additions + cleanup

Taken-from: FreeBSD

show more ...


# 59503772 23-Nov-2017 zrj <rimvydas.jasinskas@gmail.com>

kernel/nata: Constification.

Attempt at making nata a bit more safe:
* const attributes where possible
* add and use ata_set_desc() helper
* add early returns (for future split modules support

kernel/nata: Constification.

Attempt at making nata a bit more safe:
* const attributes where possible
* add and use ata_set_desc() helper
* add early returns (for future split modules support)
* fix a bug in ata-sis.c where it was patching ids table.

As a bonus, now CCVER=gcc47 no longer warn on -Warray-bounds in ata-ite.c,
finally allowing to buildkernel w/o NO_WERROR (ata_mode2idx() in ata-pci.c).

No functional change intended, except for bugfix in ata-sis.c.

show more ...


Revision tags: v5.0.1, v5.0.0, v5.0.0rc2, v5.1.0, v5.0.0rc1, v4.8.1, v4.8.0, v4.6.2, v4.9.0, v4.8.0rc, v4.6.1, v4.6.0, v4.6.0rc2, v4.6.0rc, v4.7.0, v4.4.3, v4.4.2, v4.4.1, v4.4.0, v4.5.0, v4.4.0rc, v4.2.4, v4.3.1, v4.2.3, v4.2.1, v4.2.0, v4.0.6, v4.3.0, v4.2.0rc, v4.0.5, v4.0.4, v4.0.3, v4.0.2
# 15bd3c73 25-Nov-2014 Matthew Dillon <dillon@apollo.backplane.com>

kernel - Fix boot-time panic in NATA revealed by new callout mechanics

* The NATA driver was using spin locks in a very, very dangerous way.
They did not play nice with the new blocking callout me

kernel - Fix boot-time panic in NATA revealed by new callout mechanics

* The NATA driver was using spin locks in a very, very dangerous way.
They did not play nice with the new blocking callout mechanism.

* Replace all of NATAs spinlocks with lockmgr locks. In addition, change
all asynchronous callout_stop() calls to synchronous callout_stop_sync()
calls, and use callout_init_lk() to auto-lock ch->state_lock for the
callback, which fixes a long-time deadlock race.

Reported-by: tuxillo

show more ...


Revision tags: v4.0.1, v4.0.0, v4.0.0rc3, v4.0.0rc2, v4.0.0rc, v4.1.0
# ba87a4ab 24-Aug-2014 Sascha Wildner <saw@online.de>

kernel/spinlock: Add a description to struct spinlock.

And add it to spin_init() and SPINLOCK_INITIALIZER().

Submitted-by: dclink (see <http://bugs.dragonflybsd.org/issues/2714>)
OK'd-by: dill

kernel/spinlock: Add a description to struct spinlock.

And add it to spin_init() and SPINLOCK_INITIALIZER().

Submitted-by: dclink (see <http://bugs.dragonflybsd.org/issues/2714>)
OK'd-by: dillon

show more ...


Revision tags: v3.8.2, v3.8.1, v3.6.3
# f6e8a0a1 07-Jun-2014 Imre Vadasz <imre@vdsz.com>

Convert files to UTF-8

Taken-from: FreeBSD


Revision tags: v3.8.0, v3.8.0rc2, v3.9.0, v3.8.0rc, v3.6.2, v3.6.1, v3.6.0, v3.7.1, v3.6.0rc, v3.4.3, v3.4.2, v3.4.1, v3.4.0, v3.4.0rc, v3.5.0
# 7078f92b 12-Jan-2013 Johannes Hofmann <johannes.hofmann@gmx.de>

merge


Revision tags: v3.2.2
# cf5f86b6 10-Dec-2012 Matthew Dillon <dillon@apollo.backplane.com>

kernel - Remove unnecessary mplock from ata I/O path

* ata_finish() doesn't need the MP Lock; moving it from taskqueue_swi
to taskqueue_swi_mp will make sure it's not taken.

* Note that taskqueue

kernel - Remove unnecessary mplock from ata I/O path

* ata_finish() doesn't need the MP Lock; moving it from taskqueue_swi
to taskqueue_swi_mp will make sure it's not taken.

* Note that taskqueue_swi(_mp) will be processed when this ithread
attempts to switch back to the thread it preempted. This means that
taskqueue_swi(_mp) processing exclude processing further interrupts
on the ithread while they're running. This may not be desirable and
is different than taskqueue_swi / swi_* / setsoft* in FreeBSD 4.x.

Submitted-by: vsrinivas

show more ...


Revision tags: v3.2.1, v3.2.0, v3.3.0, v3.0.3, v3.0.2, v3.0.1
# 6b7107f9 27-Jan-2012 Venkatesh Srinivas <me@endeavour.zapto.org>

kernel -- nata: Use ATA_DEFAULT_TIMEOUT (10) rather than 1 for ATA controlcmds.

A one-second timeout for control commands was inappropriate for
SET TRANSFER MODE/ENABLE RCACHE/ENABLE WCACHE on spun-

kernel -- nata: Use ATA_DEFAULT_TIMEOUT (10) rather than 1 for ATA controlcmds.

A one-second timeout for control commands was inappropriate for
SET TRANSFER MODE/ENABLE RCACHE/ENABLE WCACHE on spun-down WD Caviar Greens,
among others.

show more ...


Revision tags: v3.1.0, v3.0.0
# 86d7f5d3 26-Nov-2011 John Marino <draco@marino.st>

Initial import of binutils 2.22 on the new vendor branch

Future versions of binutils will also reside on this branch rather
than continuing to create new binutils branches for each new version.


Revision tags: v2.12.0, v2.13.0, v2.10.1, v2.11.0, v2.10.0, v2.9.1, v2.8.2, v2.8.1, v2.8.0, v2.9.0, v2.6.3, v2.7.3, v2.6.2, v2.7.2, v2.7.1, v2.6.1, v2.7.0, v2.6.0, v2.5.1, v2.4.1, v2.5.0, v2.4.0
# 974066bc 25-Aug-2009 Matthias Schmidt <matthias@dragonflybsd.org>

Merge branch 'master' of git://chlamydia.fs.ei.tum.de/dragonfly


# e590ee86 24-Aug-2009 Matthew Dillon <dillon@apollo.backplane.com>

Rename msleep() to ssleep().

* msleep() was taking a spinlock. Rename to ssleep() as per old request
from hsu.

* Our mtx functions currently use mtxsleep(). Leave msleep() unassigned
to make

Rename msleep() to ssleep().

* msleep() was taking a spinlock. Rename to ssleep() as per old request
from hsu.

* Our mtx functions currently use mtxsleep(). Leave msleep() unassigned
to make porting easier.

show more ...


# 4afeea0d 20-Aug-2009 Matthew Dillon <dillon@apollo.backplane.com>

BIOQ - Create a more sophisticated bursting mechanic for writes.

* Add sysctls:

vfs.bioq_reorder_minor_interval
vfs.bioq_reorder_minor_bytes

vfs.bioq_reorder_burst_interval
vfs.bioq_reorde

BIOQ - Create a more sophisticated bursting mechanic for writes.

* Add sysctls:

vfs.bioq_reorder_minor_interval
vfs.bioq_reorder_minor_bytes

vfs.bioq_reorder_burst_interval
vfs.bioq_reorder_burst_bytes

* Reads are prioritized over writes. Every N (minor_interval) reads
up to (minor_bytes) worth of writes are allowed in order to avoid
complete write starvation (which is just as bad as complete read
starvation).

* If a large amount of write data is queued to devices the related
buffer cache buffers will be locked. This is not a good place to
be as any readers trying to access those buffers will then also
block.

When the amount of data is excessive the (burst_interval) and
(burst_bytes) comes into play. This primarily helps HAMMER
flush cycles.

* Try to keep vfs.hirunningspace reasonably bounded. We do not want
too large a value because of the above buffer locking issue. On
the flip side, we can have large numbers of delayed-write dirty buffers
sitting around because they aren't locked.

* When the buffer cache is hitting hidirtybufspace the buffer daemons
now try to keep the vfs.runningbufspace at hirunningspace levels
instead of lorunningspace levels in order to trigger the bioq's
bursting mode.

show more ...


# 9469b9f3 19-Aug-2009 Matthew Dillon <dillon@apollo.backplane.com>

NATA - Replace the queuing algorithm with the one used by bioq.

* NATA doesn't use bioq yet, but I replicated the algorithm to fix the
read starvation issue.

* Interesting note: Because NATA does

NATA - Replace the queuing algorithm with the one used by bioq.

* NATA doesn't use bioq yet, but I replicated the algorithm to fix the
read starvation issue.

* Interesting note: Because NATA does not have NCQ reads appear to be
prioritized even more then they are on AHCI.

show more ...


Revision tags: v2.3.2
# 2a2493da 08-Jun-2009 Aggelos Economopoulos <aoiko@cc.ece.ntua.gr>

Merge branch 'master' of /home/aggelos/devel/dfly/dfly.git/


# b2649ee6 05-Jun-2009 Jordan Gordeev <jgordeev@dir.bg>

Merge branch 'master' into amd64


# d55cd0cb 04-Jun-2009 Matthew Dillon <dillon@apollo.backplane.com>

Minor string description changes to match READ_CAPACITY_16


Revision tags: v2.3.1, v2.2.1, v2.2.0, v2.3.0
# 4c1219d7 29-Jan-2009 Joe Talbott <josepht@dragonflybsd.org>

Merge branch 'master' of git://venus/dragonfly


# 03a48513 20-Jan-2009 Matthew Dillon <dillon@apollo.backplane.com>

NATA disk sort / elevator algorithm adjustments.

Move the sortq_lost counter from the request structure to the channel
structure to fix some edge conditions. Limit the sort to a maximum of
16 eleme

NATA disk sort / elevator algorithm adjustments.

Move the sortq_lost counter from the request structure to the channel
structure to fix some edge conditions. Limit the sort to a maximum of
16 elements before moving the freeze pointer.

This should improve the protection against large continuous linear reads
and writes which can delay unrelated I/O's for very long periods of time.

Reported-by: Hasso Tepper <sinknull@crater.dragonflybsd.org>,
"Simon 'corecode' Schubert" <corecode@fs.ei.tum.de>

show more ...


Revision tags: v2.1.1
# 1d727bac 23-Sep-2008 Matthew Dillon <dillon@dragonflybsd.org>

Make two more changes to the ata request queue sorting code.

* Do not try to sort write requests. There's no point, the hard drive
has a write cache and a much better understanding of the media t

Make two more changes to the ata request queue sorting code.

* Do not try to sort write requests. There's no point, the hard drive
has a write cache and a much better understanding of the media topology
and will sort the requests for us.

* Move the freeze point every 16 requests instead of every 128 to further
reduce the amount of reordering we allow to prevent older requests from
being delayed indefinitely by newer requests.

Note: the original ata code didn't code any limits at all, causing insanely
long latencies during heavy disk I/O for no good reason.

Reported-by: Hasso Tepper <hasso@estpak.ee>

show more ...


Revision tags: v2.0.1
# 6ce6765a 28-Jun-2008 Matthew Dillon <dillon@dragonflybsd.org>

Bump the sortq_lost check from 8 to 128, letting the disk optimally read or
write a larger swath before forcing through long-delayed requests.


# dbe4d046 28-Jun-2008 Matthew Dillon <dillon@dragonflybsd.org>

Fix a system performance issue created by ata_sort_queue(). This function
implements an elevator sort but it also allows requests to be delayed
indefinitely when other requests continually get inser

Fix a system performance issue created by ata_sort_queue(). This function
implements an elevator sort but it also allows requests to be delayed
indefinitely when other requests continually get inserted in front of them.
HAMMER's almost log-linear writing really exposes this issue.

The fix is to count how many times a request got delayed due to an insertion.
If the count exceeds 8, the new request is placed at the end of the queue and
set as the new freeze point.

show more ...


12