Message type for BDEV_REPLY.

Change-Id: I48ca5a4f77cc9e924e8aee2fe6c32e0da9b42560
This commit is contained in:
2014-07-25 20:39:06 +02:00
parent 8644f25feb
commit 0522c9d0c1
10 changed files with 87 additions and 60 deletions

View File

@@ -185,8 +185,9 @@ int bdev_sendrec(dev_t dev, const message *m_orig)
/* The protocol contract states that no asynchronous reply can satisfy a
* synchronous SENDREC call, so we can never get an asynchronous reply here.
*/
if (m.BDEV_ID != NO_ID) {
printf("bdev: driver (%d) sent invalid ID (%ld)\n", endpt, m.BDEV_ID);
if (m.m_lblockdriver_lbdev_reply.id != NO_ID) {
printf("bdev: driver (%d) sent invalid ID (%d)\n", endpt,
m.m_lblockdriver_lbdev_reply.id);
return EINVAL;
}
@@ -198,7 +199,7 @@ int bdev_sendrec(dev_t dev, const message *m_orig)
* device, and then resend the request. If the call keeps failing, the caller
* will eventually give up.
*/
if (m.BDEV_STATUS == ERESTART) {
if (m.m_lblockdriver_lbdev_reply.status == ERESTART) {
printf("bdev: got ERESTART from driver (%d), sleeping for reopen\n",
endpt);
@@ -208,7 +209,7 @@ int bdev_sendrec(dev_t dev, const message *m_orig)
}
/* Return the result of our request. */
return m.BDEV_STATUS;
return m.m_lblockdriver_lbdev_reply.status;
}
static int bdev_receive(dev_t dev, message *m)
@@ -278,11 +279,11 @@ void bdev_reply_asyn(message *m)
assert(m->m_type == BDEV_REPLY);
/* Get the corresponding asynchronous call structure. */
id = m->BDEV_ID;
id = m->m_lblockdriver_lbdev_reply.id;
if ((call = bdev_call_get(id)) == NULL) {
printf("bdev: driver (%d) replied to unknown request (%ld)\n",
m->m_source, m->BDEV_ID);
printf("bdev: driver (%d) replied to unknown request (%d)\n",
m->m_source, m->m_lblockdriver_lbdev_reply.id);
return;
}
@@ -298,7 +299,7 @@ void bdev_reply_asyn(message *m)
}
/* See the ERESTART comment in bdev_sendrec(). */
if (m->BDEV_STATUS == ERESTART) {
if (m->m_lblockdriver_lbdev_reply.status == ERESTART) {
printf("bdev: got ERESTART from driver (%d), sleeping for reopen\n",
endpt);
@@ -310,7 +311,7 @@ void bdev_reply_asyn(message *m)
return;
}
bdev_callback_asyn(call, m->BDEV_STATUS);
bdev_callback_asyn(call, m->m_lblockdriver_lbdev_reply.status);
}
int bdev_wait_asyn(bdev_id_t id)

View File

@@ -58,13 +58,13 @@ int bdev_minor_reopen(dev_t dev)
return EINVAL;
}
if (m.BDEV_ID != NO_ID) {
if (m.m_lblockdriver_lbdev_reply.id != NO_ID) {
printf("bdev: driver (%d) sent invalid ID (%ld)\n",
endpt, m.BDEV_ID);
endpt, m.m_lblockdriver_lbdev_reply.id);
return EINVAL;
}
if ((r = m.BDEV_STATUS) != OK) {
if ((r = m.m_lblockdriver_lbdev_reply.status) != OK) {
printf("bdev: driver (%d) failed device reopen (%d)\n",
endpt, r);
return r;

View File

@@ -161,8 +161,8 @@ void blockdriver_reply(message *m_ptr, int ipc_status, int reply)
memset(&m_reply, 0, sizeof(m_reply));
m_reply.m_type = BDEV_REPLY;
m_reply.BDEV_STATUS = reply;
m_reply.BDEV_ID = m_ptr->BDEV_ID;
m_reply.m_lblockdriver_lbdev_reply.status = reply;
m_reply.m_lblockdriver_lbdev_reply.id = m_ptr->BDEV_ID;
send_reply(m_ptr->m_source, &m_reply, ipc_status);
}

View File

@@ -442,8 +442,8 @@ static void do_block_open(message *m_ptr, int ipc_status)
memset(&m_reply, 0, sizeof(m_reply));
m_reply.m_type = BDEV_REPLY;
m_reply.BDEV_STATUS = ENXIO;
m_reply.BDEV_ID = m_ptr->BDEV_ID;
m_reply.m_lblockdriver_lbdev_reply.status = ENXIO;
m_reply.m_lblockdriver_lbdev_reply.id = m_ptr->BDEV_ID;
send_reply(m_ptr->m_source, &m_reply, ipc_status);
}