diff --git a/nfs-utils-2.3.4-PRIx64-integers.patch b/nfs-utils-2.3.4-PRIx64-integers.patch new file mode 100644 index 0000000..ad9c8db --- /dev/null +++ b/nfs-utils-2.3.4-PRIx64-integers.patch @@ -0,0 +1,118 @@ +commit a8133e1fd174267536cd459e19cfe0a1cbbe037c +Author: Steve Dickson +Date: Wed May 22 13:55:37 2019 -0400 + + sqlite.c: Use PRIx64 macro to print 64-bit integers + + On 32 bit machines, using "%016lx" format throws out + an format error due to the -Werror=format=2 + compiler option. On 64 bit machines using that + format is correct. + + So use the PRIx64 macro to have the correct + format defined on the different machines. + + Signed-off-by: Steve Dickson + +diff --git a/utils/nfsdcld/sqlite.c b/utils/nfsdcld/sqlite.c +index faa62f9..cd658ef 100644 +--- a/utils/nfsdcld/sqlite.c ++++ b/utils/nfsdcld/sqlite.c +@@ -59,6 +59,7 @@ + #include + #include + #include ++#include + + #include "xlog.h" + #include "sqlite.h" +@@ -535,7 +536,7 @@ sqlite_copy_cltrack_records(int *num_rec) + xlog(L_ERROR, "Unable to begin transaction: %s", err); + goto rollback; + } +- ret = snprintf(buf, sizeof(buf), "DELETE FROM \"rec-%016lx\";", ++ ret = snprintf(buf, sizeof(buf), "DELETE FROM \"rec-%" PRIx64 "\";", + current_epoch); + if (ret < 0) { + xlog(L_ERROR, "sprintf failed!"); +@@ -550,7 +551,7 @@ sqlite_copy_cltrack_records(int *num_rec) + xlog(L_ERROR, "Unable to clear records from current epoch: %s", err); + goto rollback; + } +- ret = snprintf(buf, sizeof(buf), "INSERT INTO \"rec-%016lx\" " ++ ret = snprintf(buf, sizeof(buf), "INSERT INTO \"rec-%" PRIx64 "\" " + "SELECT id FROM attached.clients;", + current_epoch); + if (ret < 0) { +@@ -703,7 +704,7 @@ sqlite_insert_client(const unsigned char *clname, const size_t namelen) + int ret; + sqlite3_stmt *stmt = NULL; + +- ret = snprintf(buf, sizeof(buf), "INSERT OR REPLACE INTO \"rec-%016lx\" " ++ ret = snprintf(buf, sizeof(buf), "INSERT OR REPLACE INTO \"rec-%" PRIx64 "\" " + "VALUES (?);", current_epoch); + if (ret < 0) { + xlog(L_ERROR, "sprintf failed!"); +@@ -748,7 +749,7 @@ sqlite_remove_client(const unsigned char *clname, const size_t namelen) + int ret; + sqlite3_stmt *stmt = NULL; + +- ret = snprintf(buf, sizeof(buf), "DELETE FROM \"rec-%016lx\" " ++ ret = snprintf(buf, sizeof(buf), "DELETE FROM \"rec-%" PRIx64 "\" " + "WHERE id==?;", current_epoch); + if (ret < 0) { + xlog(L_ERROR, "sprintf failed!"); +@@ -798,7 +799,7 @@ sqlite_check_client(const unsigned char *clname, const size_t namelen) + int ret; + sqlite3_stmt *stmt = NULL; + +- ret = snprintf(buf, sizeof(buf), "SELECT count(*) FROM \"rec-%016lx\" " ++ ret = snprintf(buf, sizeof(buf), "SELECT count(*) FROM \"rec-%" PRIx64 "\" " + "WHERE id==?;", recovery_epoch); + if (ret < 0) { + xlog(L_ERROR, "sprintf failed!"); +@@ -873,7 +874,7 @@ sqlite_grace_start(void) + tcur++; + + ret = snprintf(buf, sizeof(buf), "UPDATE grace " +- "SET current = %ld, recovery = %ld;", ++ "SET current = %" PRId64 ", recovery = %" PRId64 ";", + (int64_t)tcur, (int64_t)trec); + if (ret < 0) { + xlog(L_ERROR, "sprintf failed!"); +@@ -891,7 +892,7 @@ sqlite_grace_start(void) + goto rollback; + } + +- ret = snprintf(buf, sizeof(buf), "CREATE TABLE \"rec-%016lx\" " ++ ret = snprintf(buf, sizeof(buf), "CREATE TABLE \"rec-%" PRIx64 "\" " + "(id BLOB PRIMARY KEY);", + tcur); + if (ret < 0) { +@@ -915,7 +916,7 @@ sqlite_grace_start(void) + * values in the grace table, just clear out the records for + * the current reboot epoch. + */ +- ret = snprintf(buf, sizeof(buf), "DELETE FROM \"rec-%016lx\";", ++ ret = snprintf(buf, sizeof(buf), "DELETE FROM \"rec-%" PRIx64 "\";", + tcur); + if (ret < 0) { + xlog(L_ERROR, "sprintf failed!"); +@@ -976,7 +977,7 @@ sqlite_grace_done(void) + goto rollback; + } + +- ret = snprintf(buf, sizeof(buf), "DROP TABLE \"rec-%016lx\";", ++ ret = snprintf(buf, sizeof(buf), "DROP TABLE \"rec-%" PRIx64 "\";", + recovery_epoch); + if (ret < 0) { + xlog(L_ERROR, "sprintf failed!"); +@@ -1027,7 +1028,7 @@ sqlite_iterate_recovery(int (*cb)(struct cld_client *clnt), struct cld_client *c + return -EINVAL; + } + +- ret = snprintf(buf, sizeof(buf), "SELECT * FROM \"rec-%016lx\";", ++ ret = snprintf(buf, sizeof(buf), "SELECT * FROM \"rec-%" PRIx64 "\";", + recovery_epoch); + if (ret < 0) { + xlog(L_ERROR, "sprintf failed!"); diff --git a/nfs-utils.spec b/nfs-utils.spec index 5a064fc..4c1b254 100644 --- a/nfs-utils.spec +++ b/nfs-utils.spec @@ -17,6 +17,7 @@ Source5: nfsconvert.sh Source6: nfs-convert.service Patch001: nfs-utils-2.3.4-mount-fallback.patch +Patch002: nfs-utils-2.3.4-PRIx64-integers.patch Patch100: nfs-utils-1.2.1-statdpath-man.patch Patch101: nfs-utils-1.2.1-exp-subtree-warn-off.patch @@ -360,8 +361,9 @@ fi %{_pkgdir}/*/var-lib-nfs-rpc_pipefs.mount %changelog -* Mon May 20 2019 Steve Dickson 2.3.4-1 +* Tue May 21 2019 Steve Dickson 2.3.4-1 - mount: Report correct error in the fall_back cases (bz 1709961) +- sqlite.c: Use PRIx64 macro to print 64-bit integers * Fri May 10 2019 Steve Dickson 2.3.4-0 - Updated to the latest upstream release: 2.3.4 (bz 1708690)