Commit:     6a8ba9d12150461acc91bd3c9124eac19e853218
Parent:     0a0c502c94af0491ab454ad6d216c7a6fda8362b
Author:     Eric Dumazet <[EMAIL PROTECTED]>
AuthorDate: Wed Dec 13 00:34:10 2006 -0800
Committer:  Linus Torvalds <[EMAIL PROTECTED]>
CommitDate: Wed Dec 13 09:05:48 2006 -0800

    [PATCH] reorder struct pipe_buf_operations
    Fields of struct pipe_buf_operations have not a precise layout (ie not
    optimized to fit cache lines nor reduce cache line ping pongs)
    The bufs[] array is *large* and is placed near the beginning of the
    structure, so all following fields have a large offset.  This is
    unfortunate because many archs have smaller instructions when using small
    offsets relative to a base register.  On x86 for example, 7 bits offsets
    have smaller instruction lengths.
    Moving bufs[] at the end of pipe_buf_operations permits all fields to have
    small offsets, and reduce text size, and icache pressure.
    # size vmlinux.pre vmlinux
        text    data     bss     dec     hex filename
    3268989  664356  492196 4425541  438745 vmlinux.pre
    3268765  664356  492196 4425317  438665 vmlinux
    So this patch reduces text size by 224 bytes on my x86_64 machine. Similar
    results on ia32.
    Signed-off-by: Eric Dumazet <[EMAIL PROTECTED]>
    Signed-off-by: Andrew Morton <[EMAIL PROTECTED]>
    Signed-off-by: Linus Torvalds <[EMAIL PROTECTED]>
 include/linux/pipe_fs_i.h |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/include/linux/pipe_fs_i.h b/include/linux/pipe_fs_i.h
index cc902d2..2e19478 100644
--- a/include/linux/pipe_fs_i.h
+++ b/include/linux/pipe_fs_i.h
@@ -41,7 +41,6 @@ struct pipe_buf_operations {
 struct pipe_inode_info {
        wait_queue_head_t wait;
        unsigned int nrbufs, curbuf;
-       struct pipe_buffer bufs[PIPE_BUFFERS];
        struct page *tmp_page;
        unsigned int readers;
        unsigned int writers;
@@ -51,6 +50,7 @@ struct pipe_inode_info {
        struct fasync_struct *fasync_readers;
        struct fasync_struct *fasync_writers;
        struct inode *inode;
+       struct pipe_buffer bufs[PIPE_BUFFERS];
 /* Differs from PIPE_BUF in that PIPE_SIZE is the length of the actual
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at

Reply via email to