From mboxrd@z Thu Jan 1 00:00:00 1970 From: rpeterso@sourceware.org Date: 15 Jun 2006 18:45:22 -0000 Subject: [Cluster-devel] cluster/gfs2/libgfs2 gfs2_log.c super.c Message-ID: <20060615184522.9556.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 2006-06-15 18:45:22 Modified files: gfs2/libgfs2 : gfs2_log.c super.c Log message: Added some error reporting back in when checking for gfs2 file systems. Patches: http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/gfs2/libgfs2/gfs2_log.c.diff?cvsroot=cluster&r1=1.1&r2=1.2 http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/gfs2/libgfs2/super.c.diff?cvsroot=cluster&r1=1.1&r2=1.2 --- cluster/gfs2/libgfs2/gfs2_log.c 2006/06/12 20:38:27 1.1 +++ cluster/gfs2/libgfs2/gfs2_log.c 2006/06/15 18:45:22 1.2 @@ -45,11 +45,13 @@ case MSG_DEBUG: printf("(%s:%d)\t", file, line); vprintf(format, args); + fflush(stdout); break; case MSG_INFO: case MSG_NOTICE: case MSG_WARN: vprintf(format, args); + fflush(stdout); break; case MSG_ERROR: case MSG_CRITICAL: --- cluster/gfs2/libgfs2/super.c 2006/06/12 20:38:27 1.1 +++ cluster/gfs2/libgfs2/super.c 2006/06/15 18:45:22 1.2 @@ -36,13 +36,20 @@ static int check_sb(struct gfs2_sbd *sdp, struct gfs2_sb *sb) { if (sb->sb_header.mh_magic != GFS2_MAGIC || - sb->sb_header.mh_type != GFS2_METATYPE_SB) + sb->sb_header.mh_type != GFS2_METATYPE_SB) { + log_crit("Either the super block is corrupted, or this " + "is not a GFS2 filesystem\n"); + log_debug("Header magic: %X Header Type: %X\n", + sb->sb_header.mh_magic, + sb->sb_header.mh_type); return -EINVAL; - + } /* If format numbers match exactly, we're done. */ if (sb->sb_fs_format != GFS2_FORMAT_FS || - sb->sb_multihost_format != GFS2_FORMAT_MULTI) + sb->sb_multihost_format != GFS2_FORMAT_MULTI) { + log_crit("Old gfs1 file system detected.\n"); return -EINVAL; + } return 0; } @@ -91,6 +98,7 @@ sdp->sd_heightsize[x] = space; } if (x > GFS2_MAX_META_HEIGHT){ + log_err("Bad max metadata height.\n"); error = -1; goto out; } @@ -105,8 +113,10 @@ sdp->sd_jheightsize[x] = space; } sdp->sd_max_jheight = x; - if(sdp->sd_max_jheight > GFS2_MAX_META_HEIGHT) + if(sdp->sd_max_jheight > GFS2_MAX_META_HEIGHT) { + log_err("Bad max jheight.\n"); error = -1; + } sdp->fssize = lseek(sdp->device_fd, 0, SEEK_END) / sdp->sd_sb.sb_bsize; out: @@ -131,17 +141,21 @@ char journal_name[JOURNAL_NAME_SIZE]; int i; - if(!ip) + if(!ip) { + log_crit("Journal inode not found.\n"); return -1; + } - if(!(sdp->md.journal = calloc(ip->i_di.di_entries - 2, sizeof(struct gfs2_inode *)))) + if(!(sdp->md.journal = calloc(ip->i_di.di_entries - 2, sizeof(struct gfs2_inode *)))) { + log_err("Unable to allocate journal index\n"); return -1; + } sdp->md.journals = 0; memset(journal_name, 0, sizeof(*journal_name)); for(i = 0; i < ip->i_di.di_entries - 2; i++) { /* FIXME check snprintf return code */ snprintf(journal_name, JOURNAL_NAME_SIZE, "journal%u", i); - gfs2_lookupi(sdp->md.jiinode, journal_name, strlen(journal_name), + gfs2_lookupi(sdp->md.jiinode, journal_name, strlen(journal_name), &jip); sdp->md.journal[i] = jip; } @@ -227,13 +241,11 @@ int write_sb(struct gfs2_sbd *sbp) { - int error = 0; struct gfs2_buffer_head *bh; bh = bread(sbp, GFS2_SB_ADDR >> sbp->sd_fsb2bb_shift); gfs2_sb_out(&sbp->sd_sb, bh->b_data); brelse(bh, updated); - return error; - + return 0; }