clean up xfs_swapext
PATCH 2/4 clean up xfs_swapext
- stop using vnodes
- use proper multiple label goto unwinding
- give the struct file * variables saner names
Signed-off-by Christoph Hellwig <[email protected]>
fs/xfs/xfs_dfrag.c +26 -41
@@ -52,76 +52,61 @@ xfs_swapext( xfs_swapext_t __user *sxu) {xfs_swapext_t *sxp; -xfs_inode_t *ip=NULL , *tip=NULL ; -xfs_mount_t *mp; -struct file *fp =NULL , *tfp =NULL ; -bhv_vnode_t *vp, *tvp; +xfs_inode_t *ip, *tip; +struct file *file, *target_file;int error =0 ; sxp =kmem_alloc (sizeof (xfs_swapext_t),KM_MAYFAIL );if (!sxp) { error =XFS_ERROR (ENOMEM ); - goto error0; + goto out; }if (copy_from_user (sxp, sxu,sizeof (xfs_swapext_t))) { error =XFS_ERROR (EFAULT ); - goto error0; + goto out_free_sxp; }/* Pull information for the target fd */ -if (((fp =fget ((int )sxp->sx_fdtarget)) ==NULL ) || - ((vp =vn_from_inode (fp->f_path.dentry->d_inode)) ==NULL )) { + file =fget ((int )sxp->sx_fdtarget); +if (!file) { error =XFS_ERROR (EINVAL ); - goto error0; - } - - ip =xfs_vtoi (vp); -if (ip ==NULL ) { - error =XFS_ERROR (EBADF ); - goto error0; + goto out_free_sxp; } -if (((tfp =fget ((int )sxp->sx_fdtmp)) ==NULL ) || - ((tvp =vn_from_inode (tfp->f_path.dentry->d_inode)) ==NULL )) { + target_file =fget ((int )sxp->sx_fdtmp); +if (!target_file) { error =XFS_ERROR (EINVAL ); - goto error0; + goto out_put_file; } - tip =xfs_vtoi (tvp); -if (tip ==NULL ) { - error =XFS_ERROR (EBADF ); - goto error0; - } + ip =XFS_I (file->f_path.dentry->d_inode); + tip =XFS_I (target_file->f_path.dentry->d_inode);if (ip->i_mount != tip->i_mount) { - error =XFS_ERROR (EINVAL ); - goto error0; + error =XFS_ERROR (EINVAL ); + goto out_put_target_file; }if (ip->i_ino == tip->i_ino) { - error =XFS_ERROR (EINVAL ); - goto error0; + error =XFS_ERROR (EINVAL ); + goto out_put_target_file; } - mp = ip->i_mount; - -if (XFS_FORCED_SHUTDOWN (mp)) { - error =XFS_ERROR (EIO ); - goto error0; +if (XFS_FORCED_SHUTDOWN (ip->i_mount)) { + error =XFS_ERROR (EIO ); + goto out_put_target_file; } error =xfs_swap_extents (ip, tip, sxp); - error0: -if (fp !=NULL ) -fput (fp); -if (tfp !=NULL ) -fput (tfp); - -if (sxp !=NULL ) -kmem_free (sxp,sizeof (xfs_swapext_t)); - + out_put_target_file: +fput (target_file); + out_put_file: +fput (file); + out_free_sxp: +kmem_free (sxp,sizeof (xfs_swapext_t)); + out:return error; }