Revision tags: v6.2.1, v6.2.0, v6.3.0, v6.0.1, v6.0.0, v6.0.0rc1, v6.1.0 |
|
#
cf4606c0 |
| 13-Jan-2021 |
Daniel Fojt <df@neosystem.org> |
sys/vfs/hammer: modify inode's ctime after successful chmod()
On successful completion of chmod() (ie. the call is gonna return 0), modify inode's ctime.
Issue: https://bugs.dragonflybsd.org/issues
sys/vfs/hammer: modify inode's ctime after successful chmod()
On successful completion of chmod() (ie. the call is gonna return 0), modify inode's ctime.
Issue: https://bugs.dragonflybsd.org/issues/3251 Link: https://pubs.opengroup.org/onlinepubs/9699919799/functions/chmod.html
show more ...
|
Revision tags: v5.8.3, v5.8.2 |
|
#
3b62e684 |
| 08-Jun-2020 |
Daniel Fojt <df@neosystem.org> |
kernel: more precious errors from read()ing hammer and hammer2
To conform POSIX, return EISDIR instead of EINVAL when trying to read(2) a directory from hammer or hammer2 filesystem.
Discussed with
kernel: more precious errors from read()ing hammer and hammer2
To conform POSIX, return EISDIR instead of EINVAL when trying to read(2) a directory from hammer or hammer2 filesystem.
Discussed with and reviewed by: Sascha Wildner
show more ...
|
Revision tags: v5.8.1 |
|
#
fc36a10b |
| 03-Mar-2020 |
Matthew Dillon <dillon@apollo.backplane.com> |
kernel - Normalize the vx_*() vnode interface
* The vx_*() vnode interface is used for initial allocations, reclaims, and terminations.
Normalize all use cases to prevent the mixing together of
kernel - Normalize the vx_*() vnode interface
* The vx_*() vnode interface is used for initial allocations, reclaims, and terminations.
Normalize all use cases to prevent the mixing together of the vx_*() API and the vn_*() API. For example, vx_lock() should not be paired with vn_unlock(), and so forth.
* Integrate an update-counter mechanism into the vx_*() API, assert reasonability.
* Change vfs_cache.c to use an int update counter instead of a long. The vfs_cache code can't quite use the spin-lock update counter API yet.
Use proper atomics for load and store.
* Implement VOP_GETATTR_QUICK, meant to be a 'quick' version of VOP_GETATTR() that only retrieves information related to permissions and ownership. This will be fast-pathed in a later commit.
* Implement vx_downgrade() to convert an exclusive vx_lock into an exclusive vn_lock (for vnodes). Adjust all use cases in the getnewvnode() path.
* Remove unnecessary locks in tmpfs_getattr() and don't use any in tmpfs_getattr_quick().
* Remove unnecessary locks in hammer2_vop_getattr() and don't use any in hammer2_vop_getattr_quick()
show more ...
|
Revision tags: v5.8.0, v5.9.0, v5.8.0rc1 |
|
#
9cd86db5 |
| 13-Feb-2020 |
Matthew Dillon <dillon@apollo.backplane.com> |
kernel - Improve tmpfs support
* When a file in tmpfs is truncated to a size that is not on a block boundary, or extended (but not written) to a size that is not on a block boundary, the nvexten
kernel - Improve tmpfs support
* When a file in tmpfs is truncated to a size that is not on a block boundary, or extended (but not written) to a size that is not on a block boundary, the nvextendbuf() and nvtruncbuf() functions must modify the contents of the straddling buffer and bdwrite().
However, a bdwrite() for a tmpfs buffer will result in a dirty buffer cache buffer and likely force it to be cycled out to swap relatively soon under a modest load. This is not desirable if there is no memory pressure present to force it out.
Tmpfs almost always uses buwrite() in order to leave the buffer 'clean' (the underlying VM pages are dirtied instead), to prevent unecessary paging of tmpfs data to swap when the buffer gets recycled or the vnode cycles out.
* Add support for calling buwrite() in these functions by changing the 'trivial' boolean into a flags variable.
* Tmpfs now passes the appropriate flag, preventing the undesirable behavior.
show more ...
|
Revision tags: v5.6.3 |
|
#
0d540a44 |
| 12-Nov-2019 |
Tomohiro Kusumi <kusumi.tomohiro@gmail.com> |
sys/vfs: Use IO_SEQSHIFT
|
#
6e875644 |
| 13-Oct-2019 |
Sascha Wildner <saw@online.de> |
world/kernel: Use the howmany() macro in various places.
|
Revision tags: v5.6.2, v5.6.1, v5.6.0, v5.6.0rc1, v5.7.0, v5.4.3, v5.4.2 |
|
#
43bc39fa |
| 04-Mar-2019 |
Sascha Wildner <saw@online.de> |
kernel/hammer: Remove the old inactive live dedup code.
It had been disabled in 6de803f0514ff0019181d026a825d1e8a9a4c404 in 2012 due to issues with it.
|
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 |
|
#
fa4a12c4 |
| 14-Feb-2018 |
Matthew Dillon <dillon@apollo.backplane.com> |
kernel - Try to fix delayed mtime updates on SHARED+RW maps again
* Attempt to fix continuing problems with mtime updates related to modifications made via SHARED+RW mmap()s. As evidenced by buil
kernel - Try to fix delayed mtime updates on SHARED+RW maps again
* Attempt to fix continuing problems with mtime updates related to modifications made via SHARED+RW mmap()s. As evidenced by builds under synth sometimes getting confused.
* Don't update vp->v_lastwrite_ts in vop_stdclose(). Instead, update the field and set a new flag VLASTWRITETS upon mmap(SHARED+PROT_WRITE) or upon mprotect(PROT_WRITE) on a SHARED mmap.
* Clear the flag on any regular write, utimes, or truncation.
* Adjust various filesystems to update mtime from vp->v_lastwrite_ts only upon UIO_NOCOPY writes, and only if VLASTWRITETS is set.
tmpfs, ufs, hammer, hammer2 adjusted.
show more ...
|
Revision tags: v5.0.2 |
|
#
723be147 |
| 13-Nov-2017 |
Matthew Dillon <dillon@apollo.backplane.com> |
kernel - Fix mtime for deferred writes from mmap R+W
* When a program modifies a file via a shared R+W mmap and does not msync() it, the pages do not get synchronized to the filesystem until pot
kernel - Fix mtime for deferred writes from mmap R+W
* When a program modifies a file via a shared R+W mmap and does not msync() it, the pages do not get synchronized to the filesystem until potentially up to 30 seconds later. Our filesystems then record a mtime as-of when that synchronization occurs rather than when the modification was made to the pages.
* We cannot easily determine when the modification was made, but we do track close()'s on file pointers that were opened writable. So what we do is record the timestamp as of the last close() of a file pointer that was opened for writing. Then later on we pages are synchronizded, we use this timestamp for any mtime update. It isn't perfect, but its better than it was before.
* This is not a perfect fix. The mtime really needs to be updated at the time of the close() in this situation as well, but it will fix 'make' related issues for files that are modified with mmap rather than write() (aka such as ld.gold appears to do).
Reported-by: zrj
show more ...
|
Revision tags: v5.0.1, v5.0.0, v5.0.0rc2, v5.1.0, v5.0.0rc1 |
|
#
f29237b0 |
| 23-Sep-2017 |
Tomohiro Kusumi <kusumi.tomohiro@gmail.com> |
sys/vfs/hammer: Use kuuid_compare() instead of bcmp()
though kuuid_compare() is probably slower than bcmp() in most cases. It's not performance critical part anyway.
|
#
90da8fc8 |
| 21-Sep-2017 |
Tomohiro Kusumi <kusumi.tomohiro@gmail.com> |
sys/vfs/hammer: Add typedef hammer_uuid_t
Add typedef for uuid_t for better portability, similar to hammer_crc_t and other hammer_xxx_t. (Some platforms have char[16] for uuid_t instead of struct va
sys/vfs/hammer: Add typedef hammer_uuid_t
Add typedef for uuid_t for better portability, similar to hammer_crc_t and other hammer_xxx_t. (Some platforms have char[16] for uuid_t instead of struct value)
No functional changes.
show more ...
|
#
374a548a |
| 09-Sep-2017 |
Matthew Dillon <dillon@apollo.backplane.com> |
hammer - Adjust hammer to new breadnx / cluster_readx API
* API adjustments for breadnx() and cluster_readx() calls
|
Revision tags: v4.8.1 |
|
#
750a1c76 |
| 24-Jun-2017 |
Tomohiro Kusumi <kusumi.tomohiro@gmail.com> |
sys/vfs/hammer: Fix a comment on nresolving PFS
On nresolving a PFS, the entry name to be resolved is the PFS itself, whether it's pointed to by a symlink or not.
Also note that a PFS doesn't neces
sys/vfs/hammer: Fix a comment on nresolving PFS
On nresolving a PFS, the entry name to be resolved is the PFS itself, whether it's pointed to by a symlink or not.
Also note that a PFS doesn't necessarily require a symlink to point to itself. A symlink is used only because the PFS itself isn't visible to userspace via readdir(2) (i.e can't see with ls without a symlink...).
show more ...
|
Revision tags: v4.8.0, v4.6.2, v4.9.0, v4.8.0rc |
|
#
e0d7dd09 |
| 04-Dec-2016 |
Matthew Dillon <dillon@apollo.backplane.com> |
hammer - Remove global VOP counters
* Remove global VOP counters. These were only used for debugging. Removing these globals significantly improves concurrent VOP operations on multi-core syste
hammer - Remove global VOP counters
* Remove global VOP counters. These were only used for debugging. Removing these globals significantly improves concurrent VOP operations on multi-core systems, particularly multi-socket systems, by removing a cache ping-pong bottleneck.
Discussed-with: Mateusz Guzik (mjg_)
show more ...
|
#
96dc2e6f |
| 07-Nov-2016 |
Tomohiro Kusumi <kusumi.tomohiro@gmail.com> |
sys/vfs/hammer: Use HAMMER_BUFSIZE_DOALIGN() and variants
This should have been in bbc5e78b (failed to catch these).
|
#
f097bffe |
| 06-Nov-2016 |
Tomohiro Kusumi <kusumi.tomohiro@gmail.com> |
sys/vfs/hammer: Add HAMMER_DATA_DOALIGN() and variants
The only reason it's "DOALIGN" instead of just "ALIGN" is because that's how macros have been named in HAMMER1/2. "ALIGN" macros represent alig
sys/vfs/hammer: Add HAMMER_DATA_DOALIGN() and variants
The only reason it's "DOALIGN" instead of just "ALIGN" is because that's how macros have been named in HAMMER1/2. "ALIGN" macros represent alignment size.
show more ...
|
Revision tags: v4.6.1 |
|
#
9615af80 |
| 11-Oct-2016 |
Tomohiro Kusumi <kusumi.tomohiro@gmail.com> |
sys/vfs/hammer: Use MIN/MAX macros for B-Tree node's elm base
Leave obj_type with 0 instead of using HAMMER_OBJTYPE_UNKNOWN, since it's not intended to be unknown, but literally intended to be a val
sys/vfs/hammer: Use MIN/MAX macros for B-Tree node's elm base
Leave obj_type with 0 instead of using HAMMER_OBJTYPE_UNKNOWN, since it's not intended to be unknown, but literally intended to be a value of 0.
show more ...
|
#
ba2be8e9 |
| 28-Aug-2016 |
Tomohiro Kusumi <kusumi.tomohiro@gmail.com> |
sys/vfs/hammer: Use typedef'd for struct hammer_mount*
The whole hammer code is mix of using struct and typedef'd. Use typedef'd because majority of the code use typedef'd.
The last 17 commits incl
sys/vfs/hammer: Use typedef'd for struct hammer_mount*
The whole hammer code is mix of using struct and typedef'd. Use typedef'd because majority of the code use typedef'd.
The last 17 commits including this one don't affect binary.
show more ...
|
#
e1067862 |
| 28-Aug-2016 |
Tomohiro Kusumi <kusumi.tomohiro@gmail.com> |
sys/vfs/hammer: Use typedef'd for struct hammer_inode*
The whole hammer code is mix of using struct and typedef'd. Use typedef'd because majority of the code use typedef'd.
|
#
38fd96e9 |
| 27-Aug-2016 |
Tomohiro Kusumi <kusumi.tomohiro@gmail.com> |
sys/vfs/hammer: Remove wrong comment
|
Revision tags: v4.6.0, v4.6.0rc2, v4.6.0rc, v4.7.0 |
|
#
dc6a6bd2 |
| 18-Jul-2016 |
Matthew Dillon <dillon@apollo.backplane.com> |
kernel - Refactor buffer cache code in preparation for vm_page repurposing
* Keep buffer_map but no longer use vm_map_findspace/vm_map_delete to manage buffer sizes. Instead, reserve MAXBSIZE of
kernel - Refactor buffer cache code in preparation for vm_page repurposing
* Keep buffer_map but no longer use vm_map_findspace/vm_map_delete to manage buffer sizes. Instead, reserve MAXBSIZE of unallocated KVM for each buffer.
* Refactor the buffer cache management code. bufspace exhaustion now has hysteresis, bufcount works just about the same.
* Start work on the repurposing code (currently disabled).
show more ...
|
#
3b2afb67 |
| 11-Jun-2016 |
Matthew Dillon <dillon@apollo.backplane.com> |
kernel - B_IODEBUG -> B_IOISSUED
* Rename this flag. It still operates the same way.
This flag is set by the kernel upon an actual I/O read into a buffer cache buffer and may be cleared by the
kernel - B_IODEBUG -> B_IOISSUED
* Rename this flag. It still operates the same way.
This flag is set by the kernel upon an actual I/O read into a buffer cache buffer and may be cleared by the filesystem code to allow the filesystem code to detect when re-reads of the block cause another I/O or not. This allows HAMMER1 and HAMMER2 to avoid calculating the check code over and over again if it has already been calculated.
show more ...
|
Revision tags: v4.4.3 |
|
#
35a5249b |
| 22-Mar-2016 |
Tomohiro Kusumi <kusumi.tomohiro@gmail.com> |
sys/vfs/hammer: Use "%016jx",intmax_t
Some kprintf use long long, others use intmax_t for HAMMER offsets and B-Tree keys in hexadecimal. Make them all use intmax_t.
|
#
e1545c47 |
| 19-Mar-2016 |
Tomohiro Kusumi <kusumi.tomohiro@gmail.com> |
sys/vfs/hammer: Add hammer_is_zone_xxx()
|
#
6e414d58 |
| 28-Feb-2016 |
Tomohiro Kusumi <kusumi.tomohiro@gmail.com> |
sys/vfs/hammer: Rename hammer_directory_namekey() to hammer_direntry_namekey()
The name of this function should be hammer_direntry_namekey() since it's only used with directory entry rectype, but no
sys/vfs/hammer: Rename hammer_directory_namekey() to hammer_direntry_namekey()
The name of this function should be hammer_direntry_namekey() since it's only used with directory entry rectype, but not directories as an object type. (Note that rectype for directory entry is HAMMER_RECTYPE_DIRENTRY)
show more ...
|