[Cluster-devel] cluster/gfs2/fsck metawalk.c
rpeterso at sourceware.org
rpeterso at sourceware.org
Tue Nov 14 22:55:29 UTC 2006
CVSROOT: /cvs/cluster
Module name: cluster
Branch: RHEL5
Changes by: rpeterso at sourceware.org 2006-11-14 22:55:29
Modified files:
gfs2/fsck : metawalk.c
Log message:
Resolves: bz211465
fsck errors on gfs2 volume
Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/gfs2/fsck/metawalk.c.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.3&r2=1.3.2.1
--- cluster/gfs2/fsck/metawalk.c 2006/06/12 20:41:43 1.3
+++ cluster/gfs2/fsck/metawalk.c 2006/11/14 22:55:29 1.3.2.1
@@ -74,15 +74,26 @@
return 1;
}
} else {
- error = pass->check_dentry(ip, dent, prev, bh, filename, update,
- count, pass->private);
- if(error < 0) {
- stack;
- return -1;
+ if (!de.de_inum.no_addr && first) { /* reverse sentinel */
+ log_debug("First dirent is a Sentinel (place holder).\n");
+ /* Swap the two to silently make it a proper sentinel */
+ de.de_inum.no_addr = de.de_inum.no_formal_ino;
+ de.de_inum.no_formal_ino = 0;
+ gfs2_dirent_out(&de, (char *)dent);
+ *update = 1; /* Mark dirent buffer as modified */
+ first = 0;
+ }
+ else {
+ error = pass->check_dentry(ip, dent, prev, bh, filename,
+ update, count, pass->private);
+ if(error < 0) {
+ stack;
+ return -1;
+ }
+ /*if(error > 0) {
+ return 1;
+ }*/
}
- /*if(error > 0) {
- return 1;
- }*/
}
if ((char *)dent + de.de_rec_len >= bh_end){
@@ -165,7 +176,7 @@
/* Since the buffer possibly got
updated directly, release it now,
and grab it again later if we need it */
- brelse(lbh, not_updated);
+ brelse(lbh, *update);
if(error < 0) {
stack;
return -1;
More information about the Cluster-devel
mailing list