Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit bc1d72e7 authored by Richard Weinberger's avatar Richard Weinberger
Browse files

um: ubd: Introduce submit_request()



Just a clean-up patch to remove the open coded
variants and to ensure that all requests are submitted the
same way.

Signed-off-by: default avatarRichard Weinberger <richard@nod.at>
parent 805f11a0
Loading
Loading
Loading
Loading
+19 −13
Original line number Original line Diff line number Diff line
@@ -1252,12 +1252,28 @@ static void prepare_flush_request(struct request *req,
	io_req->op = UBD_FLUSH;
	io_req->op = UBD_FLUSH;
}
}


static bool submit_request(struct io_thread_req *io_req, struct ubd *dev)
{
	int n = os_write_file(thread_fd, &io_req,
			     sizeof(io_req));
	if (n != sizeof(io_req)) {
		if (n != -EAGAIN)
			printk("write to io thread failed, "
			       "errno = %d\n", -n);
		else if (list_empty(&dev->restart))
			list_add(&dev->restart, &restart);

		kfree(io_req);
		return false;
	}
	return true;
}

/* Called with dev->lock held */
/* Called with dev->lock held */
static void do_ubd_request(struct request_queue *q)
static void do_ubd_request(struct request_queue *q)
{
{
	struct io_thread_req *io_req;
	struct io_thread_req *io_req;
	struct request *req;
	struct request *req;
	int n;


	while(1){
	while(1){
		struct ubd *dev = q->queuedata;
		struct ubd *dev = q->queuedata;
@@ -1283,8 +1299,7 @@ static void do_ubd_request(struct request_queue *q)
				return;
				return;
			}
			}
			prepare_flush_request(req, io_req);
			prepare_flush_request(req, io_req);
			os_write_file(thread_fd, &io_req,
			submit_request(io_req, dev);
					  sizeof(struct io_thread_req *));
		}
		}


		while(dev->start_sg < dev->end_sg){
		while(dev->start_sg < dev->end_sg){
@@ -1301,17 +1316,8 @@ static void do_ubd_request(struct request_queue *q)
					(unsigned long long)dev->rq_pos << 9,
					(unsigned long long)dev->rq_pos << 9,
					sg->offset, sg->length, sg_page(sg));
					sg->offset, sg->length, sg_page(sg));


			n = os_write_file(thread_fd, &io_req,
			if (submit_request(io_req, dev) == false)
					  sizeof(struct io_thread_req *));
			if(n != sizeof(struct io_thread_req *)){
				if(n != -EAGAIN)
					printk("write to io thread failed, "
					       "errno = %d\n", -n);
				else if(list_empty(&dev->restart))
					list_add(&dev->restart, &restart);
				kfree(io_req);
				return;
				return;
			}


			dev->rq_pos += sg->length >> 9;
			dev->rq_pos += sg->length >> 9;
			dev->start_sg++;
			dev->start_sg++;