[PATCH 2/2] use lpath_to_handle when restoring symlinks

Alex Elder aelder at sgi.com
Fri Oct 23 13:13:53 CDT 2009


Bill Kendall wrote:
> Update xfsrestore to use the new lpath_to_handle function
> when dealing with symlinks.

Looks good.		-Alex

> Signed-off-by: Bill Kendall <wkendall at sgi.com>

Reviewed-by: Alex Elder <aelder at sgi.com>

> diff --git a/restore/content.c b/restore/content.c
> index eb6e78c..99549a8 100644
> --- a/restore/content.c
> +++ b/restore/content.c
> @@ -797,7 +797,6 @@ static void partial_reg(ix_t d_index, xfs_ino_t ino, off64_t fsize,
>                           off64_t offset, off64_t sz);
>   static bool_t partial_check (xfs_ino_t ino, off64_t fsize);
>   static bool_t partial_check2 (partial_rest_t *isptr, off64_t fsize);
> -static int do_fssetdm_by_handle( char *path, fsdmidata_t *fdmp);
>   static int quotafilecheck(char *type, char *dstdir, char *quotafile);
> 
>   /* definition of locally defined global variables ****************************/
> @@ -7895,14 +7894,28 @@ restore_symlink( drive_t *drivep,
>   		}
> 
>   		if ( persp->a.restoredmpr) {
> -		fsdmidata_t fssetdm;
> -
> -		/*	Restore DMAPI fields. */
> +			fsdmidata_t fssetdm;
> +			void *hanp;
> +			size_t hlen=0;
> 
> -		fssetdm.fsd_dmevmask = bstatp->bs_dmevmask;
> -		fssetdm.fsd_padding = 0;
> -		fssetdm.fsd_dmstate = bstatp->bs_dmstate;
> -		rval = do_fssetdm_by_handle(path, &fssetdm);
> +			/*	Restore DMAPI fields. */
> +			fssetdm.fsd_dmevmask = bstatp->bs_dmevmask;
> +			fssetdm.fsd_padding = 0;
> +			fssetdm.fsd_dmstate = bstatp->bs_dmstate;
> +
> +			if (lpath_to_handle(persp->a.dstdir, path, &hanp, &hlen)) {
> +				mlog( MLOG_NORMAL | MLOG_WARNING, _(
> +					"lpath_to_handle of %s failed: %s\n"),
> +					path, strerror( errno ));
> +			} else {
> +				if (fssetdm_by_handle(hanp, hlen, &fssetdm)) {
> +					mlog( MLOG_NORMAL | MLOG_WARNING,
> +						_("fssetdm_by_handle of %s "
> +						"failed: %s\n"),
> +						path, strerror( errno ));
> +				}
> +				free_handle(hanp, hlen);
> +			}
>   		}
>   	}
> 
> @@ -9525,32 +9538,6 @@ display_needed_objects( purp_t purp,
>   }
> 
>   static int
> -do_fssetdm_by_handle(
> -	char		*path,
> -	fsdmidata_t	*fdmp)
> -{
> -	void		*hanp;
> -	size_t		hlen=0;
> -	int		rc;
> -
> -	if (path_to_handle(path, &hanp, &hlen)) {
> -		mlog( MLOG_NORMAL | MLOG_WARNING, _(
> -			"path_to_handle of %s failed:%s\n"),
> -			path, strerror( errno ));
> -		return -1;
> -	}
> -
> -	rc = fssetdm_by_handle(hanp, hlen, fdmp);
> -	free_handle(hanp, hlen);
> -	if (rc) {
> -		mlog( MLOG_NORMAL | MLOG_WARNING, _(
> -			"fssetdm_by_handle of %s failed %s\n"),
> -			path, strerror( errno ));
> -	}
> -	return rc;
> -}
> -
> -static int
>   quotafilecheck(char *type, char *dstdir, char *quotafile)
>   {
>   	struct stat s;
> 
> _______________________________________________
> xfs mailing list
> xfs at oss.sgi.com
> http://oss.sgi.com/mailman/listinfo/xfs




More information about the xfs mailing list