| #
567e6250
|
| 17-Aug-2025 |
Dag-Erling Smørgrav <des@FreeBSD.org> |
vfs: Introduce VN_ISDEV() macro
We frequently need to check if a vnode refers to either a character or block special, so we might as well have a macro for it.
We somewhat less frequently need to pe
vfs: Introduce VN_ISDEV() macro
We frequently need to check if a vnode refers to either a character or block special, so we might as well have a macro for it.
We somewhat less frequently need to perform similar checks on things that aren't vnodes (usually a struct vattr *), so add VATTR_ISDEV() and a generic VTYPE_ISDEV() as well.
Sponsored by: Klara, Inc. Sponsored by: NetApp, Inc. Reviewed by: kib Differential Revision: https://reviews.freebsd.org/D51947
show more ...
|
| #
7c72c082
|
| 11-Apr-2025 |
Ka Ho Ng <khng@FreeBSD.org> |
tmpfs: turn vfs.tmpfs.memory_percent into CTLFLAG_RWTUN
So sysctl is not the only way to set the value of this knob, this can be set by loader tunables as well.
Sponsored by: Juniper Networks, Inc.
tmpfs: turn vfs.tmpfs.memory_percent into CTLFLAG_RWTUN
So sysctl is not the only way to set the value of this knob, this can be set by loader tunables as well.
Sponsored by: Juniper Networks, Inc. MFC after: 1 week Reviewed by: markj Differential Revision: https://reviews.freebsd.org/D49763
show more ...
|
| #
bb1dc6cf
|
| 22-Feb-2025 |
Doug Moore <dougm@FreeBSD.org> |
vm_page: define partial page invalidate
Two different functions in different files do the same thing - fill a partial page with zeroes. Add that functionality to vm_page.c and remove it elsewhere to
vm_page: define partial page invalidate
Two different functions in different files do the same thing - fill a partial page with zeroes. Add that functionality to vm_page.c and remove it elsewhere to avoid code duplication.
Reviewed by: markj, kib Differential Revision: https://reviews.freebsd.org/D49096
show more ...
|
| #
2eef41e5
|
| 21-Feb-2025 |
Doug Moore <dougm@FreeBSD.org> |
Revert "vm_page: define partial page invalidate"
A negative review arrived as this was being committed, so undo and reevaluate.
This reverts commit 5611a38d818587b307e1fb110f72d2996c170035.
|
| #
5611a38d
|
| 21-Feb-2025 |
Doug Moore <dougm@FreeBSD.org> |
vm_page: define partial page invalidate
Two different functions in different files do the same thing - fill a partial page with zeroes. Add that functionality to vm_page.c and remove it elsewhere to
vm_page: define partial page invalidate
Two different functions in different files do the same thing - fill a partial page with zeroes. Add that functionality to vm_page.c and remove it elsewhere to avoid code duplication.
Reviewed by: kib Differential Revision: https://reviews.freebsd.org/D49096
show more ...
|
| #
8fa5e0f2
|
| 06-Aug-2024 |
Jason A. Harmening <jah@FreeBSD.org> |
tmpfs: Account for whiteouts during rename/rmdir
The existing tmpfs implementation will return ENOTEMPTY for VOP_RMDIR, or for the destination directory of VOP_RENAME, for any case in which the dire
tmpfs: Account for whiteouts during rename/rmdir
The existing tmpfs implementation will return ENOTEMPTY for VOP_RMDIR, or for the destination directory of VOP_RENAME, for any case in which the directory is non-empty, even if the directory only contains whiteouts.
Fix this by tracking total whiteout dirent allocation separately for each directory, and avoid returning ENOTEMPTY if IGNOREWHITEOUT has been specified by the caller and the total allocation of dirents is not greater than the total whiteout allocation. This addresses "directory not empty" failures seen on some recently-added unionfs stress2 tests which use tmpfs as a base-layer filesystem.
A separate issue for independent consideration is that unionfs' default behavior when deleting files or directories is to create whiteouts even when it does not truly need to do so.
Differential Revision: https://reviews.freebsd.org/D45987 Reviewed by: kib (prior version), olce Tested by: pho
show more ...
|
| #
3cded059
|
| 15-Aug-2024 |
Jessica Clarke <jrtc27@FreeBSD.org> |
tmpfs: Fix OOB write when setting vfs.tmpfs.memory_percent
tmpfs_mem_percent is an int not a long, so on a 64-bit system this writes 4 bytes past the end of the variable. The read above is correct,
tmpfs: Fix OOB write when setting vfs.tmpfs.memory_percent
tmpfs_mem_percent is an int not a long, so on a 64-bit system this writes 4 bytes past the end of the variable. The read above is correct, so this was likely a copy paste error from sysctl_mem_reserved.
Found by: CHERI Fixes: 636592343c3e ("tmpfs: increase memory reserve to a percent of available memory + swap")
show more ...
|
| #
6bd3f23a
|
| 26-May-2024 |
Ryan Libby <rlibby@FreeBSD.org> |
tmpfs_node_init: use MTX_NEW on lock from uninitialized memory
Reported by: netchild Reviewed by: kib Differential Revision: https://reviews.freebsd.org/D45364
|
| #
46811949
|
| 12-May-2024 |
Konstantin Belousov <kib@FreeBSD.org> |
tmpfs_destroy_vobject(): clear v_object under the object lock
Which allows tmpfs_pager_writecount_recalc() to reliably detect reclaimed vnode and make its accesses to object->un_pager.swp.private (=
tmpfs_destroy_vobject(): clear v_object under the object lock
Which allows tmpfs_pager_writecount_recalc() to reliably detect reclaimed vnode and make its accesses to object->un_pager.swp.private (== vp) safe against reclaim. Note that vnode instantiation already assigns v_object under the object lock.
Reviewed by: markj Reported and tested by: pho Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D45119
show more ...
|
| #
6ada4e8a
|
| 08-May-2024 |
Konstantin Belousov <kib@FreeBSD.org> |
swap-like pagers: assert that writemapping decrease does not pass zero
Reviewed by: markj Tested by: pho Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews
swap-like pagers: assert that writemapping decrease does not pass zero
Reviewed by: markj Tested by: pho Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D45119
show more ...
|
| #
58d7ac11
|
| 06-May-2024 |
Konstantin Belousov <kib@FreeBSD.org> |
tmpfs: recalculate OBJ_TMPFS_VREF on reinstantiating node' vnode
Reported and tested by: pho Reviewed by: markj Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://
tmpfs: recalculate OBJ_TMPFS_VREF on reinstantiating node' vnode
Reported and tested by: pho Reviewed by: markj Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D45119
show more ...
|
| #
6bb132ba
|
| 15-Apr-2024 |
Brooks Davis <brooks@FreeBSD.org> |
Reduce reliance on sys/sysproto.h pollution
Add sys/errno.h, sys/malloc.h, sys/queue.h, and vm/uma.h as needed.
sys/sysproto.h currently includes sys/acl.h which currently includes sys/param.h, sys
Reduce reliance on sys/sysproto.h pollution
Add sys/errno.h, sys/malloc.h, sys/queue.h, and vm/uma.h as needed.
sys/sysproto.h currently includes sys/acl.h which currently includes sys/param.h, sys/queue.h, and vm/uma.h which in turn bring in sys/errno.h sys/malloc.h.
Reviewed by: kib Differential Revision: https://reviews.freebsd.org/D44465
show more ...
|
| #
63659234
|
| 19-Dec-2023 |
Mike Karels <karels@FreeBSD.org> |
tmpfs: increase memory reserve to a percent of available memory + swap
The tmpfs memory reserve defaulted to 4 MB, and other than that, all of available memory + swap could be allocated to tmpfs fil
tmpfs: increase memory reserve to a percent of available memory + swap
The tmpfs memory reserve defaulted to 4 MB, and other than that, all of available memory + swap could be allocated to tmpfs files. This was dangerous, as the page daemon attempts to keep some memory free, using up swap, and then resulting in processes being killed. Increase the reserve to a fraction of available memory + swap at file system startup time. The limit is expressed as a percentage of available memory + swap that can be used, and defaults to 95%. The percentage can be changed via the vfs.tmpfs.memory_percent sysctl, recomputing the reserve with the new percentage but the initial available memory + swap. Note that the reserve can also be set directly with an existing sysctl, ignoring the percentage. The previous behavior can be specified by setting vfs.tmpfs.memory_percent to 100.
Add sysctl for vfs.tmpfs.memory_percent and the pre-existing vfs.tmpfs.memory_reserved to tmpfs(5).
PR: 275436 MFC after: 1 month Reviewed by: rgrimes Differential Revision: https://reviews.freebsd.org/D43011
show more ...
|
| #
ed19c098
|
| 19-Dec-2023 |
Mike Karels <karels@FreeBSD.org> |
tmpfs: enforce size limit on writes when file system size is default
tmpfs enforced the file system size limit on writes for file systems with a specified size, but not when the size was the default
tmpfs: enforce size limit on writes when file system size is default
tmpfs enforced the file system size limit on writes for file systems with a specified size, but not when the size was the default. Add enforcement when the size is default: do not allocate additional pages if the available memory + swap falls to the reserve level. Note, enforcement is also done when attempting to create a file, both with and without an explicit file system size.
PR: 275436 MFC after: 1 month Reviewed by: cy Differential Revision: https://reviews.freebsd.org/D43010
show more ...
|
| #
fdafd315
|
| 24-Nov-2023 |
Warner Losh <imp@FreeBSD.org> |
sys: Automated cleanup of cdefs and other formatting
Apply the following automated changes to try to eliminate no-longer-needed sys/cdefs.h includes as well as now-empty blank lines in a row.
Remov
sys: Automated cleanup of cdefs and other formatting
Apply the following automated changes to try to eliminate no-longer-needed sys/cdefs.h includes as well as now-empty blank lines in a row.
Remove /^#if.*\n#endif.*\n#include\s+<sys/cdefs.h>.*\n/ Remove /\n+#include\s+<sys/cdefs.h>.*\n+#if.*\n#endif.*\n+/ Remove /\n+#if.*\n#endif.*\n+/ Remove /^#if.*\n#endif.*\n/ Remove /\n+#include\s+<sys/cdefs.h>\n#include\s+<sys/types.h>/ Remove /\n+#include\s+<sys/cdefs.h>\n#include\s+<sys/param.h>/ Remove /\n+#include\s+<sys/cdefs.h>\n#include\s+<sys/capsicum.h>/
Sponsored by: Netflix
show more ...
|
| #
685dc743
|
| 16-Aug-2023 |
Warner Losh <imp@FreeBSD.org> |
sys: Remove $FreeBSD$: one-line .c pattern
Remove /^[\s*]*__FBSDID\("\$FreeBSD\$"\);?\s*\n/
|
| #
0f613ab8
|
| 06-Aug-2023 |
Konstantin Belousov <kib@FreeBSD.org> |
tmpfs: add a knob to enable pgcache read for mount
Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D41334
|
| #
ba8cc6d7
|
| 12-Mar-2023 |
Mateusz Guzik <mjg@FreeBSD.org> |
vfs: use __enum_uint8 for vtype and vstate
This whacks hackery around only reading v_type once.
Bump __FreeBSD_version to 1400093
|
| #
b61a5730
|
| 10-May-2023 |
Warner Losh <imp@FreeBSD.org> |
spdx: The BSD-2-Clause-NetBSD identifier is obsolete, drop -NetBSD
The SPDX folks have obsoleted the BSD-2-Clause-NetBSD identifier. Catch up to that fact and revert to their recommended match of BS
spdx: The BSD-2-Clause-NetBSD identifier is obsolete, drop -NetBSD
The SPDX folks have obsoleted the BSD-2-Clause-NetBSD identifier. Catch up to that fact and revert to their recommended match of BSD-2-Clause.
Discussed with: pfg MFC After: 3 days Sponsored by: Netflix
show more ...
|
| #
b918ee2c
|
| 13-Feb-2023 |
Konstantin Belousov <kib@FreeBSD.org> |
tmpfs: remove IFF macro
Requested by: mjg Reviewed by: markj Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D38576
|
| #
9ff2fbdf
|
| 13-Feb-2023 |
Konstantin Belousov <kib@FreeBSD.org> |
tmpfs: remove bogus MPASS(VOP_ISLOCKED(vp)) asserts
VOP_ISLOCKED() does not return bool, its only reliable use it to check that the vnode is exclusively locked by the calling thread. Almost all ass
tmpfs: remove bogus MPASS(VOP_ISLOCKED(vp)) asserts
VOP_ISLOCKED() does not return bool, its only reliable use it to check that the vnode is exclusively locked by the calling thread. Almost all asserts of this form repeated auto-generated assertions from vnode_if.src for VOPs, in the incorrect way.
In two places where the assertions would be meaningful, convert them to ASSERT_VOP_LOCKED() statements.
Reviewed by: markj, mjg Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D38576
show more ...
|
| #
56242a4c
|
| 05-Dec-2022 |
Fedor Uporov <fsu@FreeBSD.org> |
Add extended attributes
The extattrs follows semantic of ufs, mean it cannot be set to char/block devices and fifos. The attributes are allocated using regular malloc with M_WAITOK allocation with t
Add extended attributes
The extattrs follows semantic of ufs, mean it cannot be set to char/block devices and fifos. The attributes are allocated using regular malloc with M_WAITOK allocation with the own malloc tag M_TMPFSEA. The memory consumed by extended attributes is limited to avoid OOM triggereing by tmpfs_mount variable tm_ea_memory_max, which is set initialy to 16 MB. The extended attributes entries are stored as linked list in the tmpfs node. The mount point lock is required only under setextattr and deleteextattr to update extended attributes memory-inuse counter, all other operations are doing under vnode lock.
Reviewed by: kib MFC after: 2 week Differential revision: https://reviews.freebsd.org/D38052
show more ...
|
| #
829f0bcb
|
| 19-Dec-2022 |
Mateusz Guzik <mjg@FreeBSD.org> |
vfs: add the concept of vnode state transitions
To quote from a comment above vput_final: <quote> * XXX Some filesystems pass in an exclusively locked vnode and strongly depend * on the lock being h
vfs: add the concept of vnode state transitions
To quote from a comment above vput_final: <quote> * XXX Some filesystems pass in an exclusively locked vnode and strongly depend * on the lock being held all the way until VOP_INACTIVE. This in particular * happens with UFS which adds half-constructed vnodes to the hash, where they * can be found by other code. </quote>
As is there is no mechanism which allows filesystems to denote that a vnode is fully initialized, consequently problems like the above are only found the hard way(tm).
Add rudimentary support for state transitions, which in particular allow to assert the vnode is not legally unlocked until its fate is decided (either construction finishes or vgone is called to abort it).
The new field lands in a 1-byte hole, thus it does not grow the struct.
Bump __FreeBSD_version to 1400077
Reviewed by: kib (previous version) Tested by: pho Differential Revision: https://reviews.freebsd.org/D37759
show more ...
|
| #
860399eb
|
| 24-Dec-2022 |
Konstantin Belousov <kib@FreeBSD.org> |
tmpfs: update changed/modified timestamps for truncates that do not change size
While there, move all error checks into the common place at the start, and eliminate the 'out' label.
PR: 268528 Anal
tmpfs: update changed/modified timestamps for truncates that do not change size
While there, move all error checks into the common place at the start, and eliminate the 'out' label.
PR: 268528 Analyzed and tested by: Mark Millard <marklmi@yahoo.com> Reviewed by: mckusick Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D37866
show more ...
|
| #
37aea264
|
| 20-Oct-2022 |
Konstantin Belousov <kib@FreeBSD.org> |
tmpfs: for used pages, account really allocated pages, instead of file sizes
This makes tmpfs size accounting correct for the sparce files. Also correct report st_blocks/va_bytes. Previously the rep
tmpfs: for used pages, account really allocated pages, instead of file sizes
This makes tmpfs size accounting correct for the sparce files. Also correct report st_blocks/va_bytes. Previously the reported value did not accounted for the swapped out pages.
PR: 223015 Reviewed by: markj Tested by: pho Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D37097
show more ...
|