From mboxrd@z Thu Jan 1 00:00:00 1970 From: rpeterso@sourceware.org Date: 25 Jun 2007 19:57:12 -0000 Subject: [Cluster-devel] cluster/gfs2/edit hexedit.c Message-ID: <20070625195712.19779.qmail@sourceware.org> List-Id: To: cluster-devel.redhat.com MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit CVSROOT: /cvs/cluster Module name: cluster Changes by: rpeterso at sourceware.org 2007-06-25 19:57:12 Modified files: gfs2/edit : hexedit.c Log message: Fix a place where indirect offsets were calculated incorrectly. Patches: http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/gfs2/edit/hexedit.c.diff?cvsroot=cluster&r1=1.14&r2=1.15 --- cluster/gfs2/edit/hexedit.c 2007/06/21 22:15:34 1.14 +++ cluster/gfs2/edit/hexedit.c 2007/06/25 19:57:11 1.15 @@ -610,8 +610,7 @@ termlines - start_line - 2)) { if (edit_row[dmode] == print_entry_ndx) { COLORS_HIGHLIGHT; - sprintf(highlighted_addr, "%" PRIx64, - ri.ri_addr); + sprintf(highlighted_addr, "%llx", (unsigned long long)ri.ri_addr); } print_gfs2("RG #%d", print_entry_ndx); if (!print_rindex) @@ -825,7 +824,7 @@ { int start_line, total_dirents, indir_blocks; int i, cur_height = -1; - uint64_t factor[5]; + uint64_t factor[5]={0,0,0,0,0}; int offsets[5]; last_entry_onscreen[dmode] = 0; @@ -872,12 +871,22 @@ } } if (cur_height >= 0) { + int diptrs, inptrs; + + if (gfs1) { + diptrs = 483; + inptrs = 501; + } else { + diptrs = (bufsize - sizeof(sizeof(struct gfs2_dinode))) / sizeof(uint64_t); + inptrs = (bufsize - sizeof(sizeof(struct gfs2_meta_header))) / + sizeof(uint64_t); + } /* Multiply out the max factor based on inode height.*/ /* This is how much data is represented by each */ /* indirect pointer at each height. */ factor[0] = 1ull; for (i = 0; i < di.di_height; i++) - factor[i + 1] = factor[i] * (gfs1 ? 501 : 509); + factor[i + 1] = factor[i] * inptrs; } print_gfs2(" (at height=%d)", cur_height); }