Message ID | 1466539544-706-1-git-send-email-hauke@hauke-m.de |
---|---|
State | Accepted |
Headers | show |
On 21/06/16 21:05, Hauke Mehrtens wrote: > In the upstream kernel and the upstream squashfs4 tools the xz > compression header looks the following: > struct disk_comp_opts { > __le32 dictionary_size; > __le32 flags; > }; > > We added some other members and also moved some existing members. Place > the members which are already in upstream header at the same position > as in that kernel and add our own at the end. The kernel should not > have a problem when there are some additional members and just ignore > them. > But no endian match? __le32 -> uint32_t
On 06/22/2016 06:01 PM, Conor O'Gorman wrote: > On 21/06/16 21:05, Hauke Mehrtens wrote: >> In the upstream kernel and the upstream squashfs4 tools the xz >> compression header looks the following: >> struct disk_comp_opts { >> __le32 dictionary_size; >> __le32 flags; >> }; >> >> We added some other members and also moved some existing members. Place >> the members which are already in upstream header at the same position >> as in that kernel and add our own at the end. The kernel should not >> have a problem when there are some additional members and just ignore >> them. >> > But no endian match? __le32 -> uint32_t Hi, The userspace utile does not use __le32, but the values are converted to little endian before writing them. Hauke
diff --git a/target/linux/generic/patches-3.18/520-squashfs_update_xz_comp_opts.patch b/target/linux/generic/patches-3.18/520-squashfs_update_xz_comp_opts.patch deleted file mode 100644 index ad11b30..0000000 --- a/target/linux/generic/patches-3.18/520-squashfs_update_xz_comp_opts.patch +++ /dev/null @@ -1,25 +0,0 @@ -From f31b7c0efa255dd17a5f584022a319387f09b0d8 Mon Sep 17 00:00:00 2001 -From: Jonas Gorski <jonas.gorski@gmail.com> -Date: Tue, 12 Apr 2011 19:55:41 +0200 -Subject: [PATCH] squashfs: update xz compressor options struct. - -Update the xz compressor options struct to match the squashfs userspace -one. ---- - fs/squashfs/xz_wrapper.c | 4 +++- - 1 files changed, 3 insertions(+), 1 deletions(-) - ---- a/fs/squashfs/xz_wrapper.c -+++ b/fs/squashfs/xz_wrapper.c -@@ -40,8 +40,10 @@ struct squashfs_xz { - }; - - struct disk_comp_opts { -- __le32 dictionary_size; - __le32 flags; -+ __le16 bit_opts; -+ __le16 fb; -+ __le32 dictionary_size; - }; - - struct comp_opts { diff --git a/target/linux/generic/patches-4.1/520-squashfs_update_xz_comp_opts.patch b/target/linux/generic/patches-4.1/520-squashfs_update_xz_comp_opts.patch deleted file mode 100644 index ad11b30..0000000 --- a/target/linux/generic/patches-4.1/520-squashfs_update_xz_comp_opts.patch +++ /dev/null @@ -1,25 +0,0 @@ -From f31b7c0efa255dd17a5f584022a319387f09b0d8 Mon Sep 17 00:00:00 2001 -From: Jonas Gorski <jonas.gorski@gmail.com> -Date: Tue, 12 Apr 2011 19:55:41 +0200 -Subject: [PATCH] squashfs: update xz compressor options struct. - -Update the xz compressor options struct to match the squashfs userspace -one. ---- - fs/squashfs/xz_wrapper.c | 4 +++- - 1 files changed, 3 insertions(+), 1 deletions(-) - ---- a/fs/squashfs/xz_wrapper.c -+++ b/fs/squashfs/xz_wrapper.c -@@ -40,8 +40,10 @@ struct squashfs_xz { - }; - - struct disk_comp_opts { -- __le32 dictionary_size; - __le32 flags; -+ __le16 bit_opts; -+ __le16 fb; -+ __le32 dictionary_size; - }; - - struct comp_opts { diff --git a/target/linux/generic/patches-4.4/520-squashfs_update_xz_comp_opts.patch b/target/linux/generic/patches-4.4/520-squashfs_update_xz_comp_opts.patch deleted file mode 100644 index ad11b30..0000000 --- a/target/linux/generic/patches-4.4/520-squashfs_update_xz_comp_opts.patch +++ /dev/null @@ -1,25 +0,0 @@ -From f31b7c0efa255dd17a5f584022a319387f09b0d8 Mon Sep 17 00:00:00 2001 -From: Jonas Gorski <jonas.gorski@gmail.com> -Date: Tue, 12 Apr 2011 19:55:41 +0200 -Subject: [PATCH] squashfs: update xz compressor options struct. - -Update the xz compressor options struct to match the squashfs userspace -one. ---- - fs/squashfs/xz_wrapper.c | 4 +++- - 1 files changed, 3 insertions(+), 1 deletions(-) - ---- a/fs/squashfs/xz_wrapper.c -+++ b/fs/squashfs/xz_wrapper.c -@@ -40,8 +40,10 @@ struct squashfs_xz { - }; - - struct disk_comp_opts { -- __le32 dictionary_size; - __le32 flags; -+ __le16 bit_opts; -+ __le16 fb; -+ __le32 dictionary_size; - }; - - struct comp_opts { diff --git a/tools/squashfs4/patches/160-expose_lzma_xz_options.patch b/tools/squashfs4/patches/160-expose_lzma_xz_options.patch index 2fbd954..9e1c1fb 100644 --- a/tools/squashfs4/patches/160-expose_lzma_xz_options.patch +++ b/tools/squashfs4/patches/160-expose_lzma_xz_options.patch @@ -40,6 +40,7 @@ + + +struct lzma_opts { ++ uint32_t dict_size; + uint32_t flags; +#define LZMA_OPT_FLT_MASK 0xffff +#define LZMA_OPT_PRE_OFF 16 @@ -53,7 +54,6 @@ +#define LZMA_OPT_PB_OFF 6 +#define LZMA_OPT_PB_MASK (0x7 << LZMA_OPT_PB_OFF) + uint16_t fb; -+ uint32_t dict_size; +}; + +#if __BYTE_ORDER == __BIG_ENDIAN
In the upstream kernel and the upstream squashfs4 tools the xz compression header looks the following: struct disk_comp_opts { __le32 dictionary_size; __le32 flags; }; We added some other members and also moved some existing members. Place the members which are already in upstream header at the same position as in that kernel and add our own at the end. The kernel should not have a problem when there are some additional members and just ignore them. Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de> --- .../520-squashfs_update_xz_comp_opts.patch | 25 ---------------------- .../520-squashfs_update_xz_comp_opts.patch | 25 ---------------------- .../520-squashfs_update_xz_comp_opts.patch | 25 ---------------------- .../patches/160-expose_lzma_xz_options.patch | 2 +- 4 files changed, 1 insertion(+), 76 deletions(-) delete mode 100644 target/linux/generic/patches-3.18/520-squashfs_update_xz_comp_opts.patch delete mode 100644 target/linux/generic/patches-4.1/520-squashfs_update_xz_comp_opts.patch delete mode 100644 target/linux/generic/patches-4.4/520-squashfs_update_xz_comp_opts.patch