geom(4): Mark all sysctls as CTLFLAG_MPSAFE.This code does not use Giant lock for very long time.MFC after: 2 weeks(cherry picked from commit c2da954203c0feb933d3be304710e0346c9ed222)
geom: clean up empty lines in .c and .h files
Mark more nodes as CTLFLAG_MPSAFE or CTLFLAG_NEEDGIANT (17 of many)r357614 added CTLFLAG_NEEDGIANT to make it easier to find nodes that arestill not MPSAFE (or already are but aren’t properly mark
Mark more nodes as CTLFLAG_MPSAFE or CTLFLAG_NEEDGIANT (17 of many)r357614 added CTLFLAG_NEEDGIANT to make it easier to find nodes that arestill not MPSAFE (or already are but aren’t properly marked).Use it in preparation for a general review of all nodes.This is non-functional change that adds annotations to SYSCTL_NODE andSYSCTL_PROC nodes using one of the soon-to-be-required flags.Mark all obvious cases as MPSAFE. All entries that haven't been markedas MPSAFE before are by default marked as NEEDGIANTApproved by: kib (mentor, blanket)Commented by: kib, gallatin, melifaroDifferential Revision: https://reviews.freebsd.org/D23718
show more ...
Annotate geom modules with MODULE_VERSIONGEOM ELI may double ask the password during boot. Once at loader time, andonce at init time.This happens due a module loading bug. By default GEOM ELI ca
Annotate geom modules with MODULE_VERSIONGEOM ELI may double ask the password during boot. Once at loader time, andonce at init time.This happens due a module loading bug. By default GEOM ELI caches thepassword in the kernel, but without the MODULE_VERSION annotation, thekernel loads over the kernel module, even if the GEOM ELI was compiled intothe kernel. In this case, the newly loaded modulepurges/invalidates/overwrites the GEOM ELI's password cache, which causesthe double asking.MFC Note: There's a pc98 component to the original submission that isomitted here due to pc98 removal in head. This part will need to be revivedupon MFC.Reviewed by: impSubmitted by: opObtained from: opBSDMFC after: 1 weekDifferential Revision: https://reviews.freebsd.org/D14992
sys/geom: adoption of SPDX licensing ID tags.Mainly focus on files that use BSD 2-Clause license, however the tool Iwas using misidentified many licenses so this was mostly a manual - errorprone
sys/geom: adoption of SPDX licensing ID tags.Mainly focus on files that use BSD 2-Clause license, however the tool Iwas using misidentified many licenses so this was mostly a manual - errorprone - task.The Software Package Data Exchange (SPDX) group provides a specificationto make it easier for automated tools to detect and summarize well knownopensource licenses. We are gradually adopting the specification, notingthat the tags are considered only advisory and do not, in any way,superceed or replace the license texts.
Merge GEOM direct dispatch changes from the projects/camlock branch.When safety requirements are met, it allows to avoid passing I/O requeststo GEOM g_up/g_down thread, executing them directly in
Merge GEOM direct dispatch changes from the projects/camlock branch.When safety requirements are met, it allows to avoid passing I/O requeststo 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 avoidseveral context switches per I/O.The defined now safety requirements are: - caller should not hold any locks and should be reenterable; - callee should not depend on GEOM dual-threaded concurency semantics; - on the way down, if request is unmapped while callee doesn't support it, the context should be sleepable; - kernel thread stack usage should be below 50%.To keep compatibility with GEOM classes not meeting above requirementsnew provider and consumer flags added: - G_CF_DIRECT_SEND -- consumer code meets caller requirements (request); - G_CF_DIRECT_RECEIVE -- consumer code meets callee requirements (done); - G_PF_DIRECT_SEND -- provider code meets caller requirements (done); - G_PF_DIRECT_RECEIVE -- provider code meets callee requirements (request).Capable GEOM class can set them, allowing direct dispatch in cases whereit is safe. If any of requirements are not met, request is queued tog_up or g_down thread same as before.Such GEOM classes were reviewed and updated to support direct dispatch:CONCAT, DEV, DISK, GATE, MD, MIRROR, MULTIPATH, NOP, PART, RAID, STRIPE,VFS, ZERO, ZFS::VDEV, ZFS::ZVOL, all classes based on g_slice KPI (LABEL,MAP, FLASHMAP, etc).To declare direct completion capability disk(9) KPI got new flag equivalentto G_PF_DIRECT_SEND -- DISKFLAG_DIRECT_COMPLETION. da(4) and ada(4) diskdrivers got it set now thanks to earlier CAM locking work.This change more then twice increases peak block storage performance onsystems with manu CPUs, together with earlier CAM locking changes reachingmore then 1 million IOPS (512 byte raw reads from 16 SATA SSDs on 4 HBAs to256 user-level threads).Sponsored by: iXsystems, Inc.MFC after: 2 months
MFprojects/camlock r254895:Add unmapped BIO support to GEOM ZERO if kern.geom.zero.clear is cleared.
Mark all SYSCTL_NODEs static that have no corresponding SYSCTL_DECLs.The SYSCTL_NODE macro defines a list that stores all child-elements ofthat node. If there's no SYSCTL_DECL macro anywhere else,
Mark all SYSCTL_NODEs static that have no corresponding SYSCTL_DECLs.The SYSCTL_NODE macro defines a list that stores all child-elements ofthat node. If there's no SYSCTL_DECL macro anywhere else, there's noreason why it shouldn't be static.
In g_zero_destroy_geom(), return 0 instead of EBUSY in the success case.EBUSY was probably used as a workaround for the deadlock fixed in r207671.Approved by: pjdX-MFC after: r207671
Remove trailing spaces.
Move $FreeBSD$ from comment to __FBSDID().
- Allow to specify the byte which will be used for filling read buffer.- Improve sysctl description a bit.Submitted by: Ivan Voras <[email protected]>
Add a very simple and small GEOM class - ZERO.It creates very huge provider (41PB) /dev/gzero.On BIO_READ request it zero-fills bio_data and on BIO_WRITE it does nothing.You can also set kern.geom
Add a very simple and small GEOM class - ZERO.It creates very huge provider (41PB) /dev/gzero.On BIO_READ request it zero-fills bio_data and on BIO_WRITE it does nothing.You can also set kern.geom.zero.clear sysctl to 0 to do nothing even forBIO_READ.I'm using it for performance testing where it is very helpful.MFC after: 3 days