[stgt] [Iscsitarget-devel] stgt does not preempt SCSI-2 reservations; may break MS Cluster Service failover
FUJITA Tomonori
fujita.tomonori at lab.ntt.co.jp
Wed Sep 9 09:57:46 CEST 2009
On Tue, 8 Sep 2009 10:56:51 +0200
Lars Ellenberg <lars.ellenberg at linbit.com> wrote:
> On Tue, Sep 08, 2009 at 07:54:55AM +0900, FUJITA Tomonori wrote:
> > On Mon, 07 Sep 2009 10:16:06 +0200
> > Florian Haas <florian.haas at linbit.com> wrote:
> >
> > > I am also failing to understand why the MS initiator would use the
> > > SERVICE ACTION IN detour when upon initial login it just uses standard
> > > INQUIRY commands and READ CAPACITY.
> >
> > Linux kernel also tries READ_CAPACITY_16 first (it doesn't if it knows
> > that READ_CAPACITY_16 doesn't work with a device).
> >
> > I think that rejecting READ_CAPACITY_16 with Reservation Conflict is
> > a bug. Can you try the following patch.
>
> Being a SCSI illiterate myself,
> I certainly will not argue with someone working in the SCSI field
> for years about compliance with (already superseded) SCSI specs.
>
> SCSI2 9.1.7 Reservations says
> ... READ CAPACITY ... is unaffected by _extent_ reservations.
>
> Now, a LUN reservation is or is not an extent reservation?
>
> Is this a bug in the target implementation, or is it a bug in the
> initiator, trying a READ CAPACITY before a reservation?
It's a target bug. I've merged the following patch.
=
From: FUJITA Tomonori <fujita.tomonori at lab.ntt.co.jp>
Subject: [PATCH] sbc: needs to perform READ CAPACITY even with a reserved lu
Signed-off-by: FUJITA Tomonori <fujita.tomonori at lab.ntt.co.jp>
---
usr/sbc.c | 6 ------
1 files changed, 0 insertions(+), 6 deletions(-)
diff --git a/usr/sbc.c b/usr/sbc.c
index cc308d4..710165d 100644
--- a/usr/sbc.c
+++ b/usr/sbc.c
@@ -128,9 +128,6 @@ static int sbc_read_capacity(int host_no, struct scsi_cmd *cmd)
unsigned char key = ILLEGAL_REQUEST;
uint16_t asc = ASC_LUN_NOT_SUPPORTED;
- if (device_reserved(cmd))
- return SAM_STAT_RESERVATION_CONFLICT;
-
if (!(scb[8] & 0x1) & (scb[2] | scb[3] | scb[4] | scb[5])) {
asc = ASC_INVALID_FIELD_IN_CDB;
goto sense;
@@ -165,9 +162,6 @@ static int sbc_service_action(int host_no, struct scsi_cmd *cmd)
uint32_t *data;
uint64_t size;
- if (device_reserved(cmd))
- return SAM_STAT_RESERVATION_CONFLICT;
-
if (cmd->scb[1] != SAI_READ_CAPACITY_16)
goto sense;
--
1.5.6.5
--
To unsubscribe from this list: send the line "unsubscribe stgt" in
the body of a message to majordomo at vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
More information about the stgt
mailing list