public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Matt Mackall <mpm@selenic.com>
To: Alex Aizman <itn780@yahoo.com>
Cc: linux-scsi@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [ANNOUNCE 1/6] Open-iSCSI High-Performance Initiator for Linux
Date: Tue, 8 Mar 2005 22:15:06 -0800	[thread overview]
Message-ID: <20050309061505.GU3163@waste.org> (raw)
In-Reply-To: <422BFD13.1060908@yahoo.com>

On Sun, Mar 06, 2005 at 11:04:51PM -0800, Alex Aizman wrote:
>          SCSI LLDD consists of 3 files:
>         - iscsi_if.c (iSCSI open interface over netlink);
>         - iscsi_tcp.[ch] (iSCSI transport over TCP/IP).
> 
>         Signed-off-by: Alex Aizman <itn780@yahoo.com>
>         Signed-off-by: Dmitry Yusupov <dmitry_yus@yahoo.com>

Some minor comments..

> +int
> +iscsi_control_recv_pdu(iscsi_cnx_h cp_cnx, struct iscsi_hdr *hdr,
> +				char *data, uint32_t data_size)

Return value on the same line as the function name, please.

> +{
> +	struct nlmsghdr	*nlh;
> +	struct sk_buff	*skb;

Tabs except at the beginning of the line are a nuisance. 

> +	if (!skb) {
> +		return -ENOMEM;
> +	}

Drop the braces around single statements.

> +EXPORT_SYMBOL_GPL(iscsi_control_recv_pdu);

Is this more than one module?

> +iscsi_control_cnx_error(iscsi_cnx_h cp_cnx, iscsi_err_e error)

Your type-naming scheme is a little unusual for the kernel. err_e
appears redundant. And _h for handle could simply be _t for (opaque)
type.

> +static void
> +iscsi_if_rx(struct sock *sk, int len)
> +{
> +	struct sk_buff *skb;
> +	while ((skb = skb_dequeue(&sk->sk_receive_queue)) != NULL) {

Assignments in tests are somewhat discouraged and !f is preferred to f
!= NULL.

> +#ifndef DEBUG_ASSERT
> +#ifdef BUG_ON
> +#undef BUG_ON
> +#endif
> +#define BUG_ON(expr)
> +#endif

Don't do that, please. An assertion that's not enabled is worse than
no assertion at all.

> +static inline void
> +iscsi_buf_init_hdr(struct iscsi_conn *conn, struct iscsi_buf *ibuf,
> +		   char *vbuf, u8 *crc)
> +{
> +	iscsi_buf_init_virt(ibuf, vbuf, sizeof(struct iscsi_hdr));
> +	if (conn->hdrdgst_en) {
> +		crypto_digest_init(conn->tx_tfm);
> +		crypto_digest_update(conn->tx_tfm, &ibuf->sg, 1);
> +		crypto_digest_final(conn->tx_tfm, crc);

I believe you'll find that crypto_digest_digest does that all for you.

> +#define iscsi_conn_get(rdd) (struct iscsi_conn*)(rdd)->arg.data
> +#define iscsi_conn_set(rdd, conn) (rdd)->arg.data = conn

Inlines, please. The second one is slightly broken without parens.

> +		 * PDU header scattered accross SKB's,

"across"

> +		switch(conn->in.opcode) {
> +		case ISCSI_OP_SCSI_CMD_RSP:

This switch looks like it could happily be in another function. The
indentation is making it cramped.

> +/*
> + * iscsi_ctask_copy - copy skb bits to the destanation cmd task
> + *
> + * The function calls skb_copy_bits() and updates per-connection and
> + * per-cmd byte counters.
> + */
> +static inline int
> +iscsi_ctask_copy(struct iscsi_conn *conn, struct iscsi_cmd_task *ctask,
> +		void *buf, int buf_size)
> +{

Almost kerneldoc style, but not quite.

> +	    BUG_ON(ctask != (void*)sc->SCp.ptr);

Strange cast here.

> +	    if (sc->use_sg) {
> +		int i;

Mixed tabs and spaces.

> +	default:
> +		BUG_ON(1);

BUG()?

> +static void
> +iscsi_tcp_data_ready(struct sock *sk, int flag)
> +{
> +	struct iscsi_conn *conn = (struct iscsi_conn*)sk->sk_user_data;

Redundant cast here.

> +static void
> +iscsi_write_space(struct sock *sk)
> +{
> +	struct iscsi_conn *conn = (struct iscsi_conn*)sk->sk_user_data;
> +	conn->old_write_space(sk);
> +	debug_tcp("iscsi_write_space: cid %d\n", conn->id);
> +	conn->suspend = 0; wmb();

Sneaky. Separate line, please, and maybe a comment as to why the
barrier is needed.

> +	debug_tcp("sendhdr %lx %d bytes at offset %d sent %d res %d\n",
> +		(long)page_address(buf->sg.page), size, offset, buf->sent, res);

%p for page_address?

> +static inline int
> +iscsi_sendpage(struct iscsi_conn *conn, struct iscsi_buf *buf,
> +	       int *count, int *sent)
> +{
> +	ssize_t (*sendpage)(struct socket *, struct page *, int, size_t, int);
[...]
> +	sendpage = sk->ops->sendpage ? : sock_no_sendpage;
> +
> +	res = sendpage(sk, buf->sg.page, offset, size, flags);

Can't we just do an if (a) a() else b() here? The ? <empty> : syntax
is nonstandard.

> +iscsi_solicit_data_cont(struct iscsi_conn *conn, struct iscsi_cmd_task *ctask,
> +			struct iscsi_r2t_info *r2t, int left)
> +{
> +	struct iscsi_data *hdr;
> +	struct iscsi_data_task *dtask;
> +	struct scsi_cmnd *sc = ctask->sc;
> +	int new_offset;
> +
> +	dtask = mempool_alloc(ctask->datapool, GFP_ATOMIC);
> +	hdr = &dtask->hdr;
> +	hdr->flags = 0;
> +	hdr->rsvd2[0] = hdr->rsvd2[1] = hdr->rsvd3 =
> +		hdr->rsvd4 = hdr->rsvd5 = hdr->rsvd6 = 0;

That looks odd, memset?

> +static void
> +iscsi_unsolicit_data_init(struct iscsi_conn *conn, struct iscsi_cmd_task *ctask)
> +{
> +	struct iscsi_data *hdr;
> +	struct iscsi_data_task *dtask;
> +
> +	dtask = mempool_alloc(ctask->datapool, GFP_ATOMIC);
> +	hdr = &dtask->hdr;
> +	hdr->rsvd2[0] = hdr->rsvd2[1] = hdr->rsvd3 =
> +		hdr->rsvd4 = hdr->rsvd5 = hdr->rsvd6 = 0;

And that looks familiar..

...

Boy howdy, this patch goes on for ever. Giving up at 9%.

-- 
Mathematics is the supreme nostalgia of our time.

      reply	other threads:[~2005-03-09  6:17 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-03-07  7:04 [ANNOUNCE 1/6] Open-iSCSI High-Performance Initiator for Linux Alex Aizman
2005-03-09  6:15 ` Matt Mackall [this message]

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=20050309061505.GU3163@waste.org \
    --to=mpm@selenic.com \
    --cc=itn780@yahoo.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-scsi@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox