All of lore.kernel.org
 help / color / mirror / Atom feed
From: Boaz Harrosh <bharrosh@panasas.com>
To: Geert Uytterhoeven <geert@linux-m68k.org>
Cc: Arnd Bergmann <arnd@arndb.de>,
	mfasheh@suse.com, Eric Sandeen <sandeen@sandeen.net>,
	joel.becker@oracle.com, linux-kernel@vger.kernel.org,
	Christoph Hellwig <hch@infradead.org>,
	xfs-masters@oss.sgi.com, viro@zeniv.linux.org.uk,
	Ankit Jain <me@ankitjain.org>,
	linux-fsdevel@vger.kernel.org,
	Andrew Morton <akpm@linux-foundation.org>,
	xfs@oss.sgi.com, ocfs2-devel@oss.oracle.com
Subject: Re: [xfs-masters] [PATCH] fs: Add new pre-allocation ioctls to vfs for compatibility with legacy xfs ioctls
Date: Mon, 02 Feb 2009 11:33:59 +0200	[thread overview]
Message-ID: <4986BE07.6090000@panasas.com> (raw)
In-Reply-To: <Pine.LNX.4.64.0902020942230.11930@anakin>

Geert Uytterhoeven wrote:
> On Mon, 2 Feb 2009, Boaz Harrosh wrote:
>> Arnd Bergmann wrote:
>>> No, the compiler is correct, it has to generate more complex code
>>> if it cannot assume that data is naturally aligned and the architecture
>>> does not support unaligned loads. If you don't understand this, please
>>> at least read the list archives about the last five times this came up
>>> before claiming that the compiler is broken.
>>>
>> Wrong!! Sorry, you guys don't listen.
>> I'm talking of the case where the structures are EXACTLY the same anyway
>> you look at them. sizeof(foo) == sizeof(foo_packed) and 
>> offsetof(foo_memmber) == offsetof(foo_packed_member) for every member of
>> the structure. foo && foo_packed are declared exactly the same but with
>> __attribute__((packed(1))) applied to the later.
>>
>> THEN in ia64 case the compiler is brain dead, because it relates
>> "unalignment" to packed(1) which are two different things.
> 
> The natural alignment of a structure is max(alignment(member)), for all
> members. With __attribute__((packed)), the natural alignment of the structure
> is 1, so the compiler cannot assume anything.
> 

No the natural alignment is what it is, after the application of
__attribute__((packed(1))). In a well defined structure that is a no-opt.
But yes in ai64 the gcc programmers got lazy and did not make that analysis
after laying out the structure.

> While the ints in the structure may still be at offsets 0, 4, 8, and so on,
> this doesn't say anything about their actual memory addresses, as the struct
> base address itself may be unaligned.
> 

The base address can be unaligned even if the structure is aligned. In that
case you need the __atrubute__((aligned)) thingy. It is true that if the sizeof(foo_packed)
is though unaligned, the compiler will have to assume unalignment in array operations.
but if the sizeof(foo_packed) is naturally aligned at the output then the compiler
has all the needed information to know that even if I declared __packed, it calculated
and knows that it is well aligned at the end.

> Gr{oetje,eeting}s,
> 
> 						Geert
> 

Please note that I gave up on the compiler and understand that the use of __packed
is dangerous in some cases, sigh. My standing point is to make sure there are no guesses
left, and a BUILD_BUG_ON to make sure of that.

Boaz

_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs

WARNING: multiple messages have this Message-ID (diff)
From: Boaz Harrosh <bharrosh@panasas.com>
To: Geert Uytterhoeven <geert@linux-m68k.org>
Cc: Arnd Bergmann <arnd@arndb.de>,
	Christoph Hellwig <hch@infradead.org>,
	Eric Sandeen <sandeen@sandeen.net>,
	mfasheh@suse.com, joel.becker@oracle.com,
	linux-kernel@vger.kernel.org, xfs-masters@oss.sgi.com,
	viro@zeniv.linux.org.uk, Ankit Jain <me@ankitjain.org>,
	linux-fsdevel@vger.kernel.org,
	Andrew Morton <akpm@linux-foundation.org>,
	xfs@oss.sgi.com, ocfs2-devel@oss.oracle.com
Subject: [Ocfs2-devel] [xfs-masters] [PATCH] fs: Add new pre-allocation ioctls to vfs for compatibility with legacy xfs ioctls
Date: Mon, 02 Feb 2009 09:34:06 -0000	[thread overview]
Message-ID: <4986BE07.6090000@panasas.com> (raw)
In-Reply-To: <Pine.LNX.4.64.0902020942230.11930@anakin>

Geert Uytterhoeven wrote:
> On Mon, 2 Feb 2009, Boaz Harrosh wrote:
>> Arnd Bergmann wrote:
>>> No, the compiler is correct, it has to generate more complex code
>>> if it cannot assume that data is naturally aligned and the architecture
>>> does not support unaligned loads. If you don't understand this, please
>>> at least read the list archives about the last five times this came up
>>> before claiming that the compiler is broken.
>>>
>> Wrong!! Sorry, you guys don't listen.
>> I'm talking of the case where the structures are EXACTLY the same anyway
>> you look at them. sizeof(foo) == sizeof(foo_packed) and 
>> offsetof(foo_memmber) == offsetof(foo_packed_member) for every member of
>> the structure. foo && foo_packed are declared exactly the same but with
>> __attribute__((packed(1))) applied to the later.
>>
>> THEN in ia64 case the compiler is brain dead, because it relates
>> "unalignment" to packed(1) which are two different things.
> 
> The natural alignment of a structure is max(alignment(member)), for all
> members. With __attribute__((packed)), the natural alignment of the structure
> is 1, so the compiler cannot assume anything.
> 

No the natural alignment is what it is, after the application of
__attribute__((packed(1))). In a well defined structure that is a no-opt.
But yes in ai64 the gcc programmers got lazy and did not make that analysis
after laying out the structure.

> While the ints in the structure may still be at offsets 0, 4, 8, and so on,
> this doesn't say anything about their actual memory addresses, as the struct
> base address itself may be unaligned.
> 

The base address can be unaligned even if the structure is aligned. In that
case you need the __atrubute__((aligned)) thingy. It is true that if the sizeof(foo_packed)
is though unaligned, the compiler will have to assume unalignment in array operations.
but if the sizeof(foo_packed) is naturally aligned at the output then the compiler
has all the needed information to know that even if I declared __packed, it calculated
and knows that it is well aligned at the end.

> Gr{oetje,eeting}s,
> 
> 						Geert
> 

Please note that I gave up on the compiler and understand that the use of __packed
is dangerous in some cases, sigh. My standing point is to make sure there are no guesses
left, and a BUILD_BUG_ON to make sure of that.

Boaz

WARNING: multiple messages have this Message-ID (diff)
From: Boaz Harrosh <bharrosh@panasas.com>
To: Geert Uytterhoeven <geert@linux-m68k.org>
Cc: Arnd Bergmann <arnd@arndb.de>,
	Christoph Hellwig <hch@infradead.org>,
	Eric Sandeen <sandeen@sandeen.net>,
	mfasheh@suse.com, joel.becker@oracle.com,
	linux-kernel@vger.kernel.org, xfs-masters@oss.sgi.com,
	viro@zeniv.linux.org.uk, Ankit Jain <me@ankitjain.org>,
	linux-fsdevel@vger.kernel.org,
	Andrew Morton <akpm@linux-foundation.org>,
	xfs@oss.sgi.com, ocfs2-devel@oss.oracle.com
Subject: Re: [xfs-masters] [PATCH] fs: Add new pre-allocation ioctls to vfs for compatibility with legacy xfs ioctls
Date: Mon, 02 Feb 2009 11:33:59 +0200	[thread overview]
Message-ID: <4986BE07.6090000@panasas.com> (raw)
In-Reply-To: <Pine.LNX.4.64.0902020942230.11930@anakin>

Geert Uytterhoeven wrote:
> On Mon, 2 Feb 2009, Boaz Harrosh wrote:
>> Arnd Bergmann wrote:
>>> No, the compiler is correct, it has to generate more complex code
>>> if it cannot assume that data is naturally aligned and the architecture
>>> does not support unaligned loads. If you don't understand this, please
>>> at least read the list archives about the last five times this came up
>>> before claiming that the compiler is broken.
>>>
>> Wrong!! Sorry, you guys don't listen.
>> I'm talking of the case where the structures are EXACTLY the same anyway
>> you look at them. sizeof(foo) == sizeof(foo_packed) and 
>> offsetof(foo_memmber) == offsetof(foo_packed_member) for every member of
>> the structure. foo && foo_packed are declared exactly the same but with
>> __attribute__((packed(1))) applied to the later.
>>
>> THEN in ia64 case the compiler is brain dead, because it relates
>> "unalignment" to packed(1) which are two different things.
> 
> The natural alignment of a structure is max(alignment(member)), for all
> members. With __attribute__((packed)), the natural alignment of the structure
> is 1, so the compiler cannot assume anything.
> 

No the natural alignment is what it is, after the application of
__attribute__((packed(1))). In a well defined structure that is a no-opt.
But yes in ai64 the gcc programmers got lazy and did not make that analysis
after laying out the structure.

> While the ints in the structure may still be at offsets 0, 4, 8, and so on,
> this doesn't say anything about their actual memory addresses, as the struct
> base address itself may be unaligned.
> 

The base address can be unaligned even if the structure is aligned. In that
case you need the __atrubute__((aligned)) thingy. It is true that if the sizeof(foo_packed)
is though unaligned, the compiler will have to assume unalignment in array operations.
but if the sizeof(foo_packed) is naturally aligned at the output then the compiler
has all the needed information to know that even if I declared __packed, it calculated
and knows that it is well aligned at the end.

> Gr{oetje,eeting}s,
> 
> 						Geert
> 

Please note that I gave up on the compiler and understand that the use of __packed
is dangerous in some cases, sigh. My standing point is to make sure there are no guesses
left, and a BUILD_BUG_ON to make sure of that.

Boaz

  reply	other threads:[~2009-02-02  9:35 UTC|newest]

Thread overview: 76+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-01-28 20:59 [PATCH] fs: Add new pre-allocation ioctls to vfs for compatibility with legacy xfs ioctls Ankit Jain
2009-01-28 20:59 ` Ankit Jain
2009-01-28 20:59 ` [Ocfs2-devel] " Ankit Jain
2009-01-31  0:22 ` Andrew Morton
2009-01-31  0:23   ` [Ocfs2-devel] " Andrew Morton
2009-01-31  0:22   ` Andrew Morton
2009-01-31  0:38   ` Arnd Bergmann
2009-01-31  0:39     ` [Ocfs2-devel] " Arnd Bergmann
2009-01-31  0:38     ` Arnd Bergmann
2009-01-31  1:14     ` Andrew Morton
2009-01-31  1:14       ` [Ocfs2-devel] " Andrew Morton
2009-01-31  1:14       ` Andrew Morton
2009-01-31  1:48       ` Arnd Bergmann
2009-01-31  1:49         ` [Ocfs2-devel] " Arnd Bergmann
2009-01-31  1:48         ` Arnd Bergmann
2009-01-31  1:48         ` Arnd Bergmann
2009-02-01  9:48         ` Boaz Harrosh
2009-02-01  9:48           ` [Ocfs2-devel] " Boaz Harrosh
2009-02-01  9:48           ` Boaz Harrosh
2009-02-01 10:05           ` Geert Uytterhoeven
2009-02-01 10:05             ` [Ocfs2-devel] " Geert Uytterhoeven
2009-02-01 10:05             ` Geert Uytterhoeven
2009-02-01 10:39             ` Boaz Harrosh
2009-02-01 10:39               ` [Ocfs2-devel] " Boaz Harrosh
2009-02-01 10:39               ` Boaz Harrosh
2009-02-01 10:59               ` Geert Uytterhoeven
2009-02-01 11:00                 ` [Ocfs2-devel] " Geert Uytterhoeven
2009-02-01 10:59                 ` Geert Uytterhoeven
2009-02-01 12:32                 ` Boaz Harrosh
2009-02-01 12:33                   ` [Ocfs2-devel] " Boaz Harrosh
2009-02-01 12:32                   ` Boaz Harrosh
2009-02-01 15:37                   ` [xfs-masters] " Eric Sandeen
2009-02-01 15:41                     ` [Ocfs2-devel] " Eric Sandeen
2009-02-01 15:37                     ` Eric Sandeen
2009-02-01 16:25                     ` Boaz Harrosh
2009-02-01 16:26                       ` [Ocfs2-devel] " Boaz Harrosh
2009-02-01 16:25                       ` Boaz Harrosh
2009-02-01 16:35                       ` Eric Sandeen
2009-02-01 16:36                         ` [Ocfs2-devel] " Eric Sandeen
2009-02-01 16:35                         ` Eric Sandeen
2009-02-01 16:41                         ` Christoph Hellwig
2009-02-01 16:45                           ` [Ocfs2-devel] " Christoph Hellwig
2009-02-01 16:41                           ` Christoph Hellwig
2009-02-01 16:57                           ` Boaz Harrosh
2009-02-01 16:58                             ` [Ocfs2-devel] " Boaz Harrosh
2009-02-01 16:57                             ` Boaz Harrosh
2009-02-02  0:31                             ` Arnd Bergmann
2009-02-02  0:32                               ` [Ocfs2-devel] " Arnd Bergmann
2009-02-02  0:31                               ` Arnd Bergmann
2009-02-02  8:29                               ` Boaz Harrosh
2009-02-02  8:30                                 ` [Ocfs2-devel] " Boaz Harrosh
2009-02-02  8:29                                 ` Boaz Harrosh
2009-02-02  8:45                                 ` Geert Uytterhoeven
2009-02-02  8:45                                   ` [Ocfs2-devel] " Geert Uytterhoeven
2009-02-02  8:45                                   ` Geert Uytterhoeven
2009-02-02  9:33                                   ` Boaz Harrosh [this message]
2009-02-02  9:34                                     ` [Ocfs2-devel] " Boaz Harrosh
2009-02-02  9:33                                     ` Boaz Harrosh
2009-02-02 20:51                                     ` Jamie Lokier
2009-02-02 20:53                                       ` [Ocfs2-devel] " Jamie Lokier
2009-02-02 20:51                                       ` Jamie Lokier
2009-02-03  7:31                                       ` Boaz Harrosh
2009-02-03  7:32                                         ` [Ocfs2-devel] " Boaz Harrosh
2009-02-03  7:31                                         ` Boaz Harrosh
2009-02-03 11:21                                         ` Jamie Lokier
2009-02-03 11:21                                           ` [Ocfs2-devel] " Jamie Lokier
2009-02-03 11:21                                           ` Jamie Lokier
2009-06-19 18:28 ` Christoph Hellwig
2009-06-19 18:28   ` [Ocfs2-devel] " Christoph Hellwig
2009-06-19 18:28   ` Christoph Hellwig
2009-06-20  8:13   ` Arnd Bergmann
2009-06-23 22:05     ` [Ocfs2-devel] " Arnd Bergmann
2009-06-20  8:13     ` Arnd Bergmann
2009-06-21 18:41     ` [xfs-masters] " Christoph Hellwig
2009-06-21 18:46       ` [Ocfs2-devel] " Christoph Hellwig
2009-06-21 18:41       ` Christoph Hellwig

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=4986BE07.6090000@panasas.com \
    --to=bharrosh@panasas.com \
    --cc=akpm@linux-foundation.org \
    --cc=arnd@arndb.de \
    --cc=geert@linux-m68k.org \
    --cc=hch@infradead.org \
    --cc=joel.becker@oracle.com \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=me@ankitjain.org \
    --cc=mfasheh@suse.com \
    --cc=ocfs2-devel@oss.oracle.com \
    --cc=sandeen@sandeen.net \
    --cc=viro@zeniv.linux.org.uk \
    --cc=xfs-masters@oss.sgi.com \
    --cc=xfs@oss.sgi.com \
    /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.