#
efec381d |
| 04-Aug-2020 |
Mark Johnston <markj@FreeBSD.org> |
Remove most lingering references to the page lock in comments.
Finish updating comments to reflect new locking protocols introduced over the past year. In particular, vm_page_lock is now effectivel
Remove most lingering references to the page lock in comments.
Finish updating comments to reflect new locking protocols introduced over the past year. In particular, vm_page_lock is now effectively unused.
Reviewed by: kib Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D25868
show more ...
|
#
c7aa572c |
| 31-Jul-2020 |
Glen Barber <gjb@FreeBSD.org> |
MFH
Sponsored by: Rubicon Communications, LLC (netgate.com)
|
#
1bd12a3b |
| 18-Jul-2020 |
Chuck Silvers <chs@FreeBSD.org> |
Fix vnode_pager handling of read ahead/behind pages when a disk read fails. Rather than marking the read ahead/behind pages valid even though they were not initialized, free them using the new functi
Fix vnode_pager handling of read ahead/behind pages when a disk read fails. Rather than marking the read ahead/behind pages valid even though they were not initialized, free them using the new function vm_page_free_invalid().
Reviewed by: markj, kib Sponsored by: Netflix Differential Revision: https://reviews.freebsd.org/D25430
show more ...
|
#
c3dbadc1 |
| 18-Jul-2020 |
Chuck Silvers <chs@FreeBSD.org> |
Revert my change from r361855 in favor of a better fix.
Reviewed by: markj, kib Sponsored by: Netflix Differential Revision: https://reviews.freebsd.org/D25430
|
Revision tags: release/11.4.0 |
|
#
bd7d64f5 |
| 06-Jun-2020 |
Chuck Silvers <chs@FreeBSD.org> |
Don't mark pages as valid if reading the contents from disk fails. Instead, just skip marking pages valid if the read fails. Future attempts to access such pages will notice that they are not marked
Don't mark pages as valid if reading the contents from disk fails. Instead, just skip marking pages valid if the read fails. Future attempts to access such pages will notice that they are not marked valid and try to read them from disk again.
Reviewed by: kib, markj Sponsored by: Netflix Differential Revision: https://reviews.freebsd.org/D25138
show more ...
|
#
abfdf767 |
| 30-Mar-2020 |
Konstantin Belousov <kib@FreeBSD.org> |
VOP_GETPAGES_ASYNC(): consistently call iodone() callback in case of error.
Reviewed by: glebius, markj Tested by: pho Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: h
VOP_GETPAGES_ASYNC(): consistently call iodone() callback in case of error.
Reviewed by: glebius, markj Tested by: pho Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D24038
show more ...
|
#
6c140a72 |
| 20-Feb-2020 |
Dimitry Andric <dim@FreeBSD.org> |
Merge ^/head r358131 through r358178.
|
#
cafbf0c6 |
| 20-Feb-2020 |
Warner Losh <imp@FreeBSD.org> |
Don't convert all lower-layer errors to EIO.
Don't convert all lower layer errors to EIO. Instead, pass the actual error up the stack. This will allow the upper layers that look for ENXIO to react p
Don't convert all lower-layer errors to EIO.
Don't convert all lower layer errors to EIO. Instead, pass the actual error up the stack. This will allow the upper layers that look for ENXIO to react properly to that signal from the lower layers and, for UFS, unmount the filesystem.
Reviewed by: kib@ Differential Revision: https://reviews.freebsd.org/D23755
show more ...
|
#
65252dc9 |
| 20-Feb-2020 |
Warner Losh <imp@FreeBSD.org> |
Don't spam the console with an additional, and useless, error message.
There's no need to spam the console with this error message. If there's an I/O error, the disk/cam driver will report it at the
Don't spam the console with an additional, and useless, error message.
There's no need to spam the console with this error message. If there's an I/O error, the disk/cam driver will report it at the lower levels. If that's an actual problem, the upper layers will report that.
Reviewed by: kib@ Differential Revision: https://reviews.freebsd.org/D23756
show more ...
|
#
bc02c18c |
| 07-Feb-2020 |
Dimitry Andric <dim@FreeBSD.org> |
Merge ^/head r357408 through r357661.
|
#
f1fa1ba3 |
| 03-Feb-2020 |
Mateusz Guzik <mjg@FreeBSD.org> |
Fix up various vnode-related asserts which did not dump the used vnode
|
#
53d2936c |
| 20-Jan-2020 |
Dimitry Andric <dim@FreeBSD.org> |
Merge ^/head r356848 through r356919.
|
#
d6e13f3b |
| 20-Jan-2020 |
Jeff Roberson <jeff@FreeBSD.org> |
Don't hold the object lock while calling getpages.
The vnode pager does not want the object lock held. Moving this out allows further object lock scope reduction in callers. While here add some mi
Don't hold the object lock while calling getpages.
The vnode pager does not want the object lock held. Moving this out allows further object lock scope reduction in callers. While here add some missing paging in progress calls and an assert. The object handle is now protected explicitly with pip.
Reviewed by: kib, markj Differential Revision: https://reviews.freebsd.org/D23033
show more ...
|
#
9c83ff2d |
| 19-Jan-2020 |
Jeff Roberson <jeff@FreeBSD.org> |
It has not been possible to recursively terminate a vnode object for some time now. Eliminate the dead code that supports it.
Approved by: kib, markj Differential Revision: https://reviews.freebsd.
It has not been possible to recursively terminate a vnode object for some time now. Eliminate the dead code that supports it.
Approved by: kib, markj Differential Revision: https://reviews.freebsd.org/D22908
show more ...
|
#
a314aba8 |
| 12-Jan-2020 |
Mateusz Guzik <mjg@FreeBSD.org> |
vm: add missing CLTFLAG_MPSAFE annotations
This covers all vm/* files.
|
#
b249ce48 |
| 03-Jan-2020 |
Mateusz Guzik <mjg@FreeBSD.org> |
vfs: drop the mostly unused flags argument from VOP_UNLOCK
Filesystems which want to use it in limited capacity can employ the VOP_UNLOCK_FLAGS macro.
Reviewed by: kib (previous version) Differenti
vfs: drop the mostly unused flags argument from VOP_UNLOCK
Filesystems which want to use it in limited capacity can employ the VOP_UNLOCK_FLAGS macro.
Reviewed by: kib (previous version) Differential Revision: https://reviews.freebsd.org/D21427
show more ...
|
#
abd80ddb |
| 08-Dec-2019 |
Mateusz Guzik <mjg@FreeBSD.org> |
vfs: introduce v_irflag and make v_type smaller
The current vnode layout is not smp-friendly by having frequently read data avoidably sharing cachelines with very frequently modified fields. In part
vfs: introduce v_irflag and make v_type smaller
The current vnode layout is not smp-friendly by having frequently read data avoidably sharing cachelines with very frequently modified fields. In particular v_iflag inspected for VI_DOOMED can be found in the same line with v_usecount. Instead make it available in the same cacheline as the v_op, v_data and v_type which all get read all the time.
v_type is avoidably 4 bytes while the necessary data will easily fit in 1. Shrinking it frees up 3 bytes, 2 of which get used here to introduce a new flag field with a new value: VIRF_DOOMED.
Reviewed by: kib, jeff Differential Revision: https://reviews.freebsd.org/D22715
show more ...
|
#
a67d5408 |
| 27-Nov-2019 |
Jeff Roberson <jeff@FreeBSD.org> |
Use atomics in more cases for object references. We now can completely omit the object lock if we are above a certain threshold. Hold only a single vnode reference when the vnode object has any ref
Use atomics in more cases for object references. We now can completely omit the object lock if we are above a certain threshold. Hold only a single vnode reference when the vnode object has any ref > 0. This allows us to only lock the object and vnode on 0-1 and 1-0 transitions.
Differential Revision: https://reviews.freebsd.org/D22452
show more ...
|
#
7f935055 |
| 20-Nov-2019 |
Jeff Roberson <jeff@FreeBSD.org> |
Remove unnecessary object locking from the vnode pager. Recent changes to busy/valid/dirty locking make these acquires redundant.
Reviewed by: kib, markj Differential Revision: https://reviews.free
Remove unnecessary object locking from the vnode pager. Recent changes to busy/valid/dirty locking make these acquires redundant.
Reviewed by: kib, markj Differential Revision: https://reviews.freebsd.org/D22186
show more ...
|
Revision tags: release/12.1.0 |
|
#
51df5321 |
| 29-Oct-2019 |
Jeff Roberson <jeff@FreeBSD.org> |
Use atomics and a shared object lock to protect the object reference count.
Certain consumers still need to guarantee a stable reference so we can not switch entirely to atomics yet. Exclusive lock
Use atomics and a shared object lock to protect the object reference count.
Certain consumers still need to guarantee a stable reference so we can not switch entirely to atomics yet. Exclusive lock holders can still modify and examine the refcount without using the ref api.
Reviewed by: kib Tested by: pho Sponsored by: Netflix, Intel Differential Revision: https://reviews.freebsd.org/D21598
show more ...
|
#
2f81c92e |
| 23-Oct-2019 |
Mark Johnston <markj@FreeBSD.org> |
Check for bogus_page in vnode_pager_generic_getpages_done().
We now assert that a page is busy when updating its validity-tracking state, but bogus_page is not busied during a getpages operation.
R
Check for bogus_page in vnode_pager_generic_getpages_done().
We now assert that a page is busy when updating its validity-tracking state, but bogus_page is not busied during a getpages operation.
Reported by: syzkaller Reviewed by: alc, kib Discussed with: jeff MFC after: 1 week Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D22124
show more ...
|
#
5b87ecc6 |
| 22-Oct-2019 |
Konstantin Belousov <kib@FreeBSD.org> |
Assert that vnode_pager_setsize() is called with the vnode exclusively locked
except for filesystems that set the MNTK_VMSETSIZE_BUG, Set the flag for ZFS.
Tested by: pho Sponsored by: The FreeBSD
Assert that vnode_pager_setsize() is called with the vnode exclusively locked
except for filesystems that set the MNTK_VMSETSIZE_BUG, Set the flag for ZFS.
Tested by: pho Sponsored by: The FreeBSD Foundation MFC after: 2 weeks Differential revision: https://reviews.freebsd.org/D21883
show more ...
|
#
208b81bb |
| 22-Oct-2019 |
Konstantin Belousov <kib@FreeBSD.org> |
Add VV_VMSIZEVNLOCK flag.
The flag specifies that vm_fault() handler should check the vnode' vm_object size under the vnode lock. It is converted into the object' OBJ_SIZEVNLOCK flag in vnode_pager
Add VV_VMSIZEVNLOCK flag.
The flag specifies that vm_fault() handler should check the vnode' vm_object size under the vnode lock. It is converted into the object' OBJ_SIZEVNLOCK flag in vnode_pager_alloc().
Tested by: pho Reviewed by: markj Sponsored by: The FreeBSD Foundation MFC after: 2 weeks Differential revision: https://reviews.freebsd.org/D21883
show more ...
|
#
0012f373 |
| 15-Oct-2019 |
Jeff Roberson <jeff@FreeBSD.org> |
(4/6) Protect page valid with the busy lock.
Atomics are used for page busy and valid state when the shared busy is held. The details of the locking protocol and valid and dirty synchronization are
(4/6) Protect page valid with the busy lock.
Atomics are used for page busy and valid state when the shared busy is held. The details of the locking protocol and valid and dirty synchronization are in the updated vm_page.h comments.
Reviewed by: kib, markj Tested by: pho Sponsored by: Netflix, Intel Differential Revision: https://reviews.freebsd.org/D21594
show more ...
|
#
f993ed2f |
| 09-Sep-2019 |
Dimitry Andric <dim@FreeBSD.org> |
Merge ^/head r351732 through r352104.
|