Commit bc1d72e7 authored by Richard Weinberger's avatar Richard Weinberger

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
...@@ -1252,12 +1252,28 @@ static void prepare_flush_request(struct request *req, ...@@ -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) ...@@ -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) ...@@ -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++;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment