Btrfs progs release 4.8 (32bit builds broken)
diff mbox

Message ID CAKgsxVTmdkXjOaVA_Ch9iX-61ckri99vQgafKx8nby87_LST3A@mail.gmail.com
State New
Headers show

Commit Message

Justin Maggard Oct. 5, 2016, 10:25 p.m. UTC
I saw a 32-bit build failure, but it looked like a legitimate bug,
unrelated to the compiler version.  Here's the trivial fix:


-Justin

On Wed, Oct 5, 2016 at 6:33 AM, David Sterba <dsterba@suse.cz> wrote:
> I got a report that the 32bit builds are broken. This seems to be caused
> by padding inserted (or not) into the structures and depends on a
> compiler version. The error messages may look cryptic, but if you see
> something like
>
> ioctl.h:570:1: note: in expansion of macro 'BUILD_ASSERT'
>  BUILD_ASSERT(sizeof(struct btrfs_ioctl_received_subvol_args) == 200);
>
> that means that the given structure has an unexpected size. Fixing that
> properly will probably lead to some tricks to force the exact size
> regardless of arch bits and compiler.
> --
> To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Comments

Justin Maggard Oct. 5, 2016, 10:27 p.m. UTC | #1
Oops, I mistook the intent of that check.  Please disregard.

On Wed, Oct 5, 2016 at 3:25 PM, Justin Maggard <jmaggard10@gmail.com> wrote:
> I saw a 32-bit build failure, but it looked like a legitimate bug,
> unrelated to the compiler version.  Here's the trivial fix:
>
> diff --git a/ioctl.h b/ioctl.h
> index a7235c0..26a3a5a 100644
> --- a/ioctl.h
> +++ b/ioctl.h
> @@ -606,7 +606,7 @@ struct btrfs_ioctl_send_args {
>   * Size of structure depends on pointer width, was not caught.  Kernel handles
>   * pointer width differences transparently
>   */
> -BUILD_ASSERT(sizeof(__u64 *) == 8
> +BUILD_ASSERT(sizeof(__u64) == 8
>              ? sizeof(struct btrfs_ioctl_send_args) == 72
>              : (sizeof(void *) == 4
>                 ? sizeof(struct btrfs_ioctl_send_args) == 68
>
> -Justin
>
> On Wed, Oct 5, 2016 at 6:33 AM, David Sterba <dsterba@suse.cz> wrote:
>> I got a report that the 32bit builds are broken. This seems to be caused
>> by padding inserted (or not) into the structures and depends on a
>> compiler version. The error messages may look cryptic, but if you see
>> something like
>>
>> ioctl.h:570:1: note: in expansion of macro 'BUILD_ASSERT'
>>  BUILD_ASSERT(sizeof(struct btrfs_ioctl_received_subvol_args) == 200);
>>
>> that means that the given structure has an unexpected size. Fixing that
>> properly will probably lead to some tricks to force the exact size
>> regardless of arch bits and compiler.
>> --
>> To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
>> the body of a message to majordomo@vger.kernel.org
>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Patch
diff mbox

diff --git a/ioctl.h b/ioctl.h
index a7235c0..26a3a5a 100644
--- a/ioctl.h
+++ b/ioctl.h
@@ -606,7 +606,7 @@  struct btrfs_ioctl_send_args {
  * Size of structure depends on pointer width, was not caught.  Kernel handles
  * pointer width differences transparently
  */
-BUILD_ASSERT(sizeof(__u64 *) == 8
+BUILD_ASSERT(sizeof(__u64) == 8
             ? sizeof(struct btrfs_ioctl_send_args) == 72
             : (sizeof(void *) == 4
                ? sizeof(struct btrfs_ioctl_send_args) == 68