Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 181776
b: refs/heads/master
c: 6bded0f
h: refs/heads/master
v: v3
  • Loading branch information
Dave Chinner authored and Alex Elder committed Jan 15, 2010
1 parent e18bf77 commit 0f58395
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 20 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: 3a85cd96d3ab3c6dcf88b81fc6eaddb84e565a43
refs/heads/master: 6bded0f383fd7971b76ad6c194dda7d5b814b871
38 changes: 22 additions & 16 deletions trunk/fs/xfs/xfs_dfrag.c
Original file line number Diff line number Diff line change
Expand Up @@ -45,15 +45,21 @@
#include "xfs_vnodeops.h"
#include "xfs_trace.h"


static int xfs_swap_extents(
xfs_inode_t *ip, /* target inode */
xfs_inode_t *tip, /* tmp inode */
xfs_swapext_t *sxp);

/*
* Syssgi interface for swapext
* ioctl interface for swapext
*/
int
xfs_swapext(
xfs_swapext_t *sxp)
{
xfs_inode_t *ip, *tip;
struct file *file, *target_file;
struct file *file, *tmp_file;
int error = 0;

/* Pull information for the target fd */
Expand All @@ -68,46 +74,46 @@ xfs_swapext(
goto out_put_file;
}

target_file = fget((int)sxp->sx_fdtmp);
if (!target_file) {
tmp_file = fget((int)sxp->sx_fdtmp);
if (!tmp_file) {
error = XFS_ERROR(EINVAL);
goto out_put_file;
}

if (!(target_file->f_mode & FMODE_WRITE) ||
(target_file->f_flags & O_APPEND)) {
if (!(tmp_file->f_mode & FMODE_WRITE) ||
(tmp_file->f_flags & O_APPEND)) {
error = XFS_ERROR(EBADF);
goto out_put_target_file;
goto out_put_tmp_file;
}

if (IS_SWAPFILE(file->f_path.dentry->d_inode) ||
IS_SWAPFILE(target_file->f_path.dentry->d_inode)) {
IS_SWAPFILE(tmp_file->f_path.dentry->d_inode)) {
error = XFS_ERROR(EINVAL);
goto out_put_target_file;
goto out_put_tmp_file;
}

ip = XFS_I(file->f_path.dentry->d_inode);
tip = XFS_I(target_file->f_path.dentry->d_inode);
tip = XFS_I(tmp_file->f_path.dentry->d_inode);

if (ip->i_mount != tip->i_mount) {
error = XFS_ERROR(EINVAL);
goto out_put_target_file;
goto out_put_tmp_file;
}

if (ip->i_ino == tip->i_ino) {
error = XFS_ERROR(EINVAL);
goto out_put_target_file;
goto out_put_tmp_file;
}

if (XFS_FORCED_SHUTDOWN(ip->i_mount)) {
error = XFS_ERROR(EIO);
goto out_put_target_file;
goto out_put_tmp_file;
}

error = xfs_swap_extents(ip, tip, sxp);

out_put_target_file:
fput(target_file);
out_put_tmp_file:
fput(tmp_file);
out_put_file:
fput(file);
out:
Expand Down Expand Up @@ -186,7 +192,7 @@ xfs_swap_extents_check_format(
return 0;
}

int
static int
xfs_swap_extents(
xfs_inode_t *ip, /* target inode */
xfs_inode_t *tip, /* tmp inode */
Expand Down
3 changes: 0 additions & 3 deletions trunk/fs/xfs/xfs_dfrag.h
Original file line number Diff line number Diff line change
Expand Up @@ -48,9 +48,6 @@ typedef struct xfs_swapext
*/
int xfs_swapext(struct xfs_swapext *sx);

int xfs_swap_extents(struct xfs_inode *ip, struct xfs_inode *tip,
struct xfs_swapext *sxp);

#endif /* __KERNEL__ */

#endif /* __XFS_DFRAG_H__ */

0 comments on commit 0f58395

Please sign in to comment.