Loading arch/um/drivers/ubd_kern.c +19 −13 Original line number Original line Diff line number Diff line Loading @@ -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; Loading @@ -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){ Loading @@ -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++; Loading Loading
arch/um/drivers/ubd_kern.c +19 −13 Original line number Original line Diff line number Diff line Loading @@ -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; Loading @@ -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){ Loading @@ -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++; Loading