/* Progression of requests under I/O to the processing list is prevented by the req->aborted flag being true for these requests. For this reason requests on the io list must be aborted first.  */
void fuse_abort_conn(struct fuse_conn *fc)
/* Progression of requests under I/O to the processing list is prevented by the req->aborted flag being true for these requests. For this reason requests on the io list must be aborted first.  */
void fuse_abort_conn(struct fuse_conn *fc)
{
	spin_lock(&fc->lock);
	if (fc->connected) {
		fc->connected = 0;
		fc->blocked = 0;
		end_io_requests(fc);
		end_requests(fc, &fc->pending);
		end_requests(fc, &fc->processing);
		wake_up_all(&fc->waitq);
		wake_up_all(&fc->blocked_waitq);
		kill_fasync(&fc->fasync, SIGIO, POLL_IN);
	}
	spin_unlock(&fc->lock);
}