Blame SOURCES/autofs-5.1.2-factor-out-set-thread-mount-request-log-id.patch

23b4c9
autofs-5.1.2 - factor out set_thread_mount_request_log_id()
23b4c9
23b4c9
From: Ian Kent <raven@themaw.net>
23b4c9
23b4c9
Factor out setting the thread mount request log id.
23b4c9
23b4c9
Signed-off-by: Ian Kent <raven@themaw.net>
23b4c9
---
23b4c9
 CHANGELOG           |    1 +
23b4c9
 daemon/automount.c  |   24 +++++++++++++++++++++++-
23b4c9
 daemon/direct.c     |   17 +----------------
23b4c9
 daemon/indirect.c   |   17 +----------------
23b4c9
 include/automount.h |    3 ++-
23b4c9
 5 files changed, 28 insertions(+), 34 deletions(-)
23b4c9
23b4c9
--- autofs-5.0.7.orig/CHANGELOG
23b4c9
+++ autofs-5.0.7/CHANGELOG
23b4c9
@@ -238,6 +238,7 @@
23b4c9
 - add the mount requestor's pid to pending_args.
23b4c9
 - create thread-local ID for mount attempts.
23b4c9
 - log functions to prefix messages with attempt_id if available.
23b4c9
+- factor out set_thread_mount_request_log_id().
23b4c9
 
23b4c9
 25/07/2012 autofs-5.0.7
23b4c9
 =======================
23b4c9
--- autofs-5.0.7.orig/daemon/automount.c
23b4c9
+++ autofs-5.0.7/daemon/automount.c
23b4c9
@@ -100,7 +100,7 @@ static int umount_all(struct autofs_poin
23b4c9
 extern struct master *master_list;
23b4c9
 
23b4c9
 /* simple string hash based on public domain sdbm library */
23b4c9
-unsigned long sdbm_hash(const char *str, unsigned long seed)
23b4c9
+static unsigned long sdbm_hash(const char *str, unsigned long seed)
23b4c9
 {
23b4c9
 	unsigned long hash = seed;
23b4c9
 	char c;
23b4c9
@@ -110,6 +110,28 @@ unsigned long sdbm_hash(const char *str,
23b4c9
 	return hash;
23b4c9
 }
23b4c9
 
23b4c9
+void set_thread_mount_request_log_id(struct pending_args *mt)
23b4c9
+{
23b4c9
+	char attempt_id_comp[20];
23b4c9
+	unsigned long *attempt_id;
23b4c9
+	int status;
23b4c9
+
23b4c9
+	attempt_id = pthread_getspecific(key_thread_attempt_id);
23b4c9
+	if (attempt_id == NULL) {
23b4c9
+		attempt_id = (unsigned long *) calloc(1, sizeof(unsigned long));
23b4c9
+		if (attempt_id  == NULL)
23b4c9
+			fatal(ENOMEM);
23b4c9
+		snprintf(attempt_id_comp, 20, "%ld", mt->wait_queue_token);
23b4c9
+		*attempt_id = sdbm_hash(attempt_id_comp, 0);
23b4c9
+		snprintf(attempt_id_comp, 20, "%u", mt->pid);
23b4c9
+		*attempt_id = sdbm_hash(attempt_id_comp, *attempt_id);
23b4c9
+		*attempt_id = sdbm_hash(mt->name, *attempt_id);
23b4c9
+		status = pthread_setspecific(key_thread_attempt_id, attempt_id);
23b4c9
+		if (status != 0)
23b4c9
+			fatal(status);
23b4c9
+	}
23b4c9
+}
23b4c9
+
23b4c9
 static int do_mkdir(const char *parent, const char *path, mode_t mode)
23b4c9
 {
23b4c9
 	int status;
23b4c9
--- autofs-5.0.7.orig/daemon/direct.c
23b4c9
+++ autofs-5.0.7/daemon/direct.c
23b4c9
@@ -1210,8 +1210,6 @@ static void *do_mount_direct(void *arg)
23b4c9
 	struct autofs_point *ap;
23b4c9
 	struct stat st;
23b4c9
 	int status, state;
23b4c9
-	char attempt_id_comp[20];
23b4c9
-	unsigned long *attempt_id;
23b4c9
 
23b4c9
 	args = (struct pending_args *) arg;
23b4c9
 
23b4c9
@@ -1221,20 +1219,7 @@ static void *do_mount_direct(void *arg)
23b4c9
 
23b4c9
 	ap = mt.ap;
23b4c9
 
23b4c9
-	attempt_id = pthread_getspecific(key_thread_attempt_id);
23b4c9
-	if (attempt_id == NULL) {
23b4c9
-		attempt_id = (unsigned long *) calloc(1, sizeof(unsigned long));
23b4c9
-		if (attempt_id == NULL)
23b4c9
-			fatal(ENOMEM);
23b4c9
-		snprintf(attempt_id_comp, 20, "%ld", mt.wait_queue_token);
23b4c9
-		*attempt_id = sdbm_hash(attempt_id_comp, 0);
23b4c9
-		snprintf(attempt_id_comp, 20, "%u", mt.pid);
23b4c9
-		*attempt_id = sdbm_hash(attempt_id_comp, *attempt_id);
23b4c9
-		*attempt_id = sdbm_hash(mt.name, *attempt_id);
23b4c9
-		status = pthread_setspecific(key_thread_attempt_id, attempt_id);
23b4c9
-		if (status != 0)
23b4c9
-			fatal(status);
23b4c9
-	}
23b4c9
+	set_thread_mount_request_log_id(&mt;;
23b4c9
 
23b4c9
 	args->signaled = 1;
23b4c9
 	status = pthread_cond_signal(&args->cond);
23b4c9
--- autofs-5.0.7.orig/daemon/indirect.c
23b4c9
+++ autofs-5.0.7/daemon/indirect.c
23b4c9
@@ -726,8 +726,6 @@ static void *do_mount_indirect(void *arg
23b4c9
 	char buf[PATH_MAX + 1];
23b4c9
 	struct stat st;
23b4c9
 	int len, status, state;
23b4c9
-	char attempt_id_comp[20];
23b4c9
-	unsigned long *attempt_id;
23b4c9
 
23b4c9
 	args = (struct pending_args *) arg;
23b4c9
 
23b4c9
@@ -737,20 +735,7 @@ static void *do_mount_indirect(void *arg
23b4c9
 
23b4c9
 	ap = mt.ap;
23b4c9
 
23b4c9
-	attempt_id = pthread_getspecific(key_thread_attempt_id);
23b4c9
-	if (attempt_id == NULL) {
23b4c9
-		attempt_id = (unsigned long *) calloc(1, sizeof(unsigned long));
23b4c9
-		if (attempt_id  == NULL)
23b4c9
-			fatal(ENOMEM);
23b4c9
-		snprintf(attempt_id_comp, 20, "%ld", mt.wait_queue_token);
23b4c9
-		*attempt_id = sdbm_hash(attempt_id_comp, 0);
23b4c9
-		snprintf(attempt_id_comp, 20, "%u", mt.pid);
23b4c9
-		*attempt_id = sdbm_hash(attempt_id_comp, *attempt_id);
23b4c9
-		*attempt_id = sdbm_hash(mt.name, *attempt_id);
23b4c9
-		status = pthread_setspecific(key_thread_attempt_id, attempt_id);
23b4c9
-		if (status != 0)
23b4c9
-			fatal(status);
23b4c9
-	}
23b4c9
+	set_thread_mount_request_log_id(&mt;;
23b4c9
 
23b4c9
 	args->signaled = 1;
23b4c9
 	status = pthread_cond_signal(&args->cond);
23b4c9
--- autofs-5.0.7.orig/include/automount.h
23b4c9
+++ autofs-5.0.7/include/automount.h
23b4c9
@@ -243,7 +243,8 @@ const char **copy_argv(int argc, const c
23b4c9
 int compare_argv(int argc1, const char **argv1, int argc2, const char **argv2);
23b4c9
 int free_argv(int argc, const char **argv);
23b4c9
 
23b4c9
-unsigned long sdbm_hash(const char *str, unsigned long seed);
23b4c9
+struct pending_args;
23b4c9
+void set_thread_mount_request_log_id(struct pending_args *mt);
23b4c9
 
23b4c9
 void dump_core(void);
23b4c9
 int aquire_lock(void);