All of lore.kernel.org
 help / color / mirror / Atom feed
From: Arnaldo Carvalho de Melo <acme@mandriva.com>
To: "James E.J. Bottomley" <James.Bottomley@SteelEye.com>
Cc: Andrew Morton <akpm@osdl.org>,
	linux-scsi@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: [PATCH][SCSI]: Save some bytes in struct scsi_target
Date: Tue, 12 Dec 2006 01:17:18 -0200	[thread overview]
Message-ID: <20061212031718.GC6218@mandriva.com> (raw)

Before:

[acme@newtoy kpahole-2.6]$ pahole --cacheline 32 /tmp/scsi.o.before scsi_target
/* include/scsi/scsi_device.h:86 */
struct scsi_target {
        struct scsi_device *       starget_sdev_user;    /*     0     4 */
        struct list_head           siblings;             /*     4     8 */
        struct list_head           devices;              /*    12     8 */
        struct device              dev;                  /*    20   300 */
        /* --- cacheline 10 boundary (320 bytes) --- */
        unsigned int               reap_ref;             /*   320     4 */
        unsigned int               channel;              /*   324     4 */
        unsigned int               id;                   /*   328     4 */
        unsigned int               create:1;             /*   332     4 */

        /* XXX 31 bits hole, try to pack */

        unsigned int               pdt_1f_for_no_lun;    /*   336     4 */
        char                       scsi_level;           /*   340     1 */

        /* XXX 3 bytes hole, try to pack */

        struct execute_work        ew;                   /*   344    16 */
        /* --- cacheline 11 boundary (352 bytes) was 8 bytes ago --- */
        enum scsi_target_state     state;                /*   360     4 */
        void *                     hostdata;             /*   364     4 */
        long unsigned int          starget_data[0];      /*   368     0 */
}; /* size: 368, cachelines: 12 */
   /* sum members: 365, holes: 1, sum holes: 3 */
   /* bit holes: 1, sum bit holes: 31 bits */
   /* last cacheline: 16 bytes */

After:

[acme@newtoy kpahole-2.6]$ pahole --cacheline 32 drivers/scsi/scsi.o scsi_target
/* include/scsi/scsi_device.h:86 */
struct scsi_target {
        struct scsi_device *       starget_sdev_user;    /*     0     4 */
        struct list_head           siblings;             /*     4     8 */
        struct list_head           devices;              /*    12     8 */
        struct device              dev;                  /*    20   300 */
        /* --- cacheline 10 boundary (320 bytes) --- */
        unsigned int               reap_ref;             /*   320     4 */
        unsigned int               channel;              /*   324     4 */
        unsigned int               id;                   /*   328     4 */
        char                       scsi_level;           /*   332     1 */
        unsigned char              create:1;             /*   333     1 */

        /* XXX 7 bits hole, try to pack */
        /* XXX 2 bytes hole, try to pack */

        unsigned int               pdt_1f_for_no_lun;    /*   336     4 */
        struct execute_work        ew;                   /*   340    16 */
        /* --- cacheline 11 boundary (352 bytes) was 4 bytes ago --- */
        enum scsi_target_state     state;                /*   356     4 */
        void *                     hostdata;             /*   360     4 */
        long unsigned int          starget_data[0];      /*   364     0 */
}; /* size: 364, cachelines: 12 */
   /* sum members: 362, holes: 1, sum holes: 2 */
   /* bit holes: 1, sum bit holes: 7 bits */
   /* last cacheline: 12 bytes */

[acme@newtoy kpahole-2.6]$ codiff -V /tmp/scsi.o.before drivers/scsi/scsi.o
drivers/scsi/scsi.c:
  struct scsi_target |   -4
    create:1;
     from: unsigned int          /*   332(31)    4(1) */
     to:   unsigned char         /*   333(7)     1(1) */
    scsi_level;
     from: char                  /*   340(0)     1(0) */
     to:   char                  /*   332(0)     1(0) */
<SNIP offset changes>
 1 struct changed

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

---

 scsi_device.h |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/include/scsi/scsi_device.h b/include/scsi/scsi_device.h
index ebf31b1..ab245fc 100644
--- a/include/scsi/scsi_device.h
+++ b/include/scsi/scsi_device.h
@@ -175,11 +175,11 @@ struct scsi_target {
 	unsigned int		channel;
 	unsigned int		id; /* target id ... replace
 				     * scsi_device.id eventually */
-	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;
 	struct execute_work	ew;
 	enum scsi_target_state	state;
 	void 			*hostdata; /* available to low-level driver */

             reply	other threads:[~2006-12-12  3:17 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-12-12  3:17 Arnaldo Carvalho de Melo [this message]
2006-12-12  3:52 ` [PATCH][SCSI]: Save some bytes in struct scsi_target Matthew Wilcox
2006-12-12  4:17   ` Arnaldo Carvalho de Melo

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=20061212031718.GC6218@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 \
    /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.