History log of /dragonfly/sys/vfs/hammer/hammer_vnops.c (Results 1 – 25 of 243)
Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
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 ...


12345678910