Advertisement
StenaviN

Untitled

Dec 26th, 2018
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 2.07 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. file=${1}
  4. if [[ -z "${file}" ]]; then
  5.   echo "Path to a file within DDFS is required"
  6.   exit 1
  7. fi
  8.  
  9. ddfs_bmap ${file} 2>/dev/null | \
  10. awk '
  11. function myprint() {
  12.         blk_skip=(cur_addr - prev_addr)/store_blk_size - 1;
  13.  
  14.         if (start_addr == prev_addr) {
  15.            if (blk_skip == 0 || blk_skip == -1) {
  16.               printf "[ %27x ] blk_read: %-10d\n", start_addr, blk_count;
  17.            } else {
  18.               printf "[ %27x ] blk_read: %-10d blk_skip: % -10d\n", start_addr, blk_count, blk_skip;
  19.            }
  20.         } else {
  21.            blk_count=(prev_addr - start_addr)/store_blk_size + 1;
  22.            printf "[ %12x - %12x ] blk_read: %-10d blk_skip: % -10d\n", start_addr, prev_addr, blk_count, blk_skip;
  23.         }
  24.  
  25.         fragment_count=fragment_count + 1;
  26. }
  27.  
  28. NR == 1 {
  29.   store_blk_size=65568;
  30.   zero_sig="c3320def4e1dbbf428c3f89c665c550933c4cfbb62ab8928";
  31.   zero_blk_count=0;
  32.   zero_blk_addr="";
  33.   total_blk_count=0;
  34.   fragment_count=0;
  35. }
  36.  
  37. NR > 1 {
  38.   total_blk_count=total_blk_count+1;
  39.   cur_sig=$2;
  40.  
  41.   if (cur_sig == zero_sig) {
  42.      zero_blk_count=zero_blk_count + 1;
  43.      zero_blk_addr=strtonum("0x"$3);
  44.   } else if (start_addr == "") {
  45.      start_addr=strtonum("0x"$3);
  46.      cur_addr=start_addr;
  47.      prev_addr=start_addr;
  48.  
  49.      start_sig=$2;
  50.      prev_sig=start_sig;
  51.      blk_count=1;
  52.   } else {
  53.      cur_addr=strtonum("0x"$3);
  54.  
  55.      if (cur_sig == prev_sig) {
  56.         blk_count=blk_count + 1;
  57.      } else {
  58.         if (cur_addr - prev_addr != store_blk_size) {
  59.            myprint();
  60.  
  61.            start_addr=cur_addr;
  62.  
  63.            start_sig=cur_sig;
  64.            blk_count=1;
  65.         }
  66.  
  67.         prev_sig=cur_sig;
  68.         prev_addr=cur_addr;
  69.      }
  70.   }
  71. }
  72. END {
  73.   myprint();
  74.  
  75.   printf "#########################################################################\n";
  76.   printf "#[ ZERO_BLOCK_ADDR: %9x ] blk_count: %-10d\n", zero_blk_addr, zero_blk_count;
  77.   printf "#[ TOTAL_BLOCKS:  %11d ]\n", total_blk_count;
  78.   printf "#[ FRAGMENTS:     %11d ]\n", fragment_count;
  79. }'
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement