Add snapshots_changed_nsecs dataset property

Add a read-only dataset property, snapshots_changed_nsecs, which 
exposes the nanosecond resolution version of snapshots_changed.

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed-by: Alexander Motin <alexander.motin@TrueNAS.com>
Signed-off-by: Wolfgang Hoschek <wolfgang.hoschek@mac.com>
Closes #17998
Closes #18031
This commit is contained in:
Wolfgang Hoschek
2026-01-06 12:36:20 -05:00
committed by GitHub
parent 6eef5cdc94
commit c77f17b750
8 changed files with 89 additions and 11 deletions
+7 -1
View File
@@ -2855,8 +2855,14 @@ dsl_dataset_stats(dsl_dataset_t *ds, nvlist_t *nv)
dsl_get_userrefs(ds));
dsl_prop_nvlist_add_uint64(nv, ZFS_PROP_DEFER_DESTROY,
dsl_get_defer_destroy(ds));
inode_timespec_t snap_cmtime = dsl_dir_snap_cmtime(ds->ds_dir);
dsl_prop_nvlist_add_uint64(nv, ZFS_PROP_SNAPSHOTS_CHANGED,
dsl_dir_snap_cmtime(ds->ds_dir).tv_sec);
snap_cmtime.tv_sec);
uint64_t snap_cmtime_ns =
((uint64_t)snap_cmtime.tv_sec * NANOSEC) +
snap_cmtime.tv_nsec;
dsl_prop_nvlist_add_uint64(nv, ZFS_PROP_SNAPSHOTS_CHANGED_NSECS,
snap_cmtime_ns);
dsl_dataset_crypt_stats(ds, nv);
if (dsl_dataset_phys(ds)->ds_prev_snap_obj != 0) {
+8
View File
@@ -434,6 +434,14 @@ get_special_prop(lua_State *state, dsl_dataset_t *ds, const char *dsname,
numval = dsl_dir_snap_cmtime(ds->ds_dir).tv_sec;
break;
case ZFS_PROP_SNAPSHOTS_CHANGED_NSECS: {
inode_timespec_t snap_cmtime =
dsl_dir_snap_cmtime(ds->ds_dir);
numval = ((uint64_t)snap_cmtime.tv_sec * NANOSEC) +
snap_cmtime.tv_nsec;
break;
}
default:
/* Did not match these props, check in the dsl_dir */
error = get_dsl_dir_prop(ds, zfs_prop, &numval);