2010-11-20 05:06:55

by Alexey Zaytsev

[permalink] [raw]
Subject: [PATCH] Shrink fanotify_event_metadata by 32 bits

There seems to be no point wasting 32 bits for either the event version or length

Signed-off-by: Alexey Zaytsev <[email protected]>
---

Hi.

While I'm working on the file modification events,
please consider this patch. It obviously breaks
the userspace ABI. But maybe that's acceptable, given
that no kernel has ever been released with the old ABI.

And the users only need to recompile their code, without
changing anything.

If we agree that this change is desirable, please make sure
it makes it to Linus before the release. ;)


include/linux/fanotify.h | 7 ++++---
1 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/include/linux/fanotify.h b/include/linux/fanotify.h
index 0f01214..9a7986f 100644
--- a/include/linux/fanotify.h
+++ b/include/linux/fanotify.h
@@ -86,10 +86,11 @@
#define FANOTIFY_METADATA_VERSION 2

struct fanotify_event_metadata {
- __u32 event_len;
- __u32 vers;
- __aligned_u64 mask;
+ __u16 event_len;
+ __u8 vers;
+ __u8 reserved;
__s32 fd;
+ __aligned_u64 mask;
__s32 pid;
};


2010-11-20 21:03:55

by Alexey Zaytsev

[permalink] [raw]
Subject: Re: [PATCH] Shrink fanotify_event_metadata by 32 bits

Ok, just so you know, the real motivation is to use the '__u8
reserved' for an offset to the first option's header. This way we
should be able to add a reasonable number of new core fields to struct
fanotify_event_metadata, and still maintain backwards compatibility.
I'd have to add an other __u32 for that purpose, so we are actually
saving 64 bits per event with this patch.

On Sat, Nov 20, 2010 at 08:08, Alexey Zaytsev <[email protected]> wrote:
> There seems to be no point wasting 32 bits for either the event version or length
>
> Signed-off-by: Alexey Zaytsev <[email protected]>
> ---
>
> Hi.
>
> While I'm working on the file modification events,
> please consider this patch. It obviously breaks
> the userspace ABI. But maybe that's acceptable, given
> that no kernel has ever been released with the old ABI.
>
> And the users only need to recompile their code, without
> changing anything.
>
> If we agree that this change is desirable, please make sure
> it makes it to Linus before the release. ;)
>
>
>  include/linux/fanotify.h |    7 ++++---
>  1 files changed, 4 insertions(+), 3 deletions(-)
>
> diff --git a/include/linux/fanotify.h b/include/linux/fanotify.h
> index 0f01214..9a7986f 100644
> --- a/include/linux/fanotify.h
> +++ b/include/linux/fanotify.h
> @@ -86,10 +86,11 @@
>  #define FANOTIFY_METADATA_VERSION      2
>
>  struct fanotify_event_metadata {
> -       __u32 event_len;
> -       __u32 vers;
> -       __aligned_u64 mask;
> +       __u16 event_len;
> +       __u8 vers;
> +       __u8 reserved;
>        __s32 fd;
> +       __aligned_u64 mask;
>        __s32 pid;
>  };
>
>
>