diff -aurp open-iscsi-2.0-871-test4/usr/iscsiadm.c open-iscsi-2.0-871-test4.work/usr/iscsiadm.c --- open-iscsi-2.0-871-test4/usr/iscsiadm.c 2009-05-20 19:09:18.000000000 -0500 +++ open-iscsi-2.0-871-test4.work/usr/iscsiadm.c 2009-05-20 19:26:29.000000000 -0500 @@ -79,6 +79,7 @@ static struct option const long_options[ {"host", required_argument, NULL, 'H'}, {"sid", required_argument, NULL, 'r'}, {"rescan", no_argument, NULL, 'R'}, + {"info", no_argument, NULL, 'i'}, {"print", required_argument, NULL, 'P'}, {"login", no_argument, NULL, 'l'}, {"loginall", required_argument, NULL, 'L'}, @@ -92,7 +93,7 @@ static struct option const long_options[ {"help", no_argument, NULL, 'h'}, {NULL, 0, NULL, 0}, }; -static char *short_options = "RlVhm:p:P:T:H:I:U:k:L:d:r:n:v:o:sSt:u"; +static char *short_options = "iRlVhm:p:P:T:H:I:U:k:L:d:r:n:v:o:sSt:u"; static void usage(int status) { @@ -1728,6 +1729,7 @@ main(int argc, char **argv) int rc=0, sid=-1, op=OP_NOOP, type=-1, do_logout=0, do_stats=0; int do_login_all=0, do_logout_all=0, info_level=-1, num_ifaces = 0; int tpgt = PORTAL_GROUP_TAG_UNKNOWN, killiscsid=-1, do_show=0; + int do_info=0; struct sigaction sa_old; struct sigaction sa_new; discovery_rec_t drec; @@ -1808,6 +1810,9 @@ main(int argc, char **argv) case 'R': do_rescan = 1; break; + case 'i': + do_info = 1; + break; case 'P': info_level = atoi(optarg); break; @@ -2114,6 +2119,13 @@ main(int argc, char **argv) if (!iscsi_sysfs_get_transport_by_sid(sid)) goto free_info; + if (do_info) { + rc = session_info_print(3, info); + if (rc) + rc = -1; + goto free_info; + } + if (!do_logout && !do_rescan && !do_stats && op == OP_NOOP && info_level > 0) { rc = session_info_print(info_level, info); @@ -2147,6 +2159,11 @@ free_info: goto out; } + if (do_info) { + rc = session_info_print(3, NULL); + goto out; + } + rc = session_info_print(info_level, NULL); } break;