From mboxrd@z Thu Jan 1 00:00:00 1970 From: rpeterso@sourceware.org Date: 26 Mar 2007 19:32:25 -0000 Subject: [Cluster-devel] cluster/gfs2/libgfs2 fs_ops.c Message-ID: <20070326193225.17418.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 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; } /**