pseudo: update to 1.8.2

Update to the newly minted 1.8.2, dropping several patches we'd
backported since the last release.

(From OE-Core rev: 6437f14c9177fd7ec7a9b6bca873362b0c94abfb)

Signed-off-by: Joshua Lock <joshua.g.lock@intel.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Joshua Lock 2017-02-07 15:53:00 +00:00 committed by Richard Purdie
parent d9a3ebef27
commit 5ca7184552
9 changed files with 13 additions and 392 deletions

View File

@ -1,48 +0,0 @@
From befc6dbd6469d428c9e0830dbe51bdf7ac39d9ae Mon Sep 17 00:00:00 2001
From: Seebs <seebs@seebs.net>
Date: Thu, 22 Sep 2016 14:35:04 -0500
Subject: [PATCH] Don't send SIGUSR1 to init.
If the parent exits due to child process being slow, getppid() will return
1, and we'll send SIGUSR1 to init, which can break things like dumbinit
which aren't adequately protected against non-root processes sending them
signals.
Signed-off-by: Seebs <seebs@seebs.net>
Upstream-Status: Backport (commit befc6dbd6469d428c9e0830dbe51bdf7ac39d9ae)
[YOCTO #10324]
This resolves an issue where a docker container running builds would die
due to it's 'mini init' being signaled by pseudo.
Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
---
pseudo_server.c | 11 ++++++++---
diff --git a/pseudo_server.c b/pseudo_server.c
index 65102dd..8731d20 100644
--- a/pseudo_server.c
+++ b/pseudo_server.c
@@ -358,9 +358,14 @@ pseudo_server_start(int daemonize) {
signal(SIGTERM, quit_now);
/* tell parent process to stop waiting */
if (daemonize) {
- pseudo_diag("Setup complete, sending SIGUSR1 to pid %d.\n",
- getppid());
- kill(getppid(), SIGUSR1);
+ pid_t ppid = getppid();
+ if (ppid == 1) {
+ pseudo_diag("Setup complete, but parent is init, not sending SIGUSR1.\n");
+ } else {
+ pseudo_diag("Setup complete, sending SIGUSR1 to pid %d.\n",
+ ppid);
+ kill(ppid, SIGUSR1);
+ }
}
pseudo_server_loop();
return 0;
--
2.5.5

View File

@ -1,54 +0,0 @@
From eead8a505245a292c43f070c0e836cdfeb7bd7bd Mon Sep 17 00:00:00 2001
From: Seebs <seebs@seebs.net>
Date: Wed, 28 Sep 2016 17:05:17 -0500
Subject: [PATCH 1/2] Quiet diagnostics during startup for pseudo -d
When the client spawns a pseudo server, it starts out sending diagnostics
to stderr. This can be spammy in some cases with races during startup;
everything resolves, but we get scary-looking diagnostics. So shove
those into a log file.
Signed-off-by: Seebs <seebs@seebs.net>
Upstream-Status: Backport
Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
---
ChangeLog.txt | 5 +++++
pseudo_server.c | 4 +++-
2 files changed, 8 insertions(+), 1 deletion(-)
diff --git a/ChangeLog.txt b/ChangeLog.txt
index d6359ca..4cc24de 100644
--- a/ChangeLog.txt
+++ b/ChangeLog.txt
@@ -1,3 +1,8 @@
+2016-09-28:
+ * (seebs) Send errors to log when daemonizing, but do that a lot
+ sooner to prevent startup messages which can show up spuriously
+ with multiple clients.
+
2016-07-28:
* (seebs) Fix performance issue on deletion with xattr changes.
diff --git a/pseudo_server.c b/pseudo_server.c
index 8731d20..7c2db2f 100644
--- a/pseudo_server.c
+++ b/pseudo_server.c
@@ -162,6 +162,9 @@ pseudo_server_start(int daemonize) {
* SIGUSR1, or until too much time has passed. */
if (daemonize) {
int child;
+
+ /* make startup messages go away when invoked-as-daemon */
+ pseudo_debug_logfile(PSEUDO_LOGFILE, 2);
child = fork();
if (child == -1) {
pseudo_diag("Couldn't fork child process: %s\n",
@@ -231,7 +234,6 @@ pseudo_server_start(int daemonize) {
setsid();
fclose(stdin);
fclose(stdout);
- pseudo_debug_logfile(PSEUDO_LOGFILE, 2);
/* and then just execute the server code normally. */
/* Any logging will presumably go to logfile, but
* exit status will make it back to the parent for

View File

@ -1,53 +0,0 @@
From 7a0632cad851826d804db0540d9a59773e6bf29c Mon Sep 17 00:00:00 2001
From: Seebs <seebs@seebs.net>
Date: Wed, 28 Sep 2016 22:12:29 -0500
Subject: [PATCH 2/2] Use correct file descriptor
So it turns out that pseudo_logfile() was returning 0 or -1, and
pseudo_debug_logfile() was expecting it to be the correct file descriptor
to use. And it's basically a mystery that any of that ever worked.
Signed-off-by: Seebs <seebs@seebs.net>
Upstream-Status: Backport
Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
---
ChangeLog.txt | 3 +++
pseudo_util.c | 3 ++-
2 files changed, 5 insertions(+), 1 deletion(-)
diff --git a/ChangeLog.txt b/ChangeLog.txt
index 4cc24de..49a6c36 100644
--- a/ChangeLog.txt
+++ b/ChangeLog.txt
@@ -2,6 +2,9 @@
* (seebs) Send errors to log when daemonizing, but do that a lot
sooner to prevent startup messages which can show up spuriously
with multiple clients.
+ * (seebs) return file descriptor from pseudo_logfile, so we set
+ pseudo_util_debug_fd to the right value instead of to stdin.
+ Nice bug.
2016-07-28:
* (seebs) Fix performance issue on deletion with xattr changes.
diff --git a/pseudo_util.c b/pseudo_util.c
index 0c156cf..a60c74b 100644
--- a/pseudo_util.c
+++ b/pseudo_util.c
@@ -1569,7 +1569,7 @@ pseudo_logfile(char *filename, char *defname, int prefer_fd) {
if (fd == -1)
return -1;
else
- return 0;
+ return fd;
}
int
@@ -1579,6 +1579,7 @@ pseudo_debug_logfile(char *defname, int prefer_fd) {
fd = pseudo_logfile(filename, defname, prefer_fd);
if (fd > -1) {
+ pseudo_diag("debug_logfile: fd %d\n", fd);
pseudo_util_debug_fd = fd;
return 0;
}

View File

@ -1,64 +0,0 @@
From d9ab3a0acc94151048498b1ea4d69e7707df1526 Mon Sep 17 00:00:00 2001
From: Seebs <seebs@seebs.net>
Date: Fri, 30 Sep 2016 10:56:35 -0500
Subject: [PATCH 3/3] Fix renameat (parallel to previous fix to rename)
There was a bug in rename(), which was duplicated when renameat() was
implemented, and which got fixed two years ago for rename(), but no
one ever uses renameat() so it didn't get fixed there. Thanks
to Anton Gerasimov <anton@advancedtelematic.com> for the bug report
and patch.
Signed-off-by: Seebs <seebs@seebs.net>
Upstream-Status: Backport
Signed-off-by: Joshua Lock <joshua.g.lock@intel.com>
---
ChangeLog.txt | 4 ++++
ports/unix/guts/renameat.c | 7 ++++++-
2 files changed, 10 insertions(+), 1 deletion(-)
diff --git a/ChangeLog.txt b/ChangeLog.txt
index 65b9759..ca04cc0 100644
--- a/ChangeLog.txt
+++ b/ChangeLog.txt
@@ -1,3 +1,7 @@
+2016-09-30:
+ * (seebs) Fix rename at, matching fix from ee00f63d for rename. Bug
+ and fix provided by Anton Gerasimov <anton@advancedtelematic.com>.
+
2016-09-28:
* (seebs) Send errors to log when daemonizing, but do that a lot
sooner to prevent startup messages which can show up spuriously
diff --git a/ports/unix/guts/renameat.c b/ports/unix/guts/renameat.c
index ade0509..d5e36fa 100644
--- a/ports/unix/guts/renameat.c
+++ b/ports/unix/guts/renameat.c
@@ -11,6 +11,7 @@
int oldrc, newrc;
int save_errno;
int old_db_entry = 0;
+ int may_unlinked = 0;
pseudo_debug(PDBGF_FILE, "renameat: %d,%s->%d,%s\n",
olddirfd, oldpath ? oldpath : "<nil>",
@@ -44,10 +45,14 @@
/* as with unlink, we have to mark that the file may get deleted */
msg = pseudo_client_op(OP_MAY_UNLINK, 0, -1, newdirfd, newpath, newrc ? NULL : &newbuf);
if (msg && msg->result == RESULT_SUCCEED)
+ may_unlinked = 1;
+ msg = pseudo_client_op(OP_STAT, 0, -1, olddirfd, oldpath, oldrc ? NULL : &oldbuf);
+ if (msg && msg->result == RESULT_SUCCEED)
old_db_entry = 1;
+
rc = real_renameat(olddirfd, oldpath, newdirfd, newpath);
save_errno = errno;
- if (old_db_entry) {
+ if (may_unlinked) {
if (rc == -1) {
/* since we failed, that wasn't really unlinked -- put
* it back.
--
2.7.4

View File

@ -1,117 +0,0 @@
From 0d9071f3090bbd7880558f3b488b236ac19b44fc Mon Sep 17 00:00:00 2001
From: seebs <seebs@seebs.net>
Date: Thu, 28 Jul 2016 14:02:12 -0500
Subject: [PATCH 1/2] Fix xattr performance
When deleting files, we *do* know the inode and attribute, most of the
time, so we pass those in whenever possible. The full purge of unmatched
xattrs should not happen when the correct dev/ino are believed to be known.
Signed-off-by: Seebs <seebs@seebs.net>
[YOCTO #9929]
Upstream-Status: Backport (0d9071f3090bbd7880558f3b488b236ac19b44fc)
Signed-off-by: Joshua Lock <joshua.g.lock@intel.com>
---
ChangeLog.txt | 3 +++
pseudo.c | 11 ++++++++---
pseudo_db.c | 15 +++++++++------
pseudo_db.h | 2 +-
4 files changed, 21 insertions(+), 10 deletions(-)
diff --git a/ChangeLog.txt b/ChangeLog.txt
index 131f163..d6359ca 100644
--- a/ChangeLog.txt
+++ b/ChangeLog.txt
@@ -1,3 +1,6 @@
+2016-07-28:
+ * (seebs) Fix performance issue on deletion with xattr changes.
+
2016-07-08:
* (RP) release 1.8.1
* (joshuagl) Fix log table creation issue
diff --git a/pseudo.c b/pseudo.c
index 52f649f..db1c400 100644
--- a/pseudo.c
+++ b/pseudo.c
@@ -600,7 +600,12 @@ pseudo_op(pseudo_msg_t *msg, const char *program, const char *tag, char **respon
if (by_path.deleting != 0) {
pseudo_debug(PDBGF_FILE, "inode mismatch for '%s' -- old one was marked for deletion, deleting.\n",
msg->path);
- pdb_did_unlink_file(msg->path, by_path.deleting);
+ /* in this case, we don't trust the
+ * existing entries, so we will do the
+ * more expensive sweep for stray
+ * xattrs.
+ */
+ pdb_did_unlink_file(msg->path, NULL, by_path.deleting);
} else {
pseudo_diag("inode mismatch: '%s' ino %llu in db, %llu in request.\n",
msg->path,
@@ -698,7 +703,7 @@ pseudo_op(pseudo_msg_t *msg, const char *program, const char *tag, char **respon
if (by_ino.deleting != 0) {
pseudo_debug(PDBGF_FILE, "inode mismatch for '%s' -- old one was marked for deletion, deleting.\n",
msg->path);
- pdb_did_unlink_file(path_by_ino, by_ino.deleting);
+ pdb_did_unlink_file(path_by_ino, &by_ino, by_ino.deleting);
} else {
pseudo_diag("path mismatch [%d link%s]: ino %llu db '%s' req '%s'.\n",
msg->nlink,
@@ -930,7 +935,7 @@ pseudo_op(pseudo_msg_t *msg, const char *program, const char *tag, char **respon
}
break;
case OP_DID_UNLINK:
- pdb_did_unlink_file(msg->path, msg->client);
+ pdb_did_unlink_file(msg->path, msg, msg->client);
break;
case OP_CANCEL_UNLINK:
pdb_cancel_unlink_file(msg);
diff --git a/pseudo_db.c b/pseudo_db.c
index 289bb29..e7dd193 100644
--- a/pseudo_db.c
+++ b/pseudo_db.c
@@ -1848,7 +1848,7 @@ pdb_did_unlink_files(int deleting) {
/* confirm deletion of a specific file by a given client */
int
-pdb_did_unlink_file(char *path, int deleting) {
+pdb_did_unlink_file(char *path, pseudo_msg_t *msg, int deleting) {
static sqlite3_stmt *delete_exact;
int rc, exact;
char *sql_delete_exact = "DELETE FROM files WHERE path = ? AND deleting = ?;";
@@ -1878,11 +1878,14 @@ pdb_did_unlink_file(char *path, int deleting) {
exact = sqlite3_changes(file_db);
pseudo_debug(PDBGF_DB, "(exact %d)\n", exact);
sqlite3_reset(delete_exact);
- sqlite3_clear_bindings(delete_exact);
- /* we have to clean everything because we don't know for sure the
- * device/inode...
- */
- pdb_clear_unused_xattrs();
+ if (msg) {
+ pdb_clear_xattrs(msg);
+ } else {
+ /* we have to clean everything because we don't know for sure the
+ * device/inode...
+ */
+ pdb_clear_unused_xattrs();
+ }
return rc != SQLITE_DONE;
}
diff --git a/pseudo_db.h b/pseudo_db.h
index a54f3c1..1b2599c 100644
--- a/pseudo_db.h
+++ b/pseudo_db.h
@@ -39,7 +39,7 @@ typedef struct {
extern int pdb_maybe_backup(void);
extern int pdb_cancel_unlink_file(pseudo_msg_t *msg);
-extern int pdb_did_unlink_file(char *path, int deleting);
+extern int pdb_did_unlink_file(char *path, pseudo_msg_t *msg, int deleting);
extern int pdb_did_unlink_files(int deleting);
extern int pdb_link_file(pseudo_msg_t *msg);
extern int pdb_may_unlink_file(pseudo_msg_t *msg, int deleting);
--
2.7.4

View File

@ -1,37 +0,0 @@
From 45eca34c754d416a38bee90fb2d3c110a0b6cc5f Mon Sep 17 00:00:00 2001
From: Seebs <seebs@seebs.net>
Date: Thu, 3 Nov 2016 11:36:12 -0500
Subject: [PATCH] More-correctly fix xattrs
Fix provided by Patrick Ohly <patrick.ohly@intel.com>. This resolves
the actual cause of the path length mismatches, and explains why
I couldn't quite explain why the previous one had only sometimes
worked, also why it showed up on directories but not plain files.
Signed-off-by: Seebs <seebs@seebs.net>
Fixes [YOCTO #10623]
Upstream-Status: Backport [commit 45eca34c754d416a38bee90fb2d3c110a0b6cc5f]
Signed-off-by: Patrick Ohly <patrick.ohly@intel.com>
---
pseudo_client.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pseudo_client.c b/pseudo_client.c
index 6a08df3..b1a00fa 100644
--- a/pseudo_client.c
+++ b/pseudo_client.c
@@ -1676,7 +1676,7 @@ pseudo_client_op(pseudo_op_t op, int access, int fd, int dirfd, const char *path
* empty path for that.
*/
if (path_extra_1) {
- size_t full_len = path_extra_1len + 1 + pathlen;
+ size_t full_len = path_extra_1len + 1 + pathlen - strip_slash;
size_t partial_len = pathlen - 1 - strip_slash;
if (path_extra_2) {
full_len += path_extra_2len + 1;
--
2.1.4

View File

@ -1,17 +0,0 @@
require pseudo.inc
SRC_URI = "http://downloads.yoctoproject.org/releases/pseudo/${BPN}-${PV}.tar.bz2 \
file://0001-configure-Prune-PIE-flags.patch \
file://fallback-passwd \
file://fallback-group \
file://moreretries.patch \
file://Fix-xattr-performance.patch \
file://0001-Don-t-send-SIGUSR1-to-init.patch \
file://0001-Quiet-diagnostics-during-startup-for-pseudo-d.patch \
file://0002-Use-correct-file-descriptor.patch \
file://0003-Fix-renameat-parallel-to-previous-fix-to-rename.patch \
file://More-correctly-fix-xattrs.patch \
"
SRC_URI[md5sum] = "ee38e4fb62ff88ad067b1a5a3825bac7"
SRC_URI[sha256sum] = "dac4ad2d21228053151121320f629d41dd5c0c87695ac4e7aea286c414192ab5"

View File

@ -0,0 +1,11 @@
require pseudo.inc
SRC_URI = "http://downloads.yoctoproject.org/releases/pseudo/${BPN}-${PV}.tar.bz2 \
file://0001-configure-Prune-PIE-flags.patch \
file://fallback-passwd \
file://fallback-group \
file://moreretries.patch \
"
SRC_URI[md5sum] = "7d41e72188fbea1f696c399c1a435675"
SRC_URI[sha256sum] = "ceb456bd47770a37ca20784a91d715c5a7601e07e26ab11b0c77e9203ed3d196"

View File

@ -1,7 +1,7 @@
require pseudo.inc
SRCREV = "45eca34c754d416a38bee90fb2d3c110a0b6cc5f"
PV = "1.8.1+git${SRCPV}"
SRCREV = "02168305b0a19f981ffe857f36eb256ba8810b77"
PV = "1.8.2+git${SRCPV}"
DEFAULT_PREFERENCE = "-1"