X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Futils%2Flhsmtool_posix.c;h=fa9f009962a1cf3f0423b8b2873037c57c7048a0;hb=ce8735993473c1055038f7422350c96b092d707d;hp=a8d7db40e90071197e661462a5f7421078047669;hpb=b964cd1c61858a090c812b31a2b3a2f9f94765fb;p=fs%2Flustre-release.git diff --git a/lustre/utils/lhsmtool_posix.c b/lustre/utils/lhsmtool_posix.c index a8d7db40..fa9f009 100644 --- a/lustre/utils/lhsmtool_posix.c +++ b/lustre/utils/lhsmtool_posix.c @@ -23,7 +23,7 @@ * (C) Copyright 2012 Commissariat a l'energie atomique et aux energies * alternatives * - * Copyright (c) 2013, 2015, Intel Corporation. + * Copyright (c) 2013, 2016, Intel Corporation. */ /* HSM copytool program for POSIX filesystem-based HSM's. * @@ -37,9 +37,12 @@ #ifndef _GNU_SOURCE #define _GNU_SOURCE #endif +#include +#include #include #include #include +#include #include #include #include @@ -47,12 +50,14 @@ #include #include #include +#include #include #include #include #include + #include -#include +#include #include /* Progress reporting period */ @@ -542,8 +547,9 @@ static int ct_copy_data(struct hsm_copyaction_private *hcp, const char *src, if (hai->hai_extent.offset > (__u64)src_st.st_size) { rc = -EINVAL; - CT_ERROR(rc, "Trying to start reading past end ("LPU64" > " - "%jd) of '%s' source file", hai->hai_extent.offset, + CT_ERROR(rc, "Trying to start reading past end (%ju > " + "%jd) of '%s' source file", + (uintmax_t)hai->hai_extent.offset, (intmax_t)src_st.st_size, src); return rc; } @@ -585,8 +591,8 @@ static int ct_copy_data(struct hsm_copyaction_private *hcp, const char *src, goto out; } - CT_TRACE("start copy of "LPU64" bytes from '%s' to '%s'", - length, src, dst); + CT_TRACE("start copy of %ju bytes from '%s' to '%s'", + (uintmax_t)length, src, dst); while (write_total < length) { ssize_t rsize; @@ -659,7 +665,7 @@ static int ct_copy_data(struct hsm_copyaction_private *hcp, const char *src, now = time(NULL); if (now >= last_report_time + opt.o_report_int) { last_report_time = now; - CT_TRACE("%%"LPU64" ", 100 * write_total / length); + CT_TRACE("%%%ju ", (uintmax_t)(100 * write_total / length)); /* only give the length of the write since the last * progress report */ he.length = offset - he.offset; @@ -700,8 +706,8 @@ out: if (buf != NULL) free(buf); - CT_TRACE("copied "LPU64" bytes in %f seconds", - length, ct_now() - start_ct_now); + CT_TRACE("copied %ju bytes in %f seconds", + (uintmax_t)length, ct_now() - start_ct_now); return rc; } @@ -835,8 +841,8 @@ static int ct_fini(struct hsm_copyaction_private **phcp, int rc; CT_TRACE("Action completed, notifying coordinator " - "cookie="LPX64", FID="DFID", hp_flags=%d err=%d", - hai->hai_cookie, PFID(&hai->hai_fid), + "cookie=%#jx, FID="DFID", hp_flags=%d err=%d", + (uintmax_t)hai->hai_cookie, PFID(&hai->hai_fid), hp_flags, -ct_rc); ct_path_lustre(lstr, sizeof(lstr), opt.o_mnt, &hai->hai_fid); @@ -854,8 +860,8 @@ static int ct_fini(struct hsm_copyaction_private **phcp, rc = llapi_hsm_action_end(phcp, &hai->hai_extent, hp_flags, abs(ct_rc)); if (rc == -ECANCELED) CT_ERROR(rc, "completed action on '%s' has been canceled: " - "cookie="LPX64", FID="DFID, lstr, hai->hai_cookie, - PFID(&hai->hai_fid)); + "cookie=%#jx, FID="DFID, lstr, + (uintmax_t)hai->hai_cookie, PFID(&hai->hai_fid)); else if (rc < 0) CT_ERROR(rc, "llapi_hsm_action_end() on '%s' failed", lstr); else @@ -1276,9 +1282,9 @@ static int ct_process_item(struct hsm_action_item *hai, const long hal_flags) int linkno = 0; sprintf(fid, DFID, PFID(&hai->hai_fid)); - CT_TRACE("'%s' action %s reclen %d, cookie="LPX64, + CT_TRACE("'%s' action %s reclen %d, cookie=%#jx", fid, hsm_copytool_action2name(hai->hai_action), - hai->hai_len, hai->hai_cookie); + hai->hai_len, (uintmax_t)hai->hai_cookie); rc = llapi_fid2path(opt.o_mnt, fid, path, sizeof(path), &recno, &linkno); if (rc < 0) @@ -1761,7 +1767,7 @@ static int ct_max_sequence(void) path[sizeof(path) - 1] = '\0'; } - printf("max_sequence: "LPX64"\n", seq); + printf("max_sequence: %#jx\n", (uintmax_t)seq); return 0; } @@ -1784,7 +1790,8 @@ static void handler(int signal) /* Daemon waits for messages from the kernel; run it in the background. */ static int ct_run(void) { - int rc; + struct sigaction cleanup_sigaction; + int rc; if (opt.o_daemonize) { rc = daemon(1, 1); @@ -1814,14 +1821,17 @@ static int ct_run(void) return rc; } - signal(SIGINT, handler); - signal(SIGTERM, handler); + memset(&cleanup_sigaction, 0, sizeof(cleanup_sigaction)); + cleanup_sigaction.sa_handler = handler; + sigemptyset(&cleanup_sigaction.sa_mask); + sigaction(SIGINT, &cleanup_sigaction, NULL); + sigaction(SIGTERM, &cleanup_sigaction, NULL); while (1) { - struct hsm_action_list *hal; - struct hsm_action_item *hai; - int msgsize; - int i = 0; + struct hsm_action_list *hal; + struct hsm_action_item *hai; + int msgsize; + int i = 0; CT_TRACE("waiting for message from kernel");