Print this page
NEX-6018 Return of the walking dead idm_refcnt_wait_ref comstar threads
Reviewed by: Rick McNeal <rick.mcneal@nexenta.com>
Reviewed by: Evan Layton <evan.layton@nexenta.com>
re #12375 rb4141 Create ALUA Support on NexentaStor; Failover causes loss of storage
re #7936 rb3706 Support for COMSTAR/OEM
re #8002 rb3706 Allow setting iSCSI vendor ID via stmf_sbd.conf
re #11454 rb3750 Fix inconsistent vid/pid in stmf
Re #6790 backspace should perform delete on console
VAAI (XXX ATS support for COMSTAR, YYY Block-copy support for COMSTAR)
*** 16,29 ****
--- 16,32 ----
* fields enclosed by brackets "[]" replaced with your own identifying
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*/
+
/*
* Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright 2016 Nexenta Systems, Inc. All rights reserved.
* Copyright (c) 2013 by Delphix. All rights reserved.
*/
+
#ifndef _STMF_H
#define _STMF_H
#include <sys/stmf_defines.h>
*** 203,212 ****
--- 206,220 ----
* PP sets this flag if it can process dbufs created by the LU.
*/
#define TASK_AF_ACCEPT_LU_DBUF 0x08
/*
+ * Indicating a PPPT task
+ */
+ #define TASK_AF_PPPT_TASK 0x10
+
+ /*
* scsi_task_t extension identifiers
*/
#define STMF_TASK_EXT_NONE 0
/*
*** 377,387 ****
uint32_t iof);
void stmf_send_status_done(scsi_task_t *task, stmf_status_t s, uint32_t iof);
void stmf_task_lu_done(scsi_task_t *task);
void stmf_abort(int abort_cmd, scsi_task_t *task, stmf_status_t s, void *arg);
void stmf_task_lu_aborted(scsi_task_t *task, stmf_status_t s, uint32_t iof);
! void stmf_task_lport_aborted(scsi_task_t *task, stmf_status_t s, uint32_t iof);
stmf_status_t stmf_task_poll_lu(scsi_task_t *task, uint32_t timeout);
stmf_status_t stmf_task_poll_lport(scsi_task_t *task, uint32_t timeout);
stmf_status_t stmf_ctl(int cmd, void *obj, void *arg);
stmf_status_t stmf_register_itl_handle(struct stmf_lu *lu, uint8_t *lun,
struct stmf_scsi_session *ss, uint64_t session_id, void *itl_handle);
--- 385,396 ----
uint32_t iof);
void stmf_send_status_done(scsi_task_t *task, stmf_status_t s, uint32_t iof);
void stmf_task_lu_done(scsi_task_t *task);
void stmf_abort(int abort_cmd, scsi_task_t *task, stmf_status_t s, void *arg);
void stmf_task_lu_aborted(scsi_task_t *task, stmf_status_t s, uint32_t iof);
! void stmf_task_lport_aborted_unlocked(scsi_task_t *task, stmf_status_t s,
! uint32_t iof);
stmf_status_t stmf_task_poll_lu(scsi_task_t *task, uint32_t timeout);
stmf_status_t stmf_task_poll_lport(scsi_task_t *task, uint32_t timeout);
stmf_status_t stmf_ctl(int cmd, void *obj, void *arg);
stmf_status_t stmf_register_itl_handle(struct stmf_lu *lu, uint8_t *lun,
struct stmf_scsi_session *ss, uint64_t session_id, void *itl_handle);
*** 414,423 ****
--- 423,435 ----
uint32_t, uint16_t *);
boolean_t stmf_scsilib_tptid_compare(struct scsi_transport_id *,
struct scsi_transport_id *);
struct stmf_remote_port *stmf_remote_port_alloc(uint16_t);
void stmf_remote_port_free(struct stmf_remote_port *);
+ struct stmf_lu *stmf_check_and_hold_lu(struct scsi_task *task, uint8_t *guid);
+ void stmf_release_lu(struct stmf_lu *lu);
+ int stmf_is_task_being_aborted(struct scsi_task *task);
#ifdef __cplusplus
}
#endif
#endif /* _STMF_H */