diff options
author | Claudio Jeker <claudio@cvs.openbsd.org> | 2011-01-06 15:32:48 +0000 |
---|---|---|
committer | Claudio Jeker <claudio@cvs.openbsd.org> | 2011-01-06 15:32:48 +0000 |
commit | ca89505818ecb11b93ac30eae3e0da22b267e2a1 (patch) | |
tree | bb2d92e209b88c425827a685718b057bf3de5e62 /usr.sbin/iscsid/vscsi.c | |
parent | 1ccf79a56038298fd0b7f809ae3858d484b866b1 (diff) |
Add minimal LUN handling. Currently only single level LUN addressing is
supported because the vscsi ioctl interface is limited to that.
Seems to work according to my iscsi target having 2 units per target.
OK dlg@
Diffstat (limited to 'usr.sbin/iscsid/vscsi.c')
-rw-r--r-- | usr.sbin/iscsid/vscsi.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/usr.sbin/iscsid/vscsi.c b/usr.sbin/iscsid/vscsi.c index dd94ea62183..cadbd7d4f36 100644 --- a/usr.sbin/iscsid/vscsi.c +++ b/usr.sbin/iscsid/vscsi.c @@ -1,4 +1,4 @@ -/* $OpenBSD: vscsi.c,v 1.3 2011/01/04 10:02:20 claudio Exp $ */ +/* $OpenBSD: vscsi.c,v 1.4 2011/01/06 15:32:47 claudio Exp $ */ /* * Copyright (c) 2009 Claudio Jeker <claudio@openbsd.org> @@ -106,7 +106,11 @@ vscsi_dispatch(int fd, short event, void *arg) sreq->flags |= ISCSI_SCSI_F_R; sreq->bytes = htonl(i2t.datalen); - /* XXX LUN HANDLING !!!! */ + /* LUN handling: currently we only do single level LUNs < 256 */ + if (t->lun >= 256) + fatal("vscsi_dispatch: I'm sorry, Dave. " + "I'm afraid I can't do that."); + sreq->lun[1] = t->lun; bcopy(&i2t.cmd, sreq->cdb, i2t.cmdlen); @@ -268,6 +272,8 @@ vscsi_dataout(struct session *s, struct scsi_task *t, u_int32_t ttt, size_t len) dout->opcode = ISCSI_OP_DATA_OUT; if (off + size == len) dout->flags = 0x80; /* XXX magic value: F flag*/ + /* LUN handling: currently we only do single level LUNs < 256 */ + dout->lun[1] = t->lun; dout->ttt = ttt; dout->datasn = htonl(dsn++); t32 = htonl(size); |