[Top] [All Lists]

Re: [PATCH v2] xfs_db: fix the setting of unaligned directory fields

To: Dave Chinner <david@xxxxxxxxxxxxx>
Subject: Re: [PATCH v2] xfs_db: fix the setting of unaligned directory fields
From: Mark Tinguely <tinguely@xxxxxxx>
Date: Tue, 11 Feb 2014 08:18:41 -0600
Cc: xfs@xxxxxxxxxxx
Delivered-to: xfs@xxxxxxxxxxx
In-reply-to: <20140211013145.GA13647@dastard>
References: <20140210230923.268327906@xxxxxxx> <20140211013145.GA13647@dastard>
User-agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:9.0) Gecko/20120122 Thunderbird/9.0
On 02/10/14 19:31, Dave Chinner wrote:
On Mon, Feb 10, 2014 at 05:09:12PM -0600, Mark Tinguely wrote:


>  +          * Values larger than 64 bits are array of hex digits that
>  +          * already in the desired ordering (example UUID).
>                    */
>  -         *value = strtoll(arg, NULL, 0);
>  +         if (bit_length > 64)
>  +                 return buf;
I don't understand why you added this - how can we have input left
that we need to parse after the above loop? @bytes will always be<=
0 at this point in time, which means we have no space in the bit
field left to put values into....

The comment explains the return.

If the input bit_length is bigger than 64 bit then it is an array of hex numbers (for example UUID can be entered this way).

buf is the beginning of the allocated array before rbuf pointer put nibbles into it. So this returns the beginning of the hex bytes.

If this return is not taken then it is 64 bits or less and is some kind of integer. The integer will get its fields fixed and converted to big endian....


<Prev in Thread] Current Thread [Next in Thread>