[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