git: sbin/hammer: Fix/refactor check_data_crc()

Tomohiro Kusumi tkusumi at crater.dragonflybsd.org
Sun Mar 27 10:07:48 PDT 2016


commit 3fd1e952cb2f26187833a14e7b4115f59505b33d
Author: Tomohiro Kusumi <kusumi.tomohiro at gmail.com>
Date:   Sun Mar 27 20:56:14 2016 +0900

    sbin/hammer: Fix/refactor check_data_crc()
    
    Separate inode CRC from other CRC checks.
    The only reason this function goes into while(data_len) loop is
    because HAMMER userspace can only support upto 16KB buffer data
    whereas inode is always 128 byte.
    
    CRC check should look something similar to the kernel function
    hammer_crc_test_leaf() in order to keep maintainability.
    
    Also blockmap_lookup() doesn't need to be inside the while loop.
    It only needs to verify zone offset once for each record data.
    
    Also use return value of blockmap_lookup() which is zone2 offset
    instead of using non-zone2 offset for get_buffer_data().
    get_buffer() does extra blockmap lookup if offset is not zone-2.

Summary of changes:
 sbin/hammer/cmd_show.c | 69 +++++++++++++++++++++++++++++++++-----------------
 1 file changed, 46 insertions(+), 23 deletions(-)

http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/3fd1e952cb2f26187833a14e7b4115f59505b33d


-- 
DragonFly BSD source repository


More information about the Commits mailing list