3030
3131#
3232# DESCRIPTION:
33- # Verify the functionality of snapshots_changed property
33+ # Verify the functionality of snapshots_changed and snapshots_changed_nsecs properties.
3434#
3535# STRATEGY:
3636# 1. Create a pool
37- # 2. Verify snapshots_changed property is NULL
37+ # 2. Verify snapshots_changed and snapshots_changed_nsecs properties are NULL
3838# 3. Create a filesystem
39- # 4. Verify snapshots_changed property is NULL
39+ # 4. Verify snapshots_changed and snapshots_changed_nsecs properties are NULL
4040# 5. Create snapshots for all filesystems
41- # 6. Verify snapshots_changed property shows correct time
41+ # 6. Verify snapshots_changed property shows correct time and snapshots_changed_nsecs is a valid nanosecond value
4242# 7. Unmount all filesystems
4343# 8. Create a snapshot while unmounted
44- # 9. Verify snapshots_changed
44+ # 9. Verify snapshots_changed and snapshots_changed_nsecs
4545# 10. Mount the filsystems
46- # 11. Verify snapshots_changed
46+ # 11. Verify snapshots_changed and snapshots_changed_nsecs
4747# 12. Destroy the snapshots
48- # 13. Verify snapshots_changed
48+ # 13. Verify snapshots_changed and snapshots_changed_nsecs
4949#
5050
5151function cleanup
@@ -55,7 +55,7 @@ function cleanup
5555
5656verify_runnable " both"
5757
58- log_assert " Verify snapshots_changed property "
58+ log_assert " Verify snapshots_changed and snapshots_changed_nsecs properties "
5959
6060log_onexit cleanup
6161
@@ -67,62 +67,101 @@ snapdir=".zfs/snapshot"
6767# Create filesystems and check snapshots_changed is NULL
6868create_pool $TESTPOOL $DISKS
6969snap_changed_testpool=$( zfs get -H -o value -p snapshots_changed $TESTPOOL )
70+ snap_changed_nsecs_testpool=$( zfs get -H -o value -p snapshots_changed_nsecs $TESTPOOL )
7071log_must eval " [[ $snap_changed_testpool == - ]]"
72+ log_must eval " [[ $snap_changed_nsecs_testpool == - ]]"
73+ list_changed_testpool=$( zfs list -H -p -o snapshots_changed $TESTPOOL )
74+ list_changed_nsecs_testpool=$( zfs list -H -p -o snapshots_changed_nsecs $TESTPOOL )
75+ log_must eval " [[ $list_changed_testpool == - ]]"
76+ log_must eval " [[ $list_changed_nsecs_testpool == - ]]"
7177tpool_snapdir=$( get_prop mountpoint $TESTPOOL ) /$snapdir
7278log_must eval " [[ $( stat_mtime $tpool_snapdir ) == 0 ]]"
7379
7480log_must zfs create $TESTPOOL /$TESTFS
7581snap_changed_testfs=$( zfs get -H -o value -p snapshots_changed $TESTPOOL /$TESTFS )
82+ snap_changed_nsecs_testfs=$( zfs get -H -o value -p snapshots_changed_nsecs $TESTPOOL /$TESTFS )
7683log_must eval " [[ $snap_changed_testfs == - ]]"
84+ log_must eval " [[ $snap_changed_nsecs_testfs == - ]]"
85+ list_changed_testfs=$( zfs list -H -p -o snapshots_changed $TESTPOOL /$TESTFS )
86+ list_changed_nsecs_testfs=$( zfs list -H -p -o snapshots_changed_nsecs $TESTPOOL /$TESTFS )
87+ log_must eval " [[ $list_changed_testfs == - ]]"
88+ log_must eval " [[ $list_changed_nsecs_testfs == - ]]"
7789tfs_snapdir=$( get_prop mountpoint $TESTPOOL /$TESTFS ) /$snapdir
7890log_must eval " [[ $( stat_mtime $tfs_snapdir ) == 0 ]]"
7991
8092# Create snapshots for filesystems and check snapshots_changed reports correct time
8193curr_time=$( date ' +%s' )
8294log_must zfs snapshot $snap_testpool
8395snap_changed_testpool=$( zfs get -H -o value -p snapshots_changed $TESTPOOL )
96+ snap_changed_nsecs_testpool=$( zfs get -H -o value -p snapshots_changed_nsecs $TESTPOOL )
8497log_must eval " [[ $snap_changed_testpool -ge $curr_time ]]"
98+ log_must eval " [[ $snap_changed_nsecs_testpool -ge 0 ]]"
99+ log_must eval " [[ $snap_changed_nsecs_testpool -lt 1000000000 ]]"
100+ list_changed_testpool=$( zfs list -H -p -o snapshots_changed $TESTPOOL )
101+ list_changed_nsecs_testpool=$( zfs list -H -p -o snapshots_changed_nsecs $TESTPOOL )
102+ log_must eval " [[ $list_changed_testpool == $snap_changed_testpool ]]"
103+ log_must eval " [[ $list_changed_nsecs_testpool == $snap_changed_nsecs_testpool ]]"
85104log_must eval " [[ $( stat_mtime $tpool_snapdir ) == $snap_changed_testpool ]]"
86105
87106curr_time=$( date ' +%s' )
88107log_must zfs snapshot $snap_testfsv1
89108snap_changed_testfs=$( zfs get -H -o value -p snapshots_changed $TESTPOOL /$TESTFS )
109+ snap_changed_nsecs_testfs=$( zfs get -H -o value -p snapshots_changed_nsecs $TESTPOOL /$TESTFS )
90110log_must eval " [[ $snap_changed_testfs -ge $curr_time ]]"
111+ log_must eval " [[ $snap_changed_nsecs_testfs -ge 0 ]]"
112+ log_must eval " [[ $snap_changed_nsecs_testfs -lt 1000000000 ]]"
113+ list_changed_testfs=$( zfs list -H -p -o snapshots_changed $TESTPOOL /$TESTFS )
114+ list_changed_nsecs_testfs=$( zfs list -H -p -o snapshots_changed_nsecs $TESTPOOL /$TESTFS )
115+ log_must eval " [[ $list_changed_testfs == $snap_changed_testfs ]]"
116+ log_must eval " [[ $list_changed_nsecs_testfs == $snap_changed_nsecs_testfs ]]"
91117log_must eval " [[ $( stat_mtime $tfs_snapdir ) == $snap_changed_testfs ]]"
92118
93119# Unmount the filesystems and check snapshots_changed has correct value after unmount
94120log_must zfs unmount $TESTPOOL /$TESTFS
95121log_must eval " [[ $( zfs get -H -o value -p snapshots_changed $TESTPOOL /$TESTFS ) == $snap_changed_testfs ]]"
122+ log_must eval " [[ $( zfs get -H -o value -p snapshots_changed_nsecs $TESTPOOL /$TESTFS ) == $snap_changed_nsecs_testfs ]]"
96123
97124# Create snapshot while unmounted
98125curr_time=$( date ' +%s' )
99126log_must zfs snapshot $snap_testfsv2
100127snap_changed_testfs=$( zfs get -H -o value -p snapshots_changed $TESTPOOL /$TESTFS )
128+ snap_changed_nsecs_testfs=$( zfs get -H -o value -p snapshots_changed_nsecs $TESTPOOL /$TESTFS )
101129log_must eval " [[ $snap_changed_testfs -ge $curr_time ]]"
130+ log_must eval " [[ $snap_changed_nsecs_testfs -ge 0 ]]"
131+ log_must eval " [[ $snap_changed_nsecs_testfs -lt 1000000000 ]]"
102132
103133log_must zfs unmount $TESTPOOL
104134log_must eval " [[ $( zfs get -H -o value -p snapshots_changed $TESTPOOL ) == $snap_changed_testpool ]]"
135+ log_must eval " [[ $( zfs get -H -o value -p snapshots_changed_nsecs $TESTPOOL ) == $snap_changed_nsecs_testpool ]]"
105136
106137# Mount back the filesystems and check snapshots_changed still has correct value
107138log_must zfs mount $TESTPOOL
108139log_must eval " [[ $( zfs get -H -o value -p snapshots_changed $TESTPOOL ) == $snap_changed_testpool ]]"
140+ log_must eval " [[ $( zfs get -H -o value -p snapshots_changed_nsecs $TESTPOOL ) == $snap_changed_nsecs_testpool ]]"
109141log_must eval " [[ $( stat_mtime $tpool_snapdir ) == $snap_changed_testpool ]]"
110142
111143log_must zfs mount $TESTPOOL /$TESTFS
112144log_must eval " [[ $( zfs get -H -o value -p snapshots_changed $TESTPOOL /$TESTFS ) == $snap_changed_testfs ]]"
145+ log_must eval " [[ $( zfs get -H -o value -p snapshots_changed_nsecs $TESTPOOL /$TESTFS ) == $snap_changed_nsecs_testfs ]]"
113146log_must eval " [[ $( stat_mtime $tfs_snapdir ) == $snap_changed_testfs ]]"
114147
115148# Destroy the snapshots and check snapshots_changed shows correct time
116149curr_time=$( date ' +%s' )
117150log_must zfs destroy $snap_testfsv1
118151snap_changed_testfs=$( zfs get -H -o value -p snapshots_changed $TESTPOOL /$TESTFS )
152+ snap_changed_nsecs_testfs=$( zfs get -H -o value -p snapshots_changed_nsecs $TESTPOOL /$TESTFS )
119153log_must eval " [[ $snap_changed_testfs -ge $curr_time ]]"
154+ log_must eval " [[ $snap_changed_nsecs_testfs -ge 0 ]]"
155+ log_must eval " [[ $snap_changed_nsecs_testfs -lt 1000000000 ]]"
120156log_must eval " [[ $( stat_mtime $tfs_snapdir ) == $snap_changed_testfs ]]"
121157
122158curr_time=$( date ' +%s' )
123159log_must zfs destroy $snap_testpool
124160snap_changed_testpool=$( zfs get -H -o value -p snapshots_changed $TESTPOOL )
161+ snap_changed_nsecs_testpool=$( zfs get -H -o value -p snapshots_changed_nsecs $TESTPOOL )
125162log_must eval " [[ $snap_changed_testpool -ge $curr_time ]]"
163+ log_must eval " [[ $snap_changed_nsecs_testpool -ge 0 ]]"
164+ log_must eval " [[ $snap_changed_nsecs_testpool -lt 1000000000 ]]"
126165log_must eval " [[ $( stat_mtime $tpool_snapdir ) == $snap_changed_testpool ]]"
127166
128- log_pass " snapshots_changed property behaves correctly"
167+ log_pass " snapshots_changed and snapshots_changed_nsecs properties behave correctly"
0 commit comments