Hi Benjamin,

Benjamin Brumaire wrote:
> I 'm trying to decode a lzjb compressed blocks and I have some hard times 
> regarding big/little endian. I'm on x86 working with build 77.
>
> #zdb -uuuu ztest
> ...
> rootbp = [L0 DMU objset] 400L/200P DVA[0]=<0:e0c98e00:200>
> ...
>
> ## zdb -R ztest:c0d1s4:e0c98e00:200:                
> Found vdev: /dev/dsk/c0d1s4
>
> ztest:c0d1s4:e0c98e00:200:
>           0 1 2 3 4 5 6 7   8 9 a b c d e f  0123456789abcdef
> 000000:  00000003020e0a00  dd0304050020b601  .......... .....
> 000010:  c505048404040504  35b558231002047c  ........|...#X.5
>
>   
Using the modified zdb, you should be able to do:

# zdb -R ztest:c0d1s4:e0c98e00:200:d,lzjb,400 2>/tmp/foo

Then you can od /tmp/foo.  I am not sure what happens if you run zdb
with a zfs file system that is different endianess from the machine on which
you are running zdb.  It may just work...
The "d:lzjb:400" says to use lzjb decompression with a logical (after 
decompression) size
of 0x400 bytes.  It dumps raw data to stderr, hence the "2>/tmp/foo".

max

> Looking at this blocks with dd:
> dd if=/dev/dsk/c0d1s4 iseek=7374023 bs=512 count=1 | od -x
> 0000000: 0a00 020e 0003 0000 b601 0020 0405 dd03
>
> od -x is responsible for swapping every two bytes. I have on disk
> 0000000: 000a 0e02 0300 0000 01b6 0200 0504 03dd
>
> Comparing with the zdb output is every 8 bytes reversed.
>
> Now I don't know how to pass this to my lzjb decoding programm?
>
> Should I read the 512 bytes and pass them:
>                - from the end
>                - from the start and reverse every 8 bytes
>                - or something else
>
> thanks for any advice
>
> bbr
>  
>  
> This message posted from opensolaris.org
> _______________________________________________
> zfs-discuss mailing list
> zfs-discuss@opensolaris.org
> http://mail.opensolaris.org/mailman/listinfo/zfs-discuss
>
>   

_______________________________________________
zfs-discuss mailing list
zfs-discuss@opensolaris.org
http://mail.opensolaris.org/mailman/listinfo/zfs-discuss

Reply via email to