aboutsummaryrefslogtreecommitdiffstats
path: root/fs/fuse/fuse_i.h
diff options
context:
space:
mode:
authorMiklos Szeredi <miklos@szeredi.hu>2006-01-17 01:14:41 -0500
committerLinus Torvalds <torvalds@g5.osdl.org>2006-01-17 02:15:30 -0500
commit69a53bf267fa58b89aa659d121dfe38436562a30 (patch)
tree36276fdbf7bfdc787708e8d5b2d4b79a0b5a4c56 /fs/fuse/fuse_i.h
parent0cd5b88553acf0611474dbaf8e43770eed268060 (diff)
[PATCH] fuse: add connection aborting
Add ability to abort a filesystem connection. With the introduction of asynchronous reads, the ability to interrupt any request is not enough to dissolve deadlocks, since now waiting for the request completion (page unlocked) is independent of the actual request, so in a deadlock all threads will be uninterruptible. The solution is to make it possible to abort all requests, even those currently undergoing I/O to/from userspace. The natural interface for this is 'mount -f mountpoint', but that only works as long as the filesystem is attached. So also add an 'abort' attribute to the sysfs view of the connection. Signed-off-by: Miklos Szeredi <miklos@szeredi.hu> Cc: Greg KH <greg@kroah.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'fs/fuse/fuse_i.h')
-rw-r--r--fs/fuse/fuse_i.h7
1 files changed, 5 insertions, 2 deletions
diff --git a/fs/fuse/fuse_i.h b/fs/fuse/fuse_i.h
index bcb453f68111..e6381db41df9 100644
--- a/fs/fuse/fuse_i.h
+++ b/fs/fuse/fuse_i.h
@@ -246,8 +246,8 @@ struct fuse_conn {
246 /** Mount is active */ 246 /** Mount is active */
247 unsigned mounted : 1; 247 unsigned mounted : 1;
248 248
249 /** Connection established, cleared on umount and device 249 /** Connection established, cleared on umount, connection
250 release */ 250 abort and device release */
251 unsigned connected : 1; 251 unsigned connected : 1;
252 252
253 /** Connection failed (version mismatch) */ 253 /** Connection failed (version mismatch) */
@@ -463,6 +463,9 @@ void request_send_background(struct fuse_conn *fc, struct fuse_req *req);
463 */ 463 */
464void fuse_release_background(struct fuse_req *req); 464void fuse_release_background(struct fuse_req *req);
465 465
466/* Abort all requests */
467void fuse_abort_conn(struct fuse_conn *fc);
468
466/** 469/**
467 * Get the attributes of a file 470 * Get the attributes of a file
468 */ 471 */