X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Futils%2Fliblustreapi_hsm.c;h=c46435a5bfc887159402796af97a6d871772d734;hb=refs%2Fchanges%2F55%2F9455%2F3;hp=2ca1756605969dbc558ba5edd72302db8321b398;hpb=744b4f9253e1740eb7454a9a33fa6d4b06920dcb;p=fs%2Flustre-release.git diff --git a/lustre/utils/liblustreapi_hsm.c b/lustre/utils/liblustreapi_hsm.c index 2ca1756..c46435a 100644 --- a/lustre/utils/liblustreapi_hsm.c +++ b/lustre/utils/liblustreapi_hsm.c @@ -922,10 +922,12 @@ static int ct_open_by_fid(const struct hsm_copytool_private *ct, const struct lu_fid *fid, int open_flags) { char fid_name[FID_NOBRACE_LEN + 1]; + int fd; snprintf(fid_name, sizeof(fid_name), DFID_NOBRACE, PFID(fid)); - return openat(ct->open_by_fid_fd, fid_name, open_flags); + fd = openat(ct->open_by_fid_fd, fid_name, open_flags); + return fd < 0 ? -errno : fd; } static int ct_stat_by_fid(const struct hsm_copytool_private *ct, @@ -933,10 +935,12 @@ static int ct_stat_by_fid(const struct hsm_copytool_private *ct, struct stat *buf) { char fid_name[FID_NOBRACE_LEN + 1]; + int rc; snprintf(fid_name, sizeof(fid_name), DFID_NOBRACE, PFID(fid)); - return fstatat(ct->open_by_fid_fd, fid_name, buf, 0); + rc = fstatat(ct->open_by_fid_fd, fid_name, buf, 0); + return rc ? -errno : 0; } /** Create the destination volatile file for a restore operation. @@ -1207,17 +1211,20 @@ int llapi_hsm_action_get_dfid(const struct hsm_copyaction_private *hcp, int llapi_hsm_action_get_fd(const struct hsm_copyaction_private *hcp) { const struct hsm_action_item *hai = &hcp->copy.hc_hai; + int fd; if (hcp->magic != CP_PRIV_MAGIC) return -EINVAL; - if (hai->hai_action == HSMA_ARCHIVE) + if (hai->hai_action == HSMA_ARCHIVE) { return ct_open_by_fid(hcp->ct_priv, &hai->hai_dfid, O_RDONLY | O_NOATIME | O_NOFOLLOW | O_NONBLOCK); - else if (hai->hai_action == HSMA_RESTORE) - return dup(hcp->data_fd); - else + } else if (hai->hai_action == HSMA_RESTORE) { + fd = dup(hcp->data_fd); + return fd < 0 ? -errno : fd; + } else { return -EINVAL; + } } /** @@ -1251,9 +1258,9 @@ int llapi_hsm_import(const char *dst, int archive, const struct stat *st, stripe_pattern | LOV_PATTERN_F_RELEASED, pool_name); if (fd < 0) { - llapi_error(LLAPI_MSG_ERROR, -errno, + llapi_error(LLAPI_MSG_ERROR, fd, "cannot create '%s' for import", dst); - return -errno; + return fd; } /* Get the new fid in Lustre. Caller needs to use this fid @@ -1276,8 +1283,8 @@ int llapi_hsm_import(const char *dst, int archive, const struct stat *st, hui.hui_mtime_ns = st->st_mtim.tv_nsec; rc = ioctl(fd, LL_IOC_HSM_IMPORT, &hui); if (rc != 0) { - llapi_error(LLAPI_MSG_ERROR, rc, "cannot import '%s'", dst); rc = -errno; + llapi_error(LLAPI_MSG_ERROR, rc, "cannot import '%s'", dst); goto out_unlink; }