A few enhancements I made while working on the Firewire target (sbp_targ).

Update the error handling in a couple of cases to exit gracefully if
certain mandatory conditions aren't met.

Reduce the maximum number of initiators to 8 for this example code.  While
1024 is more correct, this example code would act like it was stalled out
even though it was merely allocating the needed structures in init_ccbs()

Reviewed by:	scottl@freebsd.org
This commit is contained in:
Sean Bruno 2009-09-07 23:16:27 +00:00
parent 28e449adf2
commit b0d0537558
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=196955
2 changed files with 7 additions and 3 deletions

View File

@ -226,7 +226,7 @@ main(int argc, char *argv[])
/* Open backing store for IO */
file_fd = open(file_name, O_RDWR);
if (file_fd < 0)
err(1, "open backing store file");
errx(EX_NOINPUT, "open backing store file");
/* Check backing store size or use the size user gave us */
if (user_size == 0) {
@ -291,7 +291,9 @@ main(int argc, char *argv[])
} while (targ_fd < 0 && errno == EBUSY);
if (targ_fd < 0)
err(1, "Tried to open %d devices, none available", unit);
errx(1, "Tried to open %d devices, none available", unit);
else
warnx("opened /dev/targ%d", unit);
/* The first three are handled by kevent() later */
signal(SIGHUP, SIG_IGN);
@ -318,6 +320,7 @@ main(int argc, char *argv[])
/* Set up inquiry data according to what SIM supports */
if (get_sim_flags(&sim_flags) != CAM_REQ_CMP)
errx(1, "get_sim_flags");
if (tcmd_init(req_flags, sim_flags) != 0)
errx(1, "Initializing tcmd subsystem failed");
@ -327,6 +330,7 @@ main(int argc, char *argv[])
if (debug)
warnx("main loop beginning");
request_loop();
exit(0);

View File

@ -35,7 +35,7 @@
* Maximum number of parallel commands to accept,
* 1024 for Fibre Channel (SPI is 16).
*/
#define MAX_INITIATORS 1024
#define MAX_INITIATORS 8
#define SECTOR_SIZE 512
#define MAX_EVENTS (MAX_INITIATORS + 5)
/* kqueue for AIO, signals */