aboutsummaryrefslogtreecommitdiffstats
path: root/Documentation/filesystems
diff options
context:
space:
mode:
Diffstat (limited to 'Documentation/filesystems')
-rw-r--r--Documentation/filesystems/fuse.txt63
1 files changed, 63 insertions, 0 deletions
diff --git a/Documentation/filesystems/fuse.txt b/Documentation/filesystems/fuse.txt
index 6b5741e651a2..33f74310d161 100644
--- a/Documentation/filesystems/fuse.txt
+++ b/Documentation/filesystems/fuse.txt
@@ -86,6 +86,62 @@ Mount options
86 The default is infinite. Note that the size of read requests is 86 The default is infinite. Note that the size of read requests is
87 limited anyway to 32 pages (which is 128kbyte on i386). 87 limited anyway to 32 pages (which is 128kbyte on i386).
88 88
89Sysfs
90~~~~~
91
92FUSE sets up the following hierarchy in sysfs:
93
94 /sys/fs/fuse/connections/N/
95
96where N is an increasing number allocated to each new connection.
97
98For each connection the following attributes are defined:
99
100 'waiting'
101
102 The number of requests which are waiting to be transfered to
103 userspace or being processed by the filesystem daemon. If there is
104 no filesystem activity and 'waiting' is non-zero, then the
105 filesystem is hung or deadlocked.
106
107 'abort'
108
109 Writing anything into this file will abort the filesystem
110 connection. This means that all waiting requests will be aborted an
111 error returned for all aborted and new requests.
112
113Only a privileged user may read or write these attributes.
114
115Aborting a filesystem connection
116~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
117
118It is possible to get into certain situations where the filesystem is
119not responding. Reasons for this may be:
120
121 a) Broken userspace filesystem implementation
122
123 b) Network connection down
124
125 c) Accidental deadlock
126
127 d) Malicious deadlock
128
129(For more on c) and d) see later sections)
130
131In either of these cases it may be useful to abort the connection to
132the filesystem. There are several ways to do this:
133
134 - Kill the filesystem daemon. Works in case of a) and b)
135
136 - Kill the filesystem daemon and all users of the filesystem. Works
137 in all cases except some malicious deadlocks
138
139 - Use forced umount (umount -f). Works in all cases but only if
140 filesystem is still attached (it hasn't been lazy unmounted)
141
142 - Abort filesystem through the sysfs interface. Most powerful
143 method, always works.
144
89How do non-privileged mounts work? 145How do non-privileged mounts work?
90~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 146~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
91 147
@@ -313,3 +369,10 @@ faulted with get_user_pages(). The 'req->locked' flag indicates
313when the copy is taking place, and interruption is delayed until 369when the copy is taking place, and interruption is delayed until
314this flag is unset. 370this flag is unset.
315 371
372Scenario 3 - Tricky deadlock with asynchronous read
373---------------------------------------------------
374
375The same situation as above, except thread-1 will wait on page lock
376and hence it will be uninterruptible as well. The solution is to
377abort the connection with forced umount (if mount is attached) or
378through the abort attribute in sysfs.