Re: Non-news on HP MPX100
On Nov 12, 2009, at 12:17 AM, Ulrich Windl wrote: > > Hi, > > just a short note on the HP MPX100 firmware: Different to the > announcement made > some months ago, the most current firmware for the HP MPX100 (HP > EVA iSCSI > connectivity option) included no change regarding Linux and CHAP: The > documenatation still says CHAP ist not supported for Linux. As the > product is > actually from Qlogic, I'm not sure who's to blame. So have you tried enabling CHAP and it does not work ? If you can provide more details I can work with the group who is responsible for this product and help try to address it. Thanks Ravi > The impression that I get from those software giants is that they > completely > unable to react to markets demands. Sorry, but I had to let that > off... > > --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups "open-iscsi" group. To post to this group, send email to open-iscsi@googlegroups.com To unsubscribe from this group, send email to open-iscsi+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/open-iscsi -~--~~~~--~~--~--~---
Re: Non-news on HP MPX100
On 13 Nov 2009 at 0:32, ravi.anand wrote: > > > On Nov 12, 2009, at 12:17 AM, Ulrich Windl wrote: > > > > > Hi, > > > > just a short note on the HP MPX100 firmware: Different to the > > announcement made > > some months ago, the most current firmware for the HP MPX100 (HP > > EVA iSCSI > > connectivity option) included no change regarding Linux and CHAP: The > > documenatation still says CHAP ist not supported for Linux. As the > > product is > > actually from Qlogic, I'm not sure who's to blame. > > So have you tried enabling CHAP and it does not work ? No, I didn't even install the new firmware after having read the release notes. After all, there are no instructions on how to configure it. With the version I have already installed, I tried it, but it didn't work. > > If you can provide more details I can work with the group who is > responsible for this product and help try > to address it. What I want to have is similar possibilities as are offered for Microsoft Windows. Then I hope open-iscsi will contribute it's part as well ;-) Regards, Ulrich --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups "open-iscsi" group. To post to this group, send email to open-iscsi@googlegroups.com To unsubscribe from this group, send email to open-iscsi+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/open-iscsi -~--~~~~--~~--~--~---
Re: [Patch 1/2] iscsiadm: login_portal() misses outputting logs for iscsid_req_by_rec()
>Are you hitting the non async code path? Did you hit the >iscsid_req_by_rec call? How many targets or portals were you logging into? No, I never hit iscsid_req_by_rec call. I was just reading the codes of iscsiadm and thought that there is less consideration when calling iscsid_req_by_rec() than iscsid_req_by_rec_async(). >If iscsid_req_by_rec fails, then won't we log an error here? Sorry, my point was very unclear for you and my patch was also not good. I basically have two points that I want to improve. No1, checking the return value of iscisd_request() when calling iscsid_req_by_rec(). No2, outputting login success message even when calling iscsid_req_by_rec(). In the origicanl code of login_portal() below, if (async_req) rc = iscsid_req_by_rec_async(MGMT_IPC_SESSION_LOGIN, rec, &fd); else rc = iscsid_req_by_rec(MGMT_IPC_SESSION_LOGIN, rec); /* we raced with another app or instance of iscsiadm */ if (rc == MGMT_IPC_ERR_EXISTS) { if (async_req) free(async_req); return 0; } else if (rc) { iscsid_handle_error(rc); if (async_req) free(async_req); return ENOTCONN; } the return value of iscsid_request() is checked when calling iscsid_req_by_rec_async(). However, the same return value is not checked when calling iscsid_req_by_rec(). What you check here with rc = iscsid_req_by_rec() is not the return value of iscsid_request(), but that of iscsid_req_wait() as you can see in the codes below. int iscsid_req_by_rec(iscsiadm_cmd_e cmd, node_rec_t *rec) { int err, fd; err = iscsid_req_by_rec_async(cmd, rec, &fd); if (err) return err; return iscsid_req_wait(cmd, fd); } So, I check the return value of iscsid_request() inside iscsid_req_by_rec(). (I actually did not put the codes to achive this in the second patch of util.c. and maybe that made you confused... I will send a new patch of util.c that includes below codes.) The code below will achive my point No1. int iscsid_req_by_rec(iscsiadm_cmd_e cmd, node_rec_t *rec) { int err, fd; err = iscsid_req_by_rec_async(cmd, rec, &fd); if (err == MGMT_IPC_ERR_EXISTS) { return 0; } else if (err) { iscsid_handle_error(err); return ENOTCONN; } I also check the return value of iscsid_req_wait() inside iscsid_req_by_rec() and outputting logs of login status. This will achive my point No2. err = iscsid_req_wait(cmd, fd); if (err) { log_error("Could not login to [iface: %s, target: %s, " "portal: %s,%d]: ", rec->iface.name, rec->name, rec->conn[0].address, rec->conn[0].port); } else printf("Login to [iface: %s, target: %s, portal: " "%s,%d]: successful\n", rec->iface.name, rec->name, rec->conn[0].address, rec->conn[0].port); return err; } Since we checked the return value of iscsid_request() inside iscsid_req_by_rec(), what we need to check is only the return value of iscsid_req_wait() of iscsid_req_by_rec(). So, patched login_portal() should be something like this now. if (async_req) { rc = iscsid_req_by_rec_async(MGMT_IPC_SESSION_LOGIN, rec, &fd); if (rc == MGMT_IPC_ERR_EXISTS) { if (async_req) free(async_req); return 0; } else if (rc) { iscsid_handle_error(rc); if (async_req) free(async_req); return ENOTCONN; } list_add_tail(&async_req->list, list); async_req->fd = fd; async_req->data = rec; return 0; } else { rc = iscsid_req_by_rec(MGMT_IPC_SESSION_LOGIN, rec); if (rc) { iscsid_handle_error(rc); return ENOTCONN; } else return rc; } } I know that iscsid_req_by_rec() is almost never called in the reality. But, I just thought the codes looks little better if we take care of iscsid_req_by_rec() more. This patch unnecessary? Unclear? Give me your frank opinion, Mike. Kim. --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups "open-iscsi" group. To post to this group, send email to open-iscsi@googlegroups.com To unsubscribe from this group, send email to open-iscsi+unsubscr...@googlegroups.com For more op
Re: [Patch 2/2] iscsiadm: checking return value of iscsid_req_wait() in iscsid_req_by_rec()
>It looks like you used the git tree. What branch did you use? I am >asking because I could not find the code below. I actually did't use git. I just used "diff -Naur file1 file2 > my patch". and put "signed-off" by myself. This is actually very first time to send patch and dont't know the correct manner to send a patch to maintainer. Sorry for making confused you. Do I have to use git to make patch? I actually put modified patch of util.c that adds checking MGMT_IPC_ERR_EXISTS as I explained in the reply to your question in [Pathch 1/2]. If it would be better if making patch using git, I will do so. Also I would be very appriciate if you briefly tell me the correct manner of sending patch to you. Thanks. Kim --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups "open-iscsi" group. To post to this group, send email to open-iscsi@googlegroups.com To unsubscribe from this group, send email to open-iscsi+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/open-iscsi -~--~~~~--~~--~--~--- util.c.patch2 Description: Binary data
Re: [Patch 1/2] iscsiadm: login_portal() misses outputting logs for iscsid_req_by_rec()
Yangkook Kim wrote:> > int iscsid_req_by_rec(iscsiadm_cmd_e cmd, node_rec_t *rec) > { > int err, fd; > > err = iscsid_req_by_rec_async(cmd, rec, &fd); > if (err) > return err; If the iscsid_request call in iscsid_req_by_rec_async failed we would return the err value here. Then in iscsiadm.c we do: { .. rc = iscsid_req_by_rec(MGMT_IPC_SESSION_LOGIN, rec); In the line above we set rc to the err value returned when iscsid_req_by_rec called iscsid_req_by_rec_async and failed. /* we raced with another app or instance of iscsiadm */ if (rc == MGMT_IPC_ERR_EXISTS) { if (async_req) free(async_req); return 0; } else if (rc) { And then right here we see rc is a error. iscsid_handle_error(rc); Finally here we print out the initiator reported error XYZ here. if (async_req) free(async_req); return ENOTCONN; } } else if (rc) { iscsid_handle_error(rc); if (async_req) free(async_req); return ENOTCONN; . } If the iscsid_req_by_rec call to iscsid_req_by_rec_async is successful then we will return the error value of that below. And then again we would set rc to that return value and evaluate like it above in the iscsiadm.c snippet. > return iscsid_req_wait(cmd, fd); > } > For your #2 issue you are right that is messed up. --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups "open-iscsi" group. To post to this group, send email to open-iscsi@googlegroups.com To unsubscribe from this group, send email to open-iscsi+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/open-iscsi -~--~~~~--~~--~--~---