Print this page
NEX-5428 Backout the 5.0 changes
NEX-2937 Continuous write_same starves all other commands
Reviewed by: Rick McNeal <rick.mcneal@nexenta.com>
Reviewed by: Steve Peng <steve.peng@nexenta.com>
NEX-3217 Panic running benchmark at ESX VM
NEX-3204 Panic doing FC rescan from ESXi 5.5u1 with VAAI enabled
        Reviewed by: Rick McNeal <rick.mcneal@nexenta.com>
        Reviewed by: Tony Nguyen <tony.nguyen@nexenta.com>
NEX-3023 Panics and hangs when using write_same and compare_and_write
Review by: Bayard Bell <bayard.bell@nexenta.com>
Review by: Rick McNeal <rick.mcneal@nexenta.com>
Review by: Jean McCormack <jean.mccormack@nexenta.com>
Approved by: Jean McCormack <jean.mccormack@nexenta.com>
Related bug: NEX-2723 Kernel panic in xfer_completion code for write_same (0x93) and compare_and_write (0x89)
NEX-2178 Multi-block transfers on memory constrained systems for write_same (0x93) and compare_and_write (0x89) cause memory corruption
NEX-2105 assertion failed: (scmd->flags & SBD_SCSI_CMD_TRANS_DATA) && scmd->trans_data != NULL, file: ../../common/io/comstar/lu/stmf_sbd/sbd_scsi.c, line: 2447
SUP-698  Appliance is regularly crashing with a kernel memory allocator, duplicate free: buffer freed
NEX-2105 assertion failed: (scmd->flags & SBD_SCSI_CMD_TRANS_DATA) && scmd->trans_data != NULL, file:
NEX-1965 Page fault at netbios_first_level_name_decode+0xbb
Support simultaneous compare_and_write operations for VAAI
Bug IDs SUP-505
                SUP-1768
                SUP-1928
Code Reviewers:
        Sarah Jelinek
        Jeffry Molanus
        Albert Lee
        Harold Shaw
OS-69 Open source VAAI
8226 nza-kernel needs to be buildable by itself
Re #6790 backspace should perform delete on console
VAAI (XXX ATS support for COMSTAR, YYY Block-copy support for COMSTAR)

*** 19,29 **** * CDDL HEADER END */ /* * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved. * ! * Copyright 2011 Nexenta Systems, Inc. All rights reserved. */ #ifndef _SBD_IMPL_H #define _SBD_IMPL_H --- 19,29 ---- * CDDL HEADER END */ /* * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved. * ! * Copyright 2016 Nexenta Systems, Inc. All rights reserved. */ #ifndef _SBD_IMPL_H #define _SBD_IMPL_H
*** 34,43 **** --- 34,48 ---- struct register_lu_cmd; struct modify_lu_cmd; struct sbd_lu_attr; struct sbd_it_data; + #define ATOMIC8_GET(val) ( \ + (atomic_add_8_nv(&(val), 0))) + #define ATOMIC32_GET(val) ( \ + (atomic_add_32_nv(&(val), 0))) + /* * sms endianess */ #define SMS_BIG_ENDIAN 0x00 #define SMS_LITTLE_ENDIAN 0xFF
*** 204,223 **** --- 209,248 ---- uint32_t trans_data_len; /* Length of transient data buf */ uint64_t addr; /* current */ uint32_t len; /* len left */ uint32_t current_ro; /* running relative offset */ uint8_t *trans_data; /* Any transient data */ + ats_state_t *ats_state; + uint32_t rsvd; } sbd_cmd_t; /* * flags for sbd_cmd + * + * SBD_SCSI_CMD_ACTIVE means that a command is running. This is the time + * between the function sbd_new_task is called and either the command + * completion is sent (stmf_scsilib_send_status) or an abort is + * issued + * + * SBD_SCSI_CMD_ABORT_REQUESTED is when a command is being aborted. It may + * be set prior to the task being dispatched or anywhere in the process + * of the command. + * + * SBD_SCSI_CMD_XFER_FAIL is set when a command data buffer transfer was + * errored. Usually it leads to an abort. + * + * SBD_SCSI_CMD_SYNC_WRITE synchronous write being done. + * + * SBD_SCSI_CMD_TRANS_DATA means that a buffer has been allocated to + * be used for the transfer of data. */ #define SBD_SCSI_CMD_ACTIVE 0x01 #define SBD_SCSI_CMD_ABORT_REQUESTED 0x02 #define SBD_SCSI_CMD_XFER_FAIL 0x04 #define SBD_SCSI_CMD_SYNC_WRITE 0x08 #define SBD_SCSI_CMD_TRANS_DATA 0x10 + #define SBD_SCSI_CMD_ATS_RELATED 0x20 /* * cmd types */ #define SBD_CMD_SCSI_READ 0x01
*** 298,311 **** --- 323,339 ---- void sbd_dbuf_xfer_done(struct scsi_task *task, struct stmf_data_buf *dbuf); void sbd_send_status_done(struct scsi_task *task); void sbd_task_free(struct scsi_task *task); stmf_status_t sbd_abort(struct stmf_lu *lu, int abort_cmd, void *arg, uint32_t flags); + void sbd_task_poll(struct scsi_task *task); void sbd_dbuf_free(struct scsi_task *task, struct stmf_data_buf *dbuf); void sbd_ctl(struct stmf_lu *lu, int cmd, void *arg); stmf_status_t sbd_info(uint32_t cmd, stmf_lu_t *lu, void *arg, uint8_t *buf, uint32_t *bufsizep); + uint8_t sbd_get_lbasize_shift(stmf_lu_t *lu); + int sbd_is_valid_lu(stmf_lu_t *lu); #ifdef __cplusplus } #endif