[Cluster-devel] cluster/gfs2/libgfs2 fs_ops.c
rpeterso at sourceware.org
rpeterso at sourceware.org
Mon Mar 26 19:32:25 UTC 2007
CVSROOT: /cvs/cluster
Module name: cluster
Branch: RHEL5
Changes by: rpeterso at sourceware.org 2007-03-26 20:32:25
Modified files:
gfs2/libgfs2 : fs_ops.c
Log message:
Resolves: Bugzilla Bug 232124: gfs2_fsck will create multiple
lost+found directories.
Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/gfs2/libgfs2/fs_ops.c.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.4.2.1&r2=1.4.2.2
--- cluster/gfs2/libgfs2/fs_ops.c 2007/02/12 19:01:41 1.4.2.1
+++ cluster/gfs2/libgfs2/fs_ops.c 2007/03/26 19:32:25 1.4.2.2
@@ -1177,19 +1177,24 @@
uint64_t bn;
struct gfs2_inum inum;
struct gfs2_buffer_head *bh;
+ struct gfs2_inode *ip;
- bn = dinode_alloc(sdp);
+ gfs2_lookupi(dip, filename, strlen(filename), &ip);
+ if (!ip) {
+ bn = dinode_alloc(sdp);
- inum.no_formal_ino = sdp->md.next_inum++;
- inum.no_addr = bn;
+ inum.no_formal_ino = sdp->md.next_inum++;
+ inum.no_addr = bn;
- dir_add(dip, filename, strlen(filename), &inum, IF2DT(mode));
+ dir_add(dip, filename, strlen(filename), &inum, IF2DT(mode));
- if(S_ISDIR(mode))
- dip->i_di.di_nlink++;
+ if(S_ISDIR(mode))
+ dip->i_di.di_nlink++;
- bh = init_dinode(sdp, &inum, mode, flags, &dip->i_di.di_num);
- return inode_get(sdp, bh);
+ bh = init_dinode(sdp, &inum, mode, flags, &dip->i_di.di_num);
+ ip = inode_get(sdp, bh);
+ }
+ return ip;
}
/**
More information about the Cluster-devel
mailing list