NetBSD-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
bin/51461: Processes hang when attempting to read from an empty file on psshfs mount
>Number: 51461
>Category: bin
>Synopsis: Processes hang when attempting to read from an empty file on psshfs mount
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: bin-bug-people
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Sun Sep 04 09:40:00 +0000 2016
>Originator: Mateusz Poszwa
>Release: NetBSD 7.99.36
>Organization:
>Environment:
System: NetBSD Bell 7.99.36 NetBSD 7.99.36 (GENERIC) #0: Sat Sep 3 13:07:03 CEST 2016 beb@Bell:/home/beb/sysbuild/amd64/obj/home/beb/sysbuild/src/sys/arch/amd64/compile/GENERIC amd64
Architecture: x86_64
Machine: amd64
>Description:
When a process attempts to read from an empty file originating
from psshfs mount, it waits indefinitely. Until the hanged
process is interrupted, the mounted filesystem appears to
work as expected, except for the directory containing the
empty file. Processes trying to list that directory also
hang, and cause misbehaviour of the containing directory.
It is possible to create a chain of hanged processes trying
to read directories up to the mount point. At the same
time, psshfs generates some network traffic (around 5KB/s,
in my case). Interrupting the first hanged process causes
emission of â??Device not configuredâ?? error message by all
other hanged processes, and psshfs ceases to generate
network traffic. Subsequent trials to list any affected
directory or â?? if one of the affected directories is the mount
point â?? to umount the filesystem, fail with the same error.
>How-To-Repeat:
A patch for an ATF test follows:
Index: t_psshfs.sh
===================================================================
RCS file: /cvsroot/src/tests/fs/psshfs/t_psshfs.sh,v
retrieving revision 1.7
diff -u -r1.7 t_psshfs.sh
--- t_psshfs.sh 16 Mar 2013 07:54:04 -0000 1.7
+++ t_psshfs.sh 3 Sep 2016 20:39:14 -0000
@@ -262,6 +262,26 @@
stop_ssh
}
+atf_test_case read_empty_file cleanup
+read_empty_file_head() {
+ atf_set "descr" "Checks whether an empty file can be read"
+ # This test is supposed to make sure psshfs does not hang
+ # when reading from an empty file, hence the timeout.
+ atf_set "timeout" 8
+}
+read_empty_file_body() {
+ require_puffs
+ start_ssh
+ atf_check mkdir root mnt
+ atf_check -x ': > root/empty'
+ mount_psshfs root mnt
+ atf_check cat mnt/empty
+}
+read_empty_file_cleanup() {
+ umount mnt
+ stop_ssh
+}
+
# -------------------------------------------------------------------------
# Initialization.
# -------------------------------------------------------------------------
@@ -271,4 +291,5 @@
atf_add_test_case pwd
atf_add_test_case ls
#atf_add_test_case setattr_cache
+ atf_add_test_case read_empty_file
}
>Fix:
To avoid this problem one must not read from empty files through
psshfs. Determining whether a file is empty by means other than
trying to read it does not cause problems described above.
--
Mateusz Poszwa
Home |
Main Index |
Thread Index |
Old Index