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

Mark Tinguely tinguely at sgi.com
Tue Feb 11 08:18:41 CST 2014


On 02/10/14 19:31, Dave Chinner wrote:
> On Mon, Feb 10, 2014 at 05:09:12PM -0600, Mark Tinguely wrote:

<delete>

>> >  +		 * 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....

--Mark.




More information about the xfs mailing list