Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 89385
b: refs/heads/master
c: a3da789
h: refs/heads/master
i:
  89383: 60a55b9
v: v3
  • Loading branch information
Christoph Hellwig authored and Lachlan McIlroy committed Apr 18, 2008
1 parent 31a9ab1 commit f107125
Show file tree
Hide file tree
Showing 4 changed files with 18 additions and 21 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 979ebab11623894528d4d37b947533ea4e8649d1
refs/heads/master: a3da789640871c897901c5f766e33be78d56f35a
23 changes: 11 additions & 12 deletions trunk/fs/xfs/linux-2.6/xfs_iops.c
Original file line number Diff line number Diff line change
Expand Up @@ -395,23 +395,22 @@ xfs_vn_link(
struct inode *dir,
struct dentry *dentry)
{
struct inode *ip; /* inode of guy being linked to */
bhv_vnode_t *vp; /* vp of name being linked */
struct inode *inode; /* inode of guy being linked to */
int error;

ip = old_dentry->d_inode; /* inode being linked to */
vp = vn_from_inode(ip);
inode = old_dentry->d_inode;

VN_HOLD(vp);
error = xfs_link(XFS_I(dir), vp, dentry);
igrab(inode);
error = xfs_link(XFS_I(dir), XFS_I(inode), dentry);
if (unlikely(error)) {
VN_RELE(vp);
} else {
xfs_iflags_set(XFS_I(dir), XFS_IMODIFIED);
xfs_validate_fields(ip);
d_instantiate(dentry, ip);
iput(inode);
return -error;
}
return -error;

xfs_iflags_set(XFS_I(dir), XFS_IMODIFIED);
xfs_validate_fields(inode);
d_instantiate(dentry, inode);
return 0;
}

STATIC int
Expand Down
12 changes: 5 additions & 7 deletions trunk/fs/xfs/xfs_vnodeops.c
Original file line number Diff line number Diff line change
Expand Up @@ -2471,12 +2471,10 @@ xfs_remove(
int
xfs_link(
xfs_inode_t *tdp,
bhv_vnode_t *src_vp,
xfs_inode_t *sip,
bhv_vname_t *dentry)
{
bhv_vnode_t *target_dir_vp = XFS_ITOV(tdp);
xfs_mount_t *mp = tdp->i_mount;
xfs_inode_t *sip = xfs_vtoi(src_vp);
xfs_trans_t *tp;
xfs_inode_t *ips[2];
int error;
Expand All @@ -2489,10 +2487,10 @@ xfs_link(
int target_namelen;

xfs_itrace_entry(tdp);
xfs_itrace_entry(xfs_vtoi(src_vp));
xfs_itrace_entry(sip);

target_namelen = VNAMELEN(dentry);
ASSERT(!VN_ISDIR(src_vp));
ASSERT(!S_ISDIR(sip->i_d.di_mode));

if (XFS_FORCED_SHUTDOWN(mp))
return XFS_ERROR(EIO);
Expand Down Expand Up @@ -2544,8 +2542,8 @@ xfs_link(
* xfs_trans_cancel will both unlock the inodes and
* decrement the associated ref counts.
*/
VN_HOLD(src_vp);
VN_HOLD(target_dir_vp);
IHOLD(sip);
IHOLD(tdp);
xfs_trans_ijoin(tp, sip, XFS_ILOCK_EXCL);
xfs_trans_ijoin(tp, tdp, XFS_ILOCK_EXCL);

Expand Down
2 changes: 1 addition & 1 deletion trunk/fs/xfs/xfs_vnodeops.h
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ int xfs_lookup(struct xfs_inode *dp, bhv_vname_t *dentry,
int xfs_create(struct xfs_inode *dp, bhv_vname_t *dentry, mode_t mode,
xfs_dev_t rdev, struct xfs_inode **ipp, struct cred *credp);
int xfs_remove(struct xfs_inode *dp, bhv_vname_t *dentry);
int xfs_link(struct xfs_inode *tdp, bhv_vnode_t *src_vp,
int xfs_link(struct xfs_inode *tdp, struct xfs_inode *sip,
bhv_vname_t *dentry);
int xfs_mkdir(struct xfs_inode *dp, bhv_vname_t *dentry,
mode_t mode, struct xfs_inode **ipp, struct cred *credp);
Expand Down

0 comments on commit f107125

Please sign in to comment.