Partially revert 5a6ac4c

Reinstate the zpl_revalidate() functionality to resolve a regression
where dentries for open files during a rollback are not invalidated.

The unrelated functionality for automatically unmounting .zfs/snapshots
was not reverted.  Nor was the addition of shrink_dcache_sb() to the
zfs_resume_fs() function.

This issue was not immediately caught by the CI because the test case
intended to catch it was included in the list of ZTS tests which may
occasionally fail for unrelated reasons.  Remove all of the rollback
tests from this list to help identify the frequency of any spurious
failures.

The rollback_003_pos.ksh test case exposes a real issue with the
long standing code which needs to be investigated.  Regardless,
it has been enable with a small workaround in the test case itself.

Reviewed-by: Matt Ahrens <matt@delphix.com>
Reviewed-by: Pavel Snajdr <snajpa@snajpa.net>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes #9587
Closes #9592
This commit is contained in:
Brian Behlendorf
2019-11-18 13:05:56 -08:00
committed by GitHub
parent 41e1aa2a06
commit 7ae3f8dc8f
6 changed files with 85 additions and 17 deletions
@@ -48,10 +48,6 @@
verify_runnable "both"
if is_linux; then
log_unsupported "Test case is known to fail on Linux"
fi
function cleanup
{
typeset snap=""
@@ -61,18 +57,16 @@ function cleanup
log_must zfs mount -a
unset __ZFS_POOL_RESTRICT
for snap in "$SNAPPOOL.1" "$SNAPPOOL"
do
snapexists $snap
[[ $? -eq 0 ]] && \
log_must zfs destroy $snap
for snap in "$SNAPPOOL.1" "$SNAPPOOL"; do
if snapexists $snap; then
destroy_snapshot $snap
fi
done
for fs in "$TESTPOOL/$TESTFILE/$TESTFILE.1" "$TESTPOOL/$TESTFILE"
do
datasetexists $fs
[[ $? -eq 0 ]] && \
log_must zfs destroy -r $fs
for fs in "$TESTPOOL/$TESTFILE/$TESTFILE.1" "$TESTPOOL/$TESTFILE"; do
if datasetexists $fs; then
destroy_dataset $fs -r
fi
done
[[ -e /$TESTPOOL ]] && \
@@ -107,4 +101,11 @@ log_must touch /$TESTPOOL/$TESTFILE/$TESTFILE.1
log_must zfs rollback $SNAPPOOL.1
#
# Workaround for issue #6143. Issuing a `df` seems to properly force any
# negative dcache entries to be invalidated preventing subsequent failures
# when accessing the mount point. Additional investigation required.
#
log_must df
log_pass "Rollbacks succeed when nested file systems are present."