From: Christoph Hellwig <hch@infradead.org>
To: "Nicholas A. Bellinger" <nab@linux-iscsi.org>
Cc: Andy Grover <agrover@redhat.com>,
target-devel@vger.kernel.org, linux-scsi@vger.kernel.org
Subject: Re: [PATCH 06/20] target: Eliminate usage of struct se_mem
Date: Tue, 19 Jul 2011 00:56:30 -0400 [thread overview]
Message-ID: <20110719045630.GA26652@infradead.org> (raw)
In-Reply-To: <1310932648.26130.32.camel@haakon2.linux-iscsi.org>
On Sun, Jul 17, 2011 at 12:57:28PM -0700, Nicholas A. Bellinger wrote:
> index 1645aab..2f89001 100644
> --- a/drivers/target/iscsi/iscsi_target.c
> +++ b/drivers/target/iscsi/iscsi_target.c
> @@ -780,6 +780,7 @@ static int iscsit_allocate_iovecs(struct iscsi_cmd *cmd)
> static int iscsit_alloc_buffs(struct iscsi_cmd *cmd)
> {
> struct scatterlist *sgl;
> + unsigned char *buf;
> u32 length = cmd->se_cmd.data_length;
> int nents = DIV_ROUND_UP(length, PAGE_SIZE);
> int i = 0, ret;
> @@ -804,6 +805,14 @@ static int iscsit_alloc_buffs(struct iscsi_cmd *cmd)
> if (!page)
> goto page_alloc_failed;
>
> + buf = kmap_atomic(page, KM_IRQ0);
> + if (!buf) {
> + pr_err("kmap_atomic failed\n");
> + goto page_alloc_failed;
> + }
> + memset(buf, 0, buf_size);
> + kunmap_atomic(buf, KM_IRQ0);
> +
This should use clear_highpage, or even better just the __GFP_ZERO flag
to the page allocator.
> @@ -3971,13 +3972,30 @@ transport_generic_get_mem(struct se_cmd *cmd)
> u32 page_len = min_t(u32, length, PAGE_SIZE);
> page = alloc_page(GFP_KERNEL);
> if (!page)
> - return -ENOMEM;
> + goto out;
> +
> + buf = kmap_atomic(page, KM_IRQ0);
> + if (!buf) {
> + pr_err("kmap_atomic failed\n");
> + goto out;
> + }
> + memset(buf, 0, page_len);
> + kunmap_atomic(buf, KM_IRQ0);
Same here.
> > - ret = transport_map_control_cmd_to_task(cmd);
> > + ret = dev->transport->map_task_SG(task);
> > if (ret < 0)
> > return ret;
>
> Calling dev->transport->map_task_SG() here for all cases is incorrect,
> and was triggering an OOPs during iscsi-target initial LUN scan.. Fixed
> with the following:
>
> commit 93529985c9de3cd5ab40cb322da24a4d8372ad4c
> Author: Nicholas Bellinger <nab@linux-iscsi.org>
> Date: Sat Jul 16 19:27:07 2011 -0700
>
> target: Fix incorrect usage of ->map_task_SG in transport_generic_new_cmd
>
> This patch fixes incorrect usage of ->map_task_SG() for all se_cmd descriptors
> in transport_generic_new_cmd(). This introduced with commit:
Indeed. But why did you also commit
"target/iblock: Make iblock_map_task_SG only for SCF_SCSI_DATA_SG_IO_CDB"
which is a hacky workaround for the same issue inside iblock?
> -
> + /*
> + * Call transport_new_cmd_obj() to invoke transport_allocate_tasks()
> + * and perform the memory map to backend subsystem devices.
> + */
> ret = transport_new_cmd_obj(cmd);
What is that comment supposed to help with? It's rather confusing to
be honest.
next prev parent reply other threads:[~2011-07-19 4:56 UTC|newest]
Thread overview: 61+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-07-07 22:33 [0/20] Patches from June 28 v2 Andy Grover
2011-07-07 22:33 ` [PATCH 01/20] target: Remove ifdeffed code in t_g_process_write Andy Grover
2011-07-07 22:33 ` [PATCH 02/20] target: Pass 2nd param of transport_split_cdb by value Andy Grover
2011-07-07 22:33 ` [PATCH 03/20] target: Make all control CDBs scatter-gather Andy Grover
2011-07-08 19:57 ` Christoph Hellwig
2011-07-09 0:02 ` Andy Grover
2011-07-09 0:35 ` Andy Grover
2011-07-07 22:33 ` [PATCH 04/20] target: Enforce 1 page max for control cdb buffer sizes Andy Grover
2011-07-08 19:58 ` Christoph Hellwig
2011-07-07 22:33 ` [PATCH 05/20] target: Remove direct ramdisk code Andy Grover
2011-07-08 19:59 ` Christoph Hellwig
2011-07-07 22:33 ` [PATCH 06/20] target: Eliminate usage of struct se_mem Andy Grover
2011-07-08 20:13 ` Christoph Hellwig
2011-07-09 0:38 ` Andy Grover
2011-07-07 22:33 ` [PATCH 07/20] target: Rename task_sg_num to task_sg_nents Andy Grover
2011-07-07 22:33 ` [PATCH 08/20] target: Remove custom debug macros for pr_debug. Use pr_err() Andy Grover
2011-07-07 22:33 ` [PATCH 09/20] target: Remove custom debug macros in non-iscsi fabrics Andy Grover
2011-07-07 22:33 ` [PATCH 10/20] target/iscsi: Remove iscsi_target_debug.h and usage of TRACE() & printk() Andy Grover
2011-07-07 22:33 ` [PATCH 11/20] target/iscsi: Remove SE_CMD macro Andy Grover
2011-07-07 22:33 ` [PATCH 12/20] target: Set WSNZ=1 in block limits VPD. Abort if WRITE_SAME sectors = 0 Andy Grover
2011-07-07 22:33 ` [PATCH 13/20] target: Remove transport do_se_mem_map callback Andy Grover
2011-07-07 22:33 ` [PATCH 14/20] target: When using kunmap_first_data_page, use goto-style err handling Andy Grover
2011-07-07 22:33 ` [PATCH 15/20] target: Further simplify transport_free_pages Andy Grover
2011-07-07 22:33 ` [PATCH 16/20] target: Redo task allocation return value handling Andy Grover
2011-07-07 22:33 ` [PATCH 17/20] target/core: Remove extra parentheses Andy Grover
2011-07-07 22:33 ` [PATCH 18/20] target: Extraneous paren removal in tcm_vhost and tcm_qla2xxx Andy Grover
2011-07-07 22:33 ` [PATCH 19/20] target/iscsi: Remove unneeded parens in conditional statements Andy Grover
2011-07-07 22:33 ` [PATCH 20/20] target/iscsi: Simplify two small bits Andy Grover
2011-07-09 1:18 ` [0/20] target: Patches for June 28 v3 Andy Grover
2011-07-17 19:32 ` Nicholas A. Bellinger
2011-07-09 1:18 ` [PATCH 01/20] target: Remove ifdeffed code in t_g_process_write Andy Grover
2011-07-09 1:18 ` [PATCH 02/20] target: Pass 2nd param of transport_split_cdb by value Andy Grover
2011-07-09 1:18 ` [PATCH 03/20] target: Make all control CDBs scatter-gather Andy Grover
2011-07-17 19:40 ` Nicholas A. Bellinger
2011-07-09 1:18 ` [PATCH 04/20] target: Enforce 1 page max for control cdb buffer sizes Andy Grover
2011-07-09 1:18 ` [PATCH 05/20] target: Remove direct ramdisk code Andy Grover
2011-07-09 1:18 ` [PATCH 06/20] target: Eliminate usage of struct se_mem Andy Grover
2011-07-17 19:57 ` Nicholas A. Bellinger
2011-07-18 17:16 ` Andy Grover
2011-07-18 18:44 ` Nicholas A. Bellinger
2011-07-19 4:56 ` Christoph Hellwig [this message]
2011-07-19 5:40 ` Nicholas A. Bellinger
2011-07-09 1:18 ` [PATCH 07/20] target: Rename task_sg_num to task_sg_nents Andy Grover
2011-07-09 1:18 ` [PATCH 08/20] target: Remove custom debug macros for pr_debug. Use pr_err() Andy Grover
2011-07-09 1:18 ` [PATCH 09/20] target: Remove custom debug macros in non-iscsi fabrics Andy Grover
2011-07-17 20:02 ` Nicholas A. Bellinger
2011-07-09 1:18 ` [PATCH 10/20] target/iscsi: Remove iscsi_target_debug.h and usage of TRACE() & printk() Andy Grover
2011-07-09 1:18 ` [PATCH 11/20] target/iscsi: Remove SE_CMD macro Andy Grover
2011-07-09 1:18 ` [PATCH 12/20] target: Set WSNZ=1 in block limits VPD. Abort if WRITE_SAME sectors = 0 Andy Grover
2011-07-09 1:18 ` [PATCH 13/20] target: Remove transport do_se_mem_map callback Andy Grover
2011-07-09 1:18 ` [PATCH 14/20] target: Further simplify transport_free_pages Andy Grover
2011-07-09 1:18 ` [PATCH 15/20] target: Redo task allocation return value handling Andy Grover
2011-07-09 1:18 ` [PATCH 16/20] target/core: Remove extra parentheses Andy Grover
2011-07-09 1:18 ` [PATCH 17/20] target: Extraneous paren removal in tcm_vhost and tcm_qla2xxx Andy Grover
2011-07-09 1:18 ` [PATCH 18/20] target/iscsi: Remove unneeded parens in conditional statements Andy Grover
2011-07-09 1:18 ` [PATCH 19/20] target/iscsi: Simplify two small bits Andy Grover
2011-07-09 1:18 ` [PATCH 20/20] target: change alloc_task call to take *cdb, not *cmd Andy Grover
2011-07-09 10:11 ` Christoph Hellwig
2011-07-10 22:41 ` Andy Grover
2011-07-11 15:28 ` Christoph Hellwig
2011-07-17 20:04 ` Nicholas A. Bellinger
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20110719045630.GA26652@infradead.org \
--to=hch@infradead.org \
--cc=agrover@redhat.com \
--cc=linux-scsi@vger.kernel.org \
--cc=nab@linux-iscsi.org \
--cc=target-devel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.