All of lore.kernel.org
 help / color / mirror / Atom feed
From: Arnaldo Carvalho de Melo <acme@mandriva.com>
To: Matthew Wilcox <matthew@wil.cx>
Cc: "James E.J. Bottomley" <James.Bottomley@SteelEye.com>,
	Andrew Morton <akpm@osdl.org>,
	linux-scsi@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH][SCSI]: Save some bytes in struct scsi_target
Date: Tue, 12 Dec 2006 02:17:40 -0200	[thread overview]
Message-ID: <20061212041740.GD6218@mandriva.com> (raw)
In-Reply-To: <20061212035221.GF21070@parisc-linux.org>

On Mon, Dec 11, 2006 at 08:52:22PM -0700, Matthew Wilcox wrote:
> On Tue, Dec 12, 2006 at 01:17:18AM -0200, Arnaldo Carvalho de Melo wrote:
> > }; /* size: 368, cachelines: 12 */
> > }; /* size: 364, cachelines: 12 */
> 
> Saving space is always good ;-)
> 
> > -	unsigned int		create:1; /* signal that it needs to be added */
> > +	char			scsi_level;
> > +	unsigned char		create:1; /* signal that it needs to be added */
> >  	unsigned int		pdt_1f_for_no_lun;	/* PDT = 0x1f */
> >  						/* means no lun present */
> >  
> > -	char			scsi_level;
> 
> However, pdt_1f_for_no_lun is really only one bit, saving another 4 bytes.
> 
> >  	struct execute_work	ew;
> >  	enum scsi_target_state	state;
> 
> enums are a bit of a pain.  Even though scsi_target_state uses only two
> values, it's represented as an int.  Unless you're on arm-eabi, when
> it'll use less.  And even then, it won't use less than a byte, as it has
> to be addressable.  I wonder if we can turn scsi_target_state into a
> bit.  That'll save another 8 bytes total.

I guess we could use:

	enum scsi_target_state state:1;

And make the enum entries start with 0 and not 1 as is today, no? With
that we get down to:

}; /* size: 356, cachelines: 12 */
   /* last cacheline: 4 bytes */

Anything else to save these 4 bytes and get down to 11 cachelines per
scsi_target instance? Following patch is on top of the previous one.

Signed-off-by: Arnaldo Carvalho de Melo <acme@mandriva.com>

diff --git a/include/scsi/scsi_device.h b/include/scsi/scsi_device.h
index ab245fc..772f834 100644
--- a/include/scsi/scsi_device.h
+++ b/include/scsi/scsi_device.h
@@ -157,7 +157,7 @@ #define scmd_printk(prefix, scmd, fmt, a
 	dev_printk(prefix, &(scmd)->device->sdev_gendev, fmt, ##a)
 
 enum scsi_target_state {
-	STARGET_RUNNING = 1,
+	STARGET_RUNNING = 0,
 	STARGET_DEL,
 };
 
@@ -176,12 +176,12 @@ struct scsi_target {
 	unsigned int		id; /* target id ... replace
 				     * scsi_device.id eventually */
 	char			scsi_level;
+	enum scsi_target_state	state:1;
 	unsigned char		create:1; /* signal that it needs to be added */
-	unsigned int		pdt_1f_for_no_lun;	/* PDT = 0x1f */
+	unsigned char		pdt_1f_for_no_lun:1;	/* PDT = 0x1f */
 						/* means no lun present */
 
 	struct execute_work	ew;
-	enum scsi_target_state	state;
 	void 			*hostdata; /* available to low-level driver */
 	unsigned long		starget_data[0]; /* for the transport */
 	/* starget_data must be the last element!!!! */

      reply	other threads:[~2006-12-12 13:26 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-12-12  3:17 [PATCH][SCSI]: Save some bytes in struct scsi_target Arnaldo Carvalho de Melo
2006-12-12  3:52 ` Matthew Wilcox
2006-12-12  4:17   ` Arnaldo Carvalho de Melo [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=20061212041740.GD6218@mandriva.com \
    --to=acme@mandriva.com \
    --cc=James.Bottomley@SteelEye.com \
    --cc=akpm@osdl.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-scsi@vger.kernel.org \
    --cc=matthew@wil.cx \
    /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.