fuse: duplicate ->connected in iqueue

This will allow checking ->connected just with the input queue lock.

Signed-off-by: Miklos Szeredi <mszeredi@suse.cz>
Reviewed-by: Ashish Samant <ashish.samant@oracle.com>
diff --git a/fs/fuse/dev.c b/fs/fuse/dev.c
index 24407e2..a24ead9 100644
--- a/fs/fuse/dev.c
+++ b/fs/fuse/dev.c
@@ -341,7 +341,7 @@
 	forget->forget_one.nlookup = nlookup;
 
 	spin_lock(&fc->lock);
-	if (fc->connected) {
+	if (fiq->connected) {
 		fiq->forget_list_tail->next = forget;
 		fiq->forget_list_tail = forget;
 		wake_up(&fiq->waitq);
@@ -471,14 +471,14 @@
 
 static void __fuse_request_send(struct fuse_conn *fc, struct fuse_req *req)
 {
+	struct fuse_iqueue *fiq = &fc->iq;
+
 	BUG_ON(test_bit(FR_BACKGROUND, &req->flags));
 	spin_lock(&fc->lock);
-	if (!fc->connected) {
+	if (!fiq->connected) {
 		spin_unlock(&fc->lock);
 		req->out.h.error = -ENOTCONN;
 	} else {
-		struct fuse_iqueue *fiq = &fc->iq;
-
 		req->in.h.unique = fuse_get_unique(fiq);
 		queue_request(fiq, req);
 		/* acquire extra reference, since request is still needed
@@ -619,7 +619,7 @@
 	__clear_bit(FR_ISREPLY, &req->flags);
 	req->in.h.unique = unique;
 	spin_lock(&fc->lock);
-	if (fc->connected) {
+	if (fiq->connected) {
 		queue_request(fiq, req);
 		err = 0;
 	}
@@ -1071,7 +1071,7 @@
 	DECLARE_WAITQUEUE(wait, current);
 
 	add_wait_queue_exclusive(&fiq->waitq, &wait);
-	while (fc->connected && !request_pending(fiq)) {
+	while (fiq->connected && !request_pending(fiq)) {
 		set_current_state(TASK_INTERRUPTIBLE);
 		if (signal_pending(current))
 			break;
@@ -1261,13 +1261,13 @@
  restart:
 	spin_lock(&fc->lock);
 	err = -EAGAIN;
-	if ((file->f_flags & O_NONBLOCK) && fc->connected &&
+	if ((file->f_flags & O_NONBLOCK) && fiq->connected &&
 	    !request_pending(fiq))
 		goto err_unlock;
 
 	request_wait(fc);
 	err = -ENODEV;
-	if (!fc->connected)
+	if (!fiq->connected)
 		goto err_unlock;
 	err = -ERESTARTSYS;
 	if (!request_pending(fiq))
@@ -2054,7 +2054,7 @@
 	poll_wait(file, &fiq->waitq, wait);
 
 	spin_lock(&fc->lock);
-	if (!fc->connected)
+	if (!fiq->connected)
 		mask = POLLERR;
 	else if (request_pending(fiq))
 		mask |= POLLIN | POLLRDNORM;
@@ -2127,6 +2127,7 @@
 		LIST_HEAD(to_end2);
 
 		fc->connected = 0;
+		fiq->connected = 0;
 		fc->blocked = 0;
 		fuse_set_initialized(fc);
 		list_for_each_entry_safe(req, next, &fc->io, list) {