From: <vl...@us...> - 2008-11-19 10:56:03
|
Revision: 575 http://scst.svn.sourceforge.net/scst/?rev=575&view=rev Author: vlnb Date: 2008-11-19 10:55:58 +0000 (Wed, 19 Nov 2008) Log Message: ----------- Fix for memory overwrite-after-free bug in scst_local Modified Paths: -------------- trunk/scst/src/scst_lib.c Modified: trunk/scst/src/scst_lib.c =================================================================== --- trunk/scst/src/scst_lib.c 2008-11-18 18:47:09 UTC (rev 574) +++ trunk/scst/src/scst_lib.c 2008-11-19 10:55:58 UTC (rev 575) @@ -1436,7 +1436,12 @@ #endif #endif - scst_check_restore_sg_buff(cmd); + /* + * Target driver can already free sg buffer before calling + * scst_tgt_cmd_done(). E.g., scst_local has to do that. + */ + if (!cmd->tgt_data_buf_alloced) + scst_check_restore_sg_buff(cmd); if (unlikely(cmd->internal)) { if (cmd->bufflen > 0) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <vl...@us...> - 2008-12-05 13:56:57
|
Revision: 604 http://scst.svn.sourceforge.net/scst/?rev=604&view=rev Author: vlnb Date: 2008-12-05 13:56:43 +0000 (Fri, 05 Dec 2008) Log Message: ----------- Cleanup Modified Paths: -------------- trunk/scst/src/scst_lib.c Modified: trunk/scst/src/scst_lib.c =================================================================== --- trunk/scst/src/scst_lib.c 2008-12-05 13:54:00 UTC (rev 603) +++ trunk/scst/src/scst_lib.c 2008-12-05 13:56:43 UTC (rev 604) @@ -171,7 +171,6 @@ TRACE_EXIT(); return; } -EXPORT_SYMBOL(scst_set_cmd_error_sense); void scst_set_busy(struct scst_cmd *cmd) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <vl...@us...> - 2009-03-03 18:17:43
|
Revision: 686 http://scst.svn.sourceforge.net/scst/?rev=686&view=rev Author: vlnb Date: 2009-03-03 18:17:36 +0000 (Tue, 03 Mar 2009) Log Message: ----------- Fixes possible crash on BUG_ON (or memory leak without it), if REQUEST SENSE was issued on a command, in which empty sense was returned. Modified Paths: -------------- trunk/scst/src/scst_lib.c Modified: trunk/scst/src/scst_lib.c =================================================================== --- trunk/scst/src/scst_lib.c 2009-03-03 18:13:23 UTC (rev 685) +++ trunk/scst/src/scst_lib.c 2009-03-03 18:17:36 UTC (rev 686) @@ -1069,6 +1069,13 @@ TRACE_ENTRY(); + if (orig_cmd->sense != NULL) { + TRACE_MEM("Releasing sense %p (orig_cmd %p)", + orig_cmd->sense, orig_cmd); + mempool_free(orig_cmd->sense, scst_sense_mempool); + orig_cmd->sense = NULL; + } + rs_cmd = scst_create_prepare_internal_cmd(orig_cmd, sbuf_size); if (rs_cmd == NULL) goto out_error; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <vl...@us...> - 2009-03-06 10:26:49
|
Revision: 690 http://scst.svn.sourceforge.net/scst/?rev=690&view=rev Author: vlnb Date: 2009-03-06 10:26:39 +0000 (Fri, 06 Mar 2009) Log Message: ----------- Forgotten chunk in previous commit Modified Paths: -------------- trunk/scst/src/scst_lib.c Modified: trunk/scst/src/scst_lib.c =================================================================== --- trunk/scst/src/scst_lib.c 2009-03-04 18:38:48 UTC (rev 689) +++ trunk/scst/src/scst_lib.c 2009-03-06 10:26:39 UTC (rev 690) @@ -258,12 +258,33 @@ case SCST_CMD_STATE_INIT: case SCST_CMD_STATE_PRE_PARSE: case SCST_CMD_STATE_DEV_PARSE: - res = SCST_CMD_STATE_PRE_XMIT_RESP; + case SCST_CMD_STATE_DEV_DONE: + if (cmd->internal) + res = SCST_CMD_STATE_FINISHED_INTERNAL; + else + res = SCST_CMD_STATE_PRE_XMIT_RESP; break; - default: + case SCST_CMD_STATE_PRE_DEV_DONE: + case SCST_CMD_STATE_MODE_SELECT_CHECKS: + res = SCST_CMD_STATE_DEV_DONE; + break; + + case SCST_CMD_STATE_PRE_XMIT_RESP: + res = SCST_CMD_STATE_XMIT_RESP; + break; + + case SCST_CMD_STATE_PREPARE_SPACE: + case SCST_CMD_STATE_RDY_TO_XFER: + case SCST_CMD_STATE_TGT_PRE_EXEC: + case SCST_CMD_STATE_SEND_FOR_EXEC: + case SCST_CMD_STATE_LOCAL_EXEC: + case SCST_CMD_STATE_REAL_EXEC: res = SCST_CMD_STATE_PRE_DEV_DONE; break; + + default: + sBUG(); } TRACE_EXIT_RES(res); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <vl...@us...> - 2009-04-06 11:17:37
|
Revision: 751 http://scst.svn.sourceforge.net/scst/?rev=751&view=rev Author: vlnb Date: 2009-04-06 11:17:22 +0000 (Mon, 06 Apr 2009) Log Message: ----------- Missed bits in BIDI commands support Modified Paths: -------------- trunk/scst/src/scst_lib.c Modified: trunk/scst/src/scst_lib.c =================================================================== --- trunk/scst/src/scst_lib.c 2009-04-04 18:48:12 UTC (rev 750) +++ trunk/scst/src/scst_lib.c 2009-04-06 11:17:22 UTC (rev 751) @@ -2203,6 +2203,7 @@ int atomic = scst_cmd_atomic(cmd); int flags; struct scst_tgt_dev *tgt_dev = cmd->tgt_dev; + static int ll; TRACE_ENTRY(); @@ -2218,7 +2219,6 @@ goto out; if (unlikely(cmd->sg_cnt > tgt_dev->max_sg_cnt)) { - static int ll; if (ll < 10) { PRINT_INFO("Unable to complete command due to " "SG IO count limitation (requested %d, " @@ -2229,12 +2229,39 @@ goto out_sg_free; } + if (cmd->data_direction != SCST_DATA_BIDI) + goto success; + + cmd->in_sg = sgv_pool_alloc(tgt_dev->pool, cmd->in_bufflen, gfp_mask, + flags, &cmd->in_sg_cnt, &cmd->in_sgv, + &cmd->dev->dev_mem_lim, NULL); + if (cmd->in_sg == NULL) + goto out_sg_free; + + if (unlikely(cmd->in_sg_cnt > tgt_dev->max_sg_cnt)) { + if (ll < 10) { + PRINT_INFO("Unable to complete command due to " + "SG IO count limitation (IN buffer, requested " + "%d, available %d, tgt lim %d)", cmd->in_sg_cnt, + tgt_dev->max_sg_cnt, cmd->tgt->sg_tablesize); + ll++; + } + goto out_in_sg_free; + } + +success: res = 0; out: TRACE_EXIT(); return res; +out_in_sg_free: + sgv_pool_free(cmd->in_sgv, &cmd->dev->dev_mem_lim); + cmd->in_sgv = NULL; + cmd->in_sg = NULL; + cmd->in_sg_cnt = 0; + out_sg_free: sgv_pool_free(cmd->sgv, &cmd->dev->dev_mem_lim); cmd->sgv = NULL; @@ -2256,13 +2283,20 @@ } sgv_pool_free(cmd->sgv, &cmd->dev->dev_mem_lim); - cmd->sgv = NULL; cmd->sg_cnt = 0; cmd->sg = NULL; cmd->bufflen = 0; cmd->data_len = 0; + if (cmd->in_sgv != NULL) { + sgv_pool_free(cmd->in_sgv, &cmd->dev->dev_mem_lim); + cmd->in_sgv = NULL; + cmd->in_sg_cnt = 0; + cmd->in_sg = NULL; + cmd->in_bufflen = 0; + } + out: TRACE_EXIT(); return; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bva...@us...> - 2009-05-20 16:44:39
|
Revision: 867 http://scst.svn.sourceforge.net/scst/?rev=867&view=rev Author: bvassche Date: 2009-05-20 16:44:23 +0000 (Wed, 20 May 2009) Log Message: ----------- Removed a trailing tab. Modified Paths: -------------- trunk/scst/src/scst_lib.c Modified: trunk/scst/src/scst_lib.c =================================================================== --- trunk/scst/src/scst_lib.c 2009-05-20 15:47:14 UTC (rev 866) +++ trunk/scst/src/scst_lib.c 2009-05-20 16:44:23 UTC (rev 867) @@ -2479,7 +2479,7 @@ static int get_trans_cdb_len_10(struct scst_cmd *cmd, uint8_t off) { - cmd->cdb_len = 10; + cmd->cdb_len = 10; cmd->bufflen = 0; return 0; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <vl...@us...> - 2009-06-19 16:32:29
|
Revision: 914 http://scst.svn.sourceforge.net/scst/?rev=914&view=rev Author: vlnb Date: 2009-06-19 16:32:26 +0000 (Fri, 19 Jun 2009) Log Message: ----------- Fix possible crash in scst_copy_sg() Modified Paths: -------------- trunk/scst/src/scst_lib.c Modified: trunk/scst/src/scst_lib.c =================================================================== --- trunk/scst/src/scst_lib.c 2009-06-18 18:35:05 UTC (rev 913) +++ trunk/scst/src/scst_lib.c 2009-06-19 16:32:26 UTC (rev 914) @@ -2397,6 +2397,14 @@ "to_copy %d", cmd, copy_dir, src_sg, src_sg_cnt, dst_sg, to_copy); + if (unlikely(src_sg == NULL) || unlikely(dst_sg == NULL)) { + /* + * It can happened, e.g., with scst_user for cmd with delay + * alloc, which failed with Check Condition. + */ + goto out; + } + dst = sg_page(dst_sg); dst_len = dst_sg->length; dst_offs = dst_sg->offset; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bva...@us...> - 2010-06-25 18:00:45
|
Revision: 1790 http://scst.svn.sourceforge.net/scst/?rev=1790&view=rev Author: bvassche Date: 2010-06-25 18:00:39 +0000 (Fri, 25 Jun 2010) Log Message: ----------- Whitespace-only changes to fix recently introduced checkpatch complaints. Modified Paths: -------------- trunk/scst/src/scst_lib.c Modified: trunk/scst/src/scst_lib.c =================================================================== --- trunk/scst/src/scst_lib.c 2010-06-25 17:25:18 UTC (rev 1789) +++ trunk/scst/src/scst_lib.c 2010-06-25 18:00:39 UTC (rev 1790) @@ -446,7 +446,7 @@ SCST_DATA_READ, FLAG_NONE, 7, get_trans_len_2}, {0x53, "O ", "XDWRITEREAD(10)", SCST_DATA_READ|SCST_DATA_WRITE, SCST_TRANSFER_LEN_TYPE_FIXED| - SCST_WRITE_MEDIUM, + SCST_WRITE_MEDIUM, 7, get_bidi_trans_len_2}, {0x53, " O ", "RESERVE TRACK", SCST_DATA_NONE, FLAG_NONE, 0, get_trans_len_none}, @@ -1969,7 +1969,7 @@ offs += len; scst_put_sg_buf(cmd, buf, *cmd->write_sg, *cmd->write_sg_cnt); len = scst_get_sg_buf_next(cmd, &buf, *cmd->write_sg, - *cmd->write_sg_cnt); + *cmd->write_sg_cnt); } TRACE_EXIT(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <vl...@us...> - 2012-05-01 18:41:32
|
Revision: 4261 http://scst.svn.sourceforge.net/scst/?rev=4261&view=rev Author: vlnb Date: 2012-05-01 18:41:26 +0000 (Tue, 01 May 2012) Log Message: ----------- Small cleanup Modified Paths: -------------- trunk/scst/src/scst_lib.c Modified: trunk/scst/src/scst_lib.c =================================================================== --- trunk/scst/src/scst_lib.c 2012-05-01 18:22:30 UTC (rev 4260) +++ trunk/scst/src/scst_lib.c 2012-05-01 18:41:26 UTC (rev 4261) @@ -4750,8 +4750,11 @@ cmd->queue_type = SCST_CMD_QUEUE_SIMPLE; cmd->timeout = SCST_DEFAULT_TIMEOUT; cmd->retries = 0; +#ifdef CONFIG_SCST_EXTRACHECKS + /* To ensure they are inited */ cmd->lba = SCST_DEF_LBA_DATA_LEN; cmd->data_len = SCST_DEF_LBA_DATA_LEN; +#endif cmd->is_send_status = 1; cmd->resp_data_len = -1; cmd->write_sg = &cmd->sg; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <vl...@us...> - 2013-02-14 02:42:46
|
Revision: 4758 http://scst.svn.sourceforge.net/scst/?rev=4758&view=rev Author: vlnb Date: 2013-02-14 02:42:35 +0000 (Thu, 14 Feb 2013) Log Message: ----------- scst: Avoid that INQUIRY of a non-existing LUN can trigger a NULL pointer dereference This patch fixes the following kernel oops: [7781]: scst: scst_translate_lun:3935:tgt_dev for LUN 1 not found, command to unexisting LU (initiator local3, target local3)? BUG: unable to handle kernel NULL pointer dereference at 0000000000000500 IP: [<ffffffffa027662e>] scst_set_resp_data_len+0x17e/0x1c0 [scst] PGD 2de7a067 PUD 2dd4d067 PMD 0 Oops: 0000 [#1] SMP Modules linked in: scst_local(O) iscsi_scst(O) scst_vdisk(O) scst(O) brd netconsole configfs ib_iser rdma_cm ib_cm iw_cm ib_sa ib_mad ib_core ib_addr iscsi_tcp libiscsi_tcp libiscsi scsi_transport_iscsi joydev aesni_intel ablk_helper hid_generic cryptd lrw aes_x86_64 xts usbhid hid gf128mul intel_agp i2c_piix4 intel_gtt agpgart processor psmouse microcode button binfmt_misc lp parport ext4 mbcache jbd2 floppy ata_piix zlib_deflate libcrc32c [last unloaded: scst] CPU 3 Pid: 7781, comm: kworker/u:5 Tainted: G O 3.8.0-rc7-debug+ #1 Bochs Bochs RIP: 0010:[<ffffffffa027662e>] [<ffffffffa027662e>] scst_set_resp_data_len+0x17e/0x1c0 [scst] Process kworker/u:5 (pid: 7781, threadinfo ffff88002dc18000, task ffff88003d306450) Call Trace: [<ffffffffa027aa10>] scst_set_lun_not_supported_inquiry+0x140/0x400 [scst] [<ffffffffa027adbf>] scst_set_cmd_error+0xef/0x210 [scst] [<ffffffffa026aaa1>] __scst_init_cmd+0x1c1/0x250 [scst] [<ffffffffa026aefb>] scst_init_cmd+0x6b/0x320 [scst] [<ffffffffa026e914>] scst_cmd_init_done+0x124/0x5b0 [scst] [<ffffffffa0340a9e>] scst_local_queuecommand+0x1ae/0x3c0 [scst_local] [<ffffffff81323cd0>] scsi_dispatch_cmd+0x150/0x4b0 [<ffffffff8132b091>] scsi_request_fn+0x361/0x530 [<ffffffff812157b7>] __blk_run_queue+0x37/0x50 [<ffffffff81221e01>] blk_execute_rq_nowait+0x81/0x100 [<ffffffff81221fd2>] blk_execute_rq+0x152/0x200 [<ffffffff8132a75e>] scsi_execute+0xee/0x180 [<ffffffff8132b92d>] scsi_execute_req+0xbd/0x130 [<ffffffff8132d647>] scsi_probe_and_add_lun+0x257/0xe10 [<ffffffff8132ea73>] __scsi_scan_target+0x2a3/0x790 [<ffffffff8132f0ee>] scsi_scan_target+0xfe/0x110 [<ffffffffa033f81c>] scst_process_aens+0xcc/0x210 [scst_local] [<ffffffffa033fb39>] scst_aen_work_fn+0x79/0x140 [scst_local] [<ffffffff810630c8>] process_one_work+0x1a8/0x6e0 [<ffffffff81063a3f>] worker_thread+0x15f/0x3e0 [<ffffffff8106a17d>] kthread+0xed/0x100 [<ffffffff815252ac>] ret_from_fork+0x7c/0xb0 ---[ end trace b2eb71a8ecb7acf3 ]--- Signed-off-by: Bart Van Assche <bva...@ac...> Modified Paths: -------------- trunk/scst/src/scst_lib.c Modified: trunk/scst/src/scst_lib.c =================================================================== --- trunk/scst/src/scst_lib.c 2013-02-12 14:07:57 UTC (rev 4757) +++ trunk/scst/src/scst_lib.c 2013-02-14 02:42:35 UTC (rev 4758) @@ -2870,7 +2870,7 @@ if (unlikely(resp_data_len > cmd->bufflen)) { PRINT_ERROR("Too big response data len %d (max %d), limiting " "it to the max (dev %s)", resp_data_len, cmd->bufflen, - cmd->dev->virt_name); + cmd->dev ? cmd->dev->virt_name : "(no LUN)"); cmd->resp_data_len = cmd->bufflen; goto out; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <vl...@us...> - 2009-07-10 18:21:30
|
Revision: 948 http://scst.svn.sourceforge.net/scst/?rev=948&view=rev Author: vlnb Date: 2009-07-10 18:21:11 +0000 (Fri, 10 Jul 2009) Log Message: ----------- The patch below fixes the following checkpatch complaint: ERROR: return is not a function, parentheses are not required A side effect of this patch is that it makes sure that the return value of is_report_sg_limitation() is either 0 or 1, and no other integer value. Signed-off-by: Bart Van Assche <bar...@gm...> Modified Paths: -------------- trunk/scst/src/scst_lib.c Modified: trunk/scst/src/scst_lib.c =================================================================== --- trunk/scst/src/scst_lib.c 2009-07-10 12:10:41 UTC (rev 947) +++ trunk/scst/src/scst_lib.c 2009-07-10 18:21:11 UTC (rev 948) @@ -2262,7 +2262,7 @@ static bool is_report_sg_limitation(void) { #if defined(CONFIG_SCST_DEBUG) || defined(CONFIG_SCST_TRACING) - return (trace_flag & TRACE_OUT_OF_MEM); + return (trace_flag & TRACE_OUT_OF_MEM) != 0; #else return false; #endif This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <vl...@us...> - 2009-07-22 10:12:11
|
Revision: 970 http://scst.svn.sourceforge.net/scst/?rev=970&view=rev Author: vlnb Date: 2009-07-22 10:12:09 +0000 (Wed, 22 Jul 2009) Log Message: ----------- Some controllers seems to hang after receiving MODE SENSE(6) command. This patch adds sending MODE SENSE(10) instead, which can work better. But since this is remained untested, this code is disabled for now. Modified Paths: -------------- trunk/scst/src/scst_lib.c Modified: trunk/scst/src/scst_lib.c =================================================================== --- trunk/scst/src/scst_lib.c 2009-07-22 06:31:30 UTC (rev 969) +++ trunk/scst/src/scst_lib.c 2009-07-22 10:12:09 UTC (rev 970) @@ -3874,10 +3874,17 @@ for (i = 0; i < 5; i++) { /* Get control mode page */ memset(cmd, 0, sizeof(cmd)); +#if 0 + cmd[0] = MODE_SENSE_10; + cmd[1] = 0; + cmd[2] = 0x0A; + cmd[8] = sizeof(buffer); /* it's < 256 */ +#else cmd[0] = MODE_SENSE; cmd[1] = 8; /* DBD */ cmd[2] = 0x0A; cmd[4] = sizeof(buffer); +#endif memset(buffer, 0, sizeof(buffer)); memset(sense_buffer, 0, sizeof(sense_buffer)); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bva...@us...> - 2009-07-28 07:35:50
|
Revision: 983 http://scst.svn.sourceforge.net/scst/?rev=983&view=rev Author: bvassche Date: 2009-07-28 07:35:38 +0000 (Tue, 28 Jul 2009) Log Message: ----------- Whitespace-only change: fixed a recently introduced checkpatch error about trailing whitespace. Modified Paths: -------------- trunk/scst/src/scst_lib.c Modified: trunk/scst/src/scst_lib.c =================================================================== --- trunk/scst/src/scst_lib.c 2009-07-27 17:52:19 UTC (rev 982) +++ trunk/scst/src/scst_lib.c 2009-07-28 07:35:38 UTC (rev 983) @@ -957,7 +957,6 @@ goto restart1; } - if (!list_empty(&sess->search_cmd_list) || !list_empty(&sess->after_pre_xmit_cmd_list)) { /* This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bva...@us...> - 2009-08-12 18:01:27
|
Revision: 1041 http://scst.svn.sourceforge.net/scst/?rev=1041&view=rev Author: bvassche Date: 2009-08-12 18:01:19 +0000 (Wed, 12 Aug 2009) Log Message: ----------- Joined a few preprocessor statements on a single line that were split over multiple lines such that scripts/generate-kernel-patch and scripts/run-regression-tests can process these. Modified Paths: -------------- trunk/scst/src/scst_lib.c Modified: trunk/scst/src/scst_lib.c =================================================================== --- trunk/scst/src/scst_lib.c 2009-08-12 17:13:26 UTC (rev 1040) +++ trunk/scst/src/scst_lib.c 2009-08-12 18:01:19 UTC (rev 1041) @@ -2792,8 +2792,7 @@ return; } -#if !((LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 30)) && \ - defined(SCSI_EXEC_REQ_FIFO_DEFINED)) +#if !((LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 30)) && defined(SCSI_EXEC_REQ_FIFO_DEFINED)) /* * Can switch to the next dst_sg element, so, to copy to strictly only @@ -2923,12 +2922,9 @@ return res; } -#endif /* !((LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 30)) && \ - defined(SCSI_EXEC_REQ_FIFO_DEFINED)) */ +#endif /* !((LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 30)) && defined(SCSI_EXEC_REQ_FIFO_DEFINED)) */ -#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 26) && \ - !((LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 30)) && \ - defined(SCSI_EXEC_REQ_FIFO_DEFINED)) +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 26) && !((LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 30)) && defined(SCSI_EXEC_REQ_FIFO_DEFINED)) #include <linux/pfn.h> @@ -3314,9 +3310,7 @@ return; } -#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 26) && \ - !(LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 30) && \ - defined(SCSI_EXEC_REQ_FIFO_DEFINED)) */ +#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 26) && !(LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 30) && defined(SCSI_EXEC_REQ_FIFO_DEFINED)) */ #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 26) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bva...@us...> - 2009-09-10 18:26:22
|
Revision: 1088 http://scst.svn.sourceforge.net/scst/?rev=1088&view=rev Author: bvassche Date: 2009-09-10 18:26:06 +0000 (Thu, 10 Sep 2009) Log Message: ----------- Made sure that there is only a single blank line before scsi_end_async() in the output of scripts/generate-kernel-patch. Modified Paths: -------------- trunk/scst/src/scst_lib.c Modified: trunk/scst/src/scst_lib.c =================================================================== --- trunk/scst/src/scst_lib.c 2009-09-10 11:23:56 UTC (rev 1087) +++ trunk/scst/src/scst_lib.c 2009-09-10 18:26:06 UTC (rev 1088) @@ -3315,7 +3315,6 @@ #endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 26) && !(LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 30) && defined(SCSI_EXEC_REQ_FIFO_DEFINED)) */ #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 26) - static void scsi_end_async(struct request *req, int error) { struct scsi_io_context *sioc = req->end_io_data; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <vl...@us...> - 2009-10-12 11:47:51
|
Revision: 1201 http://scst.svn.sourceforge.net/scst/?rev=1201&view=rev Author: vlnb Date: 2009-10-12 11:47:44 +0000 (Mon, 12 Oct 2009) Log Message: ----------- Don't call target drivers on_free_cmd() for internal commands Modified Paths: -------------- trunk/scst/src/scst_lib.c Modified: trunk/scst/src/scst_lib.c =================================================================== --- trunk/scst/src/scst_lib.c 2009-10-12 11:44:51 UTC (rev 1200) +++ trunk/scst/src/scst_lib.c 2009-10-12 11:47:44 UTC (rev 1201) @@ -2507,7 +2507,7 @@ if (!cmd->tgt_data_buf_alloced) scst_check_restore_sg_buff(cmd); - if (cmd->tgtt->on_free_cmd != NULL) { + if ((cmd->tgtt->on_free_cmd != NULL) && likely(!cmd->internal)) { TRACE_DBG("Calling target's on_free_cmd(%p)", cmd); scst_set_cur_start(cmd); cmd->tgtt->on_free_cmd(cmd); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bva...@us...> - 2009-12-18 17:16:11
|
Revision: 1407 http://scst.svn.sourceforge.net/scst/?rev=1407&view=rev Author: bvassche Date: 2009-12-18 17:16:03 +0000 (Fri, 18 Dec 2009) Log Message: ----------- Made sure that checkpatch doesn't complain about missing whitespace around the minus character in the following expression: tgt_dev->curr_sn = (typeof(tgt_dev->curr_sn)) -300 Modified Paths: -------------- trunk/scst/src/scst_lib.c Modified: trunk/scst/src/scst_lib.c =================================================================== --- trunk/scst/src/scst_lib.c 2009-12-17 12:57:24 UTC (rev 1406) +++ trunk/scst/src/scst_lib.c 2009-12-18 17:16:03 UTC (rev 1407) @@ -1567,7 +1567,7 @@ spin_lock_init(&tgt_dev->sn_lock); INIT_LIST_HEAD(&tgt_dev->deferred_cmd_list); INIT_LIST_HEAD(&tgt_dev->skipped_sn_list); - tgt_dev->curr_sn = (typeof(tgt_dev->curr_sn)) -300; + tgt_dev->curr_sn = (typeof(tgt_dev->curr_sn))(-300); tgt_dev->expected_sn = tgt_dev->curr_sn + 1; tgt_dev->num_free_sn_slots = ARRAY_SIZE(tgt_dev->sn_slots)-1; tgt_dev->cur_sn_slot = &tgt_dev->sn_slots[0]; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <vl...@us...> - 2009-12-18 17:21:34
|
Revision: 1408 http://scst.svn.sourceforge.net/scst/?rev=1408&view=rev Author: vlnb Date: 2009-12-18 17:21:27 +0000 (Fri, 18 Dec 2009) Log Message: ----------- Better handling of devices, which don't support MODE SENSE control mode page Tested-By: Dietmar Maurer <di...@pr...> Modified Paths: -------------- trunk/scst/src/scst_lib.c Modified: trunk/scst/src/scst_lib.c =================================================================== --- trunk/scst/src/scst_lib.c 2009-12-18 17:16:03 UTC (rev 1407) +++ trunk/scst/src/scst_lib.c 2009-12-18 17:21:27 UTC (rev 1408) @@ -3983,7 +3983,7 @@ int scst_obtain_device_parameters(struct scst_device *dev) { - int res = 0, i; + int rc, i; uint8_t cmd[16]; uint8_t buffer[4+0x0A]; uint8_t sense_buffer[SCSI_SENSE_BUFFERSIZE]; @@ -4011,16 +4011,16 @@ memset(sense_buffer, 0, sizeof(sense_buffer)); TRACE(TRACE_SCSI, "%s", "Doing internal MODE_SENSE"); - res = scsi_execute(dev->scsi_dev, cmd, SCST_DATA_READ, buffer, + rc = scsi_execute(dev->scsi_dev, cmd, SCST_DATA_READ, buffer, sizeof(buffer), sense_buffer, 15, 0, 0 #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,29) , NULL #endif ); - TRACE_DBG("MODE_SENSE done: %x", res); + TRACE_DBG("MODE_SENSE done: %x", rc); - if (scsi_status_is_good(res)) { + if (scsi_status_is_good(rc)) { int q; PRINT_BUFF_FLAG(TRACE_SCSI, @@ -4041,22 +4041,23 @@ /* * Unfortunately, SCSI ML doesn't provide a way to * specify commands task attribute, so we can rely on - * device's restricted reordering only. + * device's restricted reordering only. Linux I/O + * subsystem doesn't reorder pass-through (PC) requests. */ dev->has_own_order_mgmt = !dev->queue_alg; - TRACE(TRACE_SCSI|TRACE_MGMT_MINOR, - "Device %s: TST %x, " - "QUEUE ALG %x, SWP %x, TAS %x, D_SENSE %d" - "has_own_order_mgmt %d", + PRINT_INFO("Device %s: TST %x, QUEUE ALG %x, SWP %x, " + "TAS %x, D_SENSE %d, has_own_order_mgmt %d", dev->virt_name, dev->tst, dev->queue_alg, dev->swp, dev->tas, dev->d_sense, dev->has_own_order_mgmt); goto out; } else { + scst_check_internal_sense(dev, rc, sense_buffer, + sizeof(sense_buffer)); #if 0 - if ((status_byte(res) == CHECK_CONDITION) && + if ((status_byte(rc) == CHECK_CONDITION) && SCST_SENSE_VALID(sense_buffer)) { #else /* @@ -4065,51 +4066,58 @@ */ if (SCST_SENSE_VALID(sense_buffer)) { #endif + PRINT_BUFF_FLAG(TRACE_SCSI, + "Returned sense data", + sense_buffer, sizeof(sense_buffer)); if (scst_analyze_sense(sense_buffer, sizeof(sense_buffer), SCST_SENSE_KEY_VALID, ILLEGAL_REQUEST, 0, 0)) { - TRACE(TRACE_SCSI|TRACE_MGMT_MINOR, - "Device %s doesn't " - "support control mode page, " - "using defaults: TST %x, " - "QUEUE ALG %x, SWP %x, " - "TAS %x, D_SENSE %d, " - "has_own_order_mgmt %d ", - dev->virt_name, - dev->tst, dev->queue_alg, - dev->swp, dev->tas, - dev->d_sense, - dev->has_own_order_mgmt); - res = 0; - goto out; + PRINT_INFO("Device %s doesn't support " + "MODE SENSE", dev->virt_name); + break; } else if (scst_analyze_sense(sense_buffer, sizeof(sense_buffer), SCST_SENSE_KEY_VALID, NOT_READY, 0, 0)) { - TRACE(TRACE_SCSI, "Device %s not ready", + PRINT_ERROR("Device %s not ready", dev->virt_name); - res = 0; - goto out; + break; } } else { - TRACE(TRACE_SCSI|TRACE_MGMT_MINOR, - "Internal MODE SENSE to " + PRINT_INFO("Internal MODE SENSE to " "device %s failed: %x", - dev->virt_name, res); - PRINT_BUFF_FLAG(TRACE_SCSI|TRACE_MGMT_MINOR, - "MODE SENSE sense", + dev->virt_name, rc); + PRINT_BUFF_FLAG(TRACE_SCSI, "MODE SENSE sense", sense_buffer, sizeof(sense_buffer)); + switch (host_byte(rc)) { + case DID_RESET: + case DID_ABORT: + case DID_SOFT_ERROR: + break; + default: + goto brk; + } + switch (driver_byte(rc)) { + case DRIVER_BUSY: + case DRIVER_SOFT: + break; + default: + goto brk; + } } - scst_check_internal_sense(dev, res, sense_buffer, - sizeof(sense_buffer)); } } - res = -ENODEV; +brk: + PRINT_WARNING("Unable to get device's %s control mode page, using " + "existing values/defaults: TST %x, QUEUE ALG %x, SWP %x, " + "TAS %x, D_SENSE %d, has_own_order_mgmt %d", dev->virt_name, + dev->tst, dev->queue_alg, dev->swp, dev->tas, dev->d_sense, + dev->has_own_order_mgmt); out: - TRACE_EXIT_RES(res); - return res; + TRACE_EXIT(); + return 0; } EXPORT_SYMBOL(scst_obtain_device_parameters); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bva...@us...> - 2009-12-25 09:10:21
|
Revision: 1415 http://scst.svn.sourceforge.net/scst/?rev=1415&view=rev Author: bvassche Date: 2009-12-25 09:10:10 +0000 (Fri, 25 Dec 2009) Log Message: ----------- Fixed a recently introduced format specification mismatch. Modified Paths: -------------- trunk/scst/src/scst_lib.c Modified: trunk/scst/src/scst_lib.c =================================================================== --- trunk/scst/src/scst_lib.c 2009-12-24 19:46:20 UTC (rev 1414) +++ trunk/scst/src/scst_lib.c 2009-12-25 09:10:10 UTC (rev 1415) @@ -3867,7 +3867,7 @@ op = cmd->cdb[0]; /* get clear opcode */ - TRACE_DBG("opcode=%02x, cdblen=%d bytes, tblsize=%d, " + TRACE_DBG("opcode=%02x, cdblen=%d bytes, tblsize=%ld, " "dev_type=%d", op, SCST_GET_CDB_LEN(op), SCST_CDB_TBL_SIZE, dev_type); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bva...@us...> - 2009-12-26 18:57:26
|
Revision: 1418 http://scst.svn.sourceforge.net/scst/?rev=1418&view=rev Author: bvassche Date: 2009-12-26 18:57:17 +0000 (Sat, 26 Dec 2009) Log Message: ----------- Follow-up for r1415: compiles again without warnings on both 32-bit and 64-bit systems. Modified Paths: -------------- trunk/scst/src/scst_lib.c Modified: trunk/scst/src/scst_lib.c =================================================================== --- trunk/scst/src/scst_lib.c 2009-12-26 09:23:39 UTC (rev 1417) +++ trunk/scst/src/scst_lib.c 2009-12-26 18:57:17 UTC (rev 1418) @@ -3867,7 +3867,7 @@ op = cmd->cdb[0]; /* get clear opcode */ - TRACE_DBG("opcode=%02x, cdblen=%d bytes, tblsize=%ld, " + TRACE_DBG("opcode=%02x, cdblen=%d bytes, tblsize=%zd, " "dev_type=%d", op, SCST_GET_CDB_LEN(op), SCST_CDB_TBL_SIZE, dev_type); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bva...@us...> - 2010-01-13 19:33:34
|
Revision: 1463 http://scst.svn.sourceforge.net/scst/?rev=1463&view=rev Author: bvassche Date: 2010-01-13 19:33:21 +0000 (Wed, 13 Jan 2010) Log Message: ----------- Fixed the following category of checkpatch errors: 3 ERROR: code indent should use tabs where possible Modified Paths: -------------- trunk/scst/src/scst_lib.c Modified: trunk/scst/src/scst_lib.c =================================================================== --- trunk/scst/src/scst_lib.c 2010-01-13 18:10:10 UTC (rev 1462) +++ trunk/scst/src/scst_lib.c 2010-01-13 19:33:21 UTC (rev 1463) @@ -142,7 +142,7 @@ {0x00, "MMMMMMMMMMMMMMMM", "TEST UNIT READY", /* let's be HQ to don't look dead under high load */ SCST_DATA_NONE, SCST_SMALL_TIMEOUT|SCST_IMPLICIT_HQ| - SCST_REG_RESERVE_ALLOWED, + SCST_REG_RESERVE_ALLOWED, 0, get_trans_len_none}, {0x01, " M ", "REWIND", SCST_DATA_NONE, SCST_LONG_TIMEOUT, 0, get_trans_len_none}, @@ -152,7 +152,7 @@ SCST_DATA_NONE, SCST_SMALL_TIMEOUT, 0, get_trans_len_none}, {0x03, "MMMMMMMMMMMMMMMM", "REQUEST SENSE", SCST_DATA_READ, SCST_SMALL_TIMEOUT|SCST_SKIP_UA|SCST_LOCAL_CMD| - SCST_REG_RESERVE_ALLOWED, + SCST_REG_RESERVE_ALLOWED, 4, get_trans_len_1}, {0x04, "M O O ", "FORMAT UNIT", SCST_DATA_WRITE, SCST_LONG_TIMEOUT|SCST_UNKNOWN_LENGTH|SCST_WRITE_MEDIUM, @@ -207,7 +207,7 @@ SCST_DATA_NONE, SCST_LONG_TIMEOUT, 0, get_trans_len_none}, {0x12, "MMMMMMMMMMMMMMMM", "INQUIRY", SCST_DATA_READ, SCST_SMALL_TIMEOUT|SCST_IMPLICIT_HQ|SCST_SKIP_UA| - SCST_REG_RESERVE_ALLOWED, + SCST_REG_RESERVE_ALLOWED, 4, get_trans_len_1}, {0x13, "VOVVVV ", "VERIFY(6)", SCST_DATA_NONE, SCST_TRANSFER_LEN_TYPE_FIXED| This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <vl...@us...> - 2010-02-19 18:45:59
|
Revision: 1513 http://scst.svn.sourceforge.net/scst/?rev=1513&view=rev Author: vlnb Date: 2010-02-19 18:45:53 +0000 (Fri, 19 Feb 2010) Log Message: ----------- Fixed incorrect condition in scst_hw_pending_work_fn() noticed by Joe Eykholt <jey...@ci...> Modified Paths: -------------- trunk/scst/src/scst_lib.c Modified: trunk/scst/src/scst_lib.c =================================================================== --- trunk/scst/src/scst_lib.c 2010-02-19 12:03:48 UTC (rev 1512) +++ trunk/scst/src/scst_lib.c 2010-02-19 18:45:53 UTC (rev 1513) @@ -1863,7 +1863,7 @@ goto restart; } - if (list_empty(&sess->sess_cmd_list)) { + if (!list_empty(&sess->sess_cmd_list)) { /* * For stuck cmds if there is no activity we might need to have * one more run to release them, so reschedule once again. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bva...@us...> - 2010-03-31 06:51:57
|
Revision: 1571 http://scst.svn.sourceforge.net/scst/?rev=1571&view=rev Author: bvassche Date: 2010-03-31 06:51:51 +0000 (Wed, 31 Mar 2010) Log Message: ----------- Fixed a format specification mismatch. Modified Paths: -------------- trunk/scst/src/scst_lib.c Modified: trunk/scst/src/scst_lib.c =================================================================== --- trunk/scst/src/scst_lib.c 2010-03-30 11:28:20 UTC (rev 1570) +++ trunk/scst/src/scst_lib.c 2010-03-31 06:51:51 UTC (rev 1571) @@ -2471,7 +2471,7 @@ GFP_KERNEL); if (aic_keeper == NULL) { PRINT_ERROR("Unable to alloc aic_keeper " - "(size %d)", sizeof(*aic_keeper)); + "(size %zd)", sizeof(*aic_keeper)); res = -ENOMEM; goto out; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bva...@us...> - 2010-04-04 11:32:08
|
Revision: 1580 http://scst.svn.sourceforge.net/scst/?rev=1580&view=rev Author: bvassche Date: 2010-04-04 11:32:02 +0000 (Sun, 04 Apr 2010) Log Message: ----------- Builds again on RHEL 5.x / CentOS 5.x. Modified Paths: -------------- trunk/scst/src/scst_lib.c Modified: trunk/scst/src/scst_lib.c =================================================================== --- trunk/scst/src/scst_lib.c 2010-04-02 16:38:15 UTC (rev 1579) +++ trunk/scst/src/scst_lib.c 2010-04-04 11:32:02 UTC (rev 1580) @@ -46,7 +46,9 @@ static struct kmem_cache *scsi_io_context_cache; #endif -#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 21) +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 22) \ + && (!defined(RHEL_RELEASE_CODE) || RHEL_RELEASE_CODE -0 < 5 * 256 + 3) \ + && !defined(CONFIG_PPC) static int strncasecmp(const char *s1, const char *s2, size_t n) { int c1, c2; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <vl...@us...> - 2010-06-04 12:00:54
|
Revision: 1739 http://scst.svn.sourceforge.net/scst/?rev=1739&view=rev Author: vlnb Date: 2010-06-04 12:00:48 +0000 (Fri, 04 Jun 2010) Log Message: ----------- Fixes incorrect processing in scst_tape_generic_dev_done() in case of errors Modified Paths: -------------- trunk/scst/src/scst_lib.c Modified: trunk/scst/src/scst_lib.c =================================================================== --- trunk/scst/src/scst_lib.c 2010-06-04 11:53:29 UTC (rev 1738) +++ trunk/scst/src/scst_lib.c 2010-06-04 12:00:48 UTC (rev 1739) @@ -5516,6 +5516,9 @@ * therefore change them only if necessary */ + if (cmd->status != SAM_STAT_GOOD) + goto out; + switch (opcode) { case MODE_SENSE: case MODE_SELECT: This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |