945{
946 unsigned mask = POLLOUT | POLLWRNORM;
947 struct fuse_conn *fc = fuse_get_conn(file);
948 if (!fc)
949 return POLLERR;
950
951 poll_wait(file, &fc->waitq, wait);
952
953 spin_lock(&fc->lock);
954 if (!fc->connected)
955 mask = POLLERR;
956 else if (request_pending(fc))
957 mask |= POLLIN | POLLRDNORM;
958 spin_unlock(&fc->lock);
959
960 return mask;
961}
962
963
964
965
966
967
968static void end_requests(struct fuse_conn *fc, struct list_head *head)
969{
970 while (!list_empty(head)) {
971 struct fuse_req *req;
972 req = list_entry(head->next, struct fuse_req, list);
973 req->out.h.error = -ECONNABORTED;
974 request_end(fc, req);
975 spin_lock(&fc->lock);
976 }
977}
978
979
980
981
982
983
984
985