Received: by 2002:a25:f815:0:0:0:0:0 with SMTP id u21csp1149699ybd; Wed, 26 Jun 2019 12:06:23 -0700 (PDT) X-Google-Smtp-Source: APXvYqyKez59YYTdn/3lyfwikHDOm8uZxjyVAmU8xl7A5PhVAU51XXFf7Yu5McOxKOk4oJwEkIYI X-Received: by 2002:a17:90a:d595:: with SMTP id v21mr775874pju.34.1561575983173; Wed, 26 Jun 2019 12:06:23 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1561575983; cv=none; d=google.com; s=arc-20160816; b=jJSdpk0zKF0m/xcYAepEVyquKIofXRQFRUi9CsmUcebf9vBjOH4H/xY2yL1zCxOiUp JXH5z/raDzWgZiebfGvxhZISsGDWYFoUPTDN+HJq/duLALx/gDl3CLRP+1rAR5uADBst /gGiozsy5F8lYya8przc2OC/YwigdSRPq2wbRstdYzsJ7R3qg7G7VEmnfHywCTBXOOzv 4BRUre9KcZSf5NsNuMIMC0IsNK7KJUesXmEKnAX0zuDpf1WBvQj1Q0+6oTjMcA1d/Oaq GRVMZRvWUZcPFXdBgXeT2yU3HRDnegh2Ufe7tN5aROpraqYlJRrwxcicWvHsYHIqV/3E Xmdw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:date:subject:cc:to:from; bh=65XWimKnMwh6EHTbbSAo3LuQ9Bwg9CmtCn2v746OVkI=; b=1AcvdRjmB34NsqR8SVH3We08TXTffn2Y1sZ0xqOy3CkPyNGKalyuwaZGroYv3QvkDo 87F21yyZrNiUP6HcX1aVPaYX3NPjToBacsam7LH8cCq1Ai5X1Top2rMDeFthnFt1T5hR LD8Eq7q4hJ8iU/Xbm7MKAeXPOjKn7ZJhsEBai6a2w7X+mEsBH/ncoMGndSHXq0aJ7TBI 8QbePavvPkDYG/YzcgcsvIeSmBjApxErnEJy6To+xggFJsodaHgIyjD3aLIFaUFeSv3a +hWE4DN1DzmiwkxlxxutOTTioxkRAgYnMB+3t+lWfGPsNcT4mcbk0fbGWB2dNczFhyPv 3Njg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-nfs-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-nfs-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id g23si18154799pfi.153.2019.06.26.12.06.09; Wed, 26 Jun 2019 12:06:23 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-nfs-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-nfs-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-nfs-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726476AbfFZTEd (ORCPT + 99 others); Wed, 26 Jun 2019 15:04:33 -0400 Received: from mx1.redhat.com ([209.132.183.28]:57524 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726445AbfFZTEd (ORCPT ); Wed, 26 Jun 2019 15:04:33 -0400 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 68815307D859 for ; Wed, 26 Jun 2019 19:04:33 +0000 (UTC) Received: from coeurl.usersys.redhat.com (ovpn-122-53.rdu2.redhat.com [10.10.122.53]) by smtp.corp.redhat.com (Postfix) with ESMTP id 3EEED19936; Wed, 26 Jun 2019 19:04:33 +0000 (UTC) Received: by coeurl.usersys.redhat.com (Postfix, from userid 1000) id E1D632091D; Wed, 26 Jun 2019 15:04:32 -0400 (EDT) From: Scott Mayhew To: steved@redhat.com Cc: linux-nfs@vger.kernel.org Subject: [nfs-utils PATCH 1/2] sqlite.c: restore zero-padding to the recovery table names Date: Wed, 26 Jun 2019 15:04:31 -0400 Message-Id: <20190626190432.16257-1-smayhew@redhat.com> X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.48]); Wed, 26 Jun 2019 19:04:33 +0000 (UTC) Sender: linux-nfs-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Commit a8133e1fd1742 removed the zero-padding from the table names and broke grace period handling. Running nfsdcld with verbose logging shows messages similar to the following: nfsdcld: cld_gracestart: sending client records to the kernel nfsdcld: sqlite_iterate_recovery: select statement prepare failed: no such table: rec-1b nfsdcld: Doing downcall with status -121 nfsdcld: cld_inotify_cb: called for EV_READ nfsdcld: cld_pipe_open: opening upcall pipe /var/lib/nfs/rpc_pipefs/nfsd/cld nfsdcld: cld_gracedone: grace done. nfsdcld: Unable to drop table for recovery epoch: no such table: rec-1b nfsdcld: Doing downcall with status -121 Fixes: a8133e1fd1742 ("sqlite.c: Use PRIx64 macro to print 64-bit integers") Signed-off-by: Scott Mayhew --- utils/nfsdcld/sqlite.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/utils/nfsdcld/sqlite.c b/utils/nfsdcld/sqlite.c index cd658ef..5d78d24 100644 --- a/utils/nfsdcld/sqlite.c +++ b/utils/nfsdcld/sqlite.c @@ -536,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-%" PRIx64 "\";", + ret = snprintf(buf, sizeof(buf), "DELETE FROM \"rec-%016" PRIx64 "\";", current_epoch); if (ret < 0) { xlog(L_ERROR, "sprintf failed!"); @@ -551,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-%" PRIx64 "\" " + ret = snprintf(buf, sizeof(buf), "INSERT INTO \"rec-%016" PRIx64 "\" " "SELECT id FROM attached.clients;", current_epoch); if (ret < 0) { @@ -704,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-%" PRIx64 "\" " + ret = snprintf(buf, sizeof(buf), "INSERT OR REPLACE INTO \"rec-%016" PRIx64 "\" " "VALUES (?);", current_epoch); if (ret < 0) { xlog(L_ERROR, "sprintf failed!"); @@ -749,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-%" PRIx64 "\" " + ret = snprintf(buf, sizeof(buf), "DELETE FROM \"rec-%016" PRIx64 "\" " "WHERE id==?;", current_epoch); if (ret < 0) { xlog(L_ERROR, "sprintf failed!"); @@ -799,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-%" PRIx64 "\" " + ret = snprintf(buf, sizeof(buf), "SELECT count(*) FROM \"rec-%016" PRIx64 "\" " "WHERE id==?;", recovery_epoch); if (ret < 0) { xlog(L_ERROR, "sprintf failed!"); @@ -892,7 +892,7 @@ sqlite_grace_start(void) goto rollback; } - ret = snprintf(buf, sizeof(buf), "CREATE TABLE \"rec-%" PRIx64 "\" " + ret = snprintf(buf, sizeof(buf), "CREATE TABLE \"rec-%016" PRIx64 "\" " "(id BLOB PRIMARY KEY);", tcur); if (ret < 0) { @@ -916,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-%" PRIx64 "\";", + ret = snprintf(buf, sizeof(buf), "DELETE FROM \"rec-%016" PRIx64 "\";", tcur); if (ret < 0) { xlog(L_ERROR, "sprintf failed!"); @@ -977,7 +977,7 @@ sqlite_grace_done(void) goto rollback; } - ret = snprintf(buf, sizeof(buf), "DROP TABLE \"rec-%" PRIx64 "\";", + ret = snprintf(buf, sizeof(buf), "DROP TABLE \"rec-%016" PRIx64 "\";", recovery_epoch); if (ret < 0) { xlog(L_ERROR, "sprintf failed!"); @@ -1028,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-%" PRIx64 "\";", + ret = snprintf(buf, sizeof(buf), "SELECT * FROM \"rec-%016" PRIx64 "\";", recovery_epoch); if (ret < 0) { xlog(L_ERROR, "sprintf failed!"); -- 2.17.2