#
324589 |
|
13-Oct-2017 |
avg |
MFC r323612: gmirror: treat ENXIO as disk disconnect, not media error
|
#
314667 |
|
04-Mar-2017 |
avg |
MFC r283291: don't use CALLOUT_MPSAFE with callout_init()
The main purpose of this MFC is to reduce conflicts for other merges. Parts of the original change have already "trickled down" via individual MFCs.
|
#
309206 |
|
26-Nov-2016 |
mav |
MFC r308608: Use providergone method to cover race between destroy and g_access().
|
#
307666 |
|
20-Oct-2016 |
mav |
MFC r306762: Fix possible geom destruction before final provider close.
Introduce internal counter to track opens. Using provider's counters is not very successfull after calling g_wither_provider().
|
#
306765 |
|
06-Oct-2016 |
mav |
MFC r306279: Use g_wither_provider() where applicable.
It is just a helper function combining G_PF_WITHER setting with g_orphan_provider().
|
#
306374 |
|
27-Sep-2016 |
markj |
MFC r305509: Don't treat an error from g_mirror_clear_metadata() as fatal.
|
#
303057 |
|
19-Jul-2016 |
markj |
MFC r302091: Do not complete pending gmirror BIOs when tearing down the provider.
|
#
299397 |
|
10-May-2016 |
pfg |
MFC r298698: geom: unsign some types to match their definitions and avoid overflows.
In struct:gctl_req, nargs is unsigned.
In mirror: g_mirror_syncreqs is unsigned.
In raid: in struct:g_raid_volume, v_disks_count is unsigned.
In virstor: in struct:g_virstor_softc, n_components is unsigned.
|
#
281346 |
|
09-Apr-2015 |
mav |
MFC r280757: Remove request sorting from GEOM_MIRROR and GEOM_RAID.
When CPU is not busy, those queues are typically empty. When CPU is busy, then one more extra sorting is the last thing it needs. If specific device (HDD) really needs sorting, then it will be done later by CAM.
This supposed to fix livelock reported for mirror of two SSDs, when UFS fires zillion of BIO_DELETE requests, that totally blocks I/O subsystem by pointless sorting of requests and responses under single mutex lock.
|
#
281012 |
|
03-Apr-2015 |
mav |
MFC r280756, r280758: Fix bug on memory allocation error in split method.
While there, use bioq_takefirst() in place where it is convenient.
|
#
280678 |
|
26-Mar-2015 |
mav |
MFC r279913: Fix couple BIO_DELETE bugs in geom_mirror.
Do not report GEOM::candelete if none of providers support BIO_DELETE. If consumer still requests BIO_DELETE, report error instead of hanging.
|
#
264713 |
|
21-Apr-2014 |
bdrewery |
MFC r264142:
Show error code when failing to destroy a mirror on delay
|
#
260503 |
|
10-Jan-2014 |
ae |
MFC r259634: Prevent users from deactivating the last component of a mirror.
MFC r259929: Add an ability to stop gmirror and clear its metadata in one command. This fixes the problem, when gmirror starts again just after stop.
The problem occurs when gmirror's component has geom label with equal size. E.g. gpt and gptid have the same size as partition, diskid has the same size as entire disk. When gmirror's geom has been destroyed, glabel creates its providers and this initiate retaste.
Now "gmirror destroy" command is available. It destroys geom and also erases gmirror's metadata.
PR: 184985
|
#
260502 |
|
10-Jan-2014 |
ae |
MFC r258357: Add "resize" verb to gmirror(8) and such functionality to geom_mirror(4). Now it is easy to expand the size of the mirror when all its components are replaced. Also add g_resize method to geom_mirror class. It will write updated metadata to new last sector, when parent provider is resized.
|
#
260385 |
|
06-Jan-2014 |
scottl |
MFC Alexander Motin's GEOM direct dispatch work:
r256603: Introduce new function devstat_end_transaction_bio_bt(), adding new argument to specify present time. Use this function to move binuptime() out of lock, substantially reducing lock congestion when slow timecounter is used.
r256606: Move g_io_deliver() out of the lock, as required for direct dispatch. Move g_destroy_bio() out too to reduce lock scope even more.
r256607: Fix passing uninitialized bio_resid argument to g_trace().
r256610: Add unmapped I/O support to GEOM RAID.
r256830: Restore BIO_UNMAPPED and BIO_TRANSIENT_MAPPING in biodonne() when unmapping temporary mapped buffer. That fixes double unmap if biodone() called twice for the same BIO (but with different done methods).
r256880: Merge GEOM direct dispatch changes from the projects/camlock branch.
When safety requirements are met, it allows to avoid passing I/O requests to GEOM g_up/g_down thread, executing them directly in the caller context. That allows to avoid CPU bottlenecks in g_up/g_down threads, plus avoid several context switches per I/O.
r259247: Fix bug introduced at r256607. We have to recalculate bp_resid here since sizes of original and completed requests may differ due to end of media.
Testing of the stable/10 merge was done by Netflix, but all of the credit goes to Alexander and iX Systems.
Submitted by: mav Sponsored by: iX Systems
|
#
281346 |
|
09-Apr-2015 |
mav |
MFC r280757: Remove request sorting from GEOM_MIRROR and GEOM_RAID.
When CPU is not busy, those queues are typically empty. When CPU is busy, then one more extra sorting is the last thing it needs. If specific device (HDD) really needs sorting, then it will be done later by CAM.
This supposed to fix livelock reported for mirror of two SSDs, when UFS fires zillion of BIO_DELETE requests, that totally blocks I/O subsystem by pointless sorting of requests and responses under single mutex lock.
|
#
281012 |
|
03-Apr-2015 |
mav |
MFC r280756, r280758: Fix bug on memory allocation error in split method.
While there, use bioq_takefirst() in place where it is convenient.
|
#
280678 |
|
26-Mar-2015 |
mav |
MFC r279913: Fix couple BIO_DELETE bugs in geom_mirror.
Do not report GEOM::candelete if none of providers support BIO_DELETE. If consumer still requests BIO_DELETE, report error instead of hanging.
|
#
264713 |
|
21-Apr-2014 |
bdrewery |
MFC r264142:
Show error code when failing to destroy a mirror on delay
|
#
260503 |
|
10-Jan-2014 |
ae |
MFC r259634: Prevent users from deactivating the last component of a mirror.
MFC r259929: Add an ability to stop gmirror and clear its metadata in one command. This fixes the problem, when gmirror starts again just after stop.
The problem occurs when gmirror's component has geom label with equal size. E.g. gpt and gptid have the same size as partition, diskid has the same size as entire disk. When gmirror's geom has been destroyed, glabel creates its providers and this initiate retaste.
Now "gmirror destroy" command is available. It destroys geom and also erases gmirror's metadata.
PR: 184985
|
#
260502 |
|
10-Jan-2014 |
ae |
MFC r258357: Add "resize" verb to gmirror(8) and such functionality to geom_mirror(4). Now it is easy to expand the size of the mirror when all its components are replaced. Also add g_resize method to geom_mirror class. It will write updated metadata to new last sector, when parent provider is resized.
|
#
260385 |
|
06-Jan-2014 |
scottl |
MFC Alexander Motin's GEOM direct dispatch work:
r256603: Introduce new function devstat_end_transaction_bio_bt(), adding new argument to specify present time. Use this function to move binuptime() out of lock, substantially reducing lock congestion when slow timecounter is used.
r256606: Move g_io_deliver() out of the lock, as required for direct dispatch. Move g_destroy_bio() out too to reduce lock scope even more.
r256607: Fix passing uninitialized bio_resid argument to g_trace().
r256610: Add unmapped I/O support to GEOM RAID.
r256830: Restore BIO_UNMAPPED and BIO_TRANSIENT_MAPPING in biodonne() when unmapping temporary mapped buffer. That fixes double unmap if biodone() called twice for the same BIO (but with different done methods).
r256880: Merge GEOM direct dispatch changes from the projects/camlock branch.
When safety requirements are met, it allows to avoid passing I/O requests to GEOM g_up/g_down thread, executing them directly in the caller context. That allows to avoid CPU bottlenecks in g_up/g_down threads, plus avoid several context switches per I/O.
r259247: Fix bug introduced at r256607. We have to recalculate bp_resid here since sizes of original and completed requests may differ due to end of media.
Testing of the stable/10 merge was done by Netflix, but all of the credit goes to Alexander and iX Systems.
Submitted by: mav Sponsored by: iX Systems
|