mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Joe Korty <joe.korty@ccur.com>
To: akpm@osdl.org
Cc: linux-kernel@vger.kernel.org, robustmutexes@lists.osdl.org
Subject: [PATCH] add EOWNERDEAD and ENOTRECOVERABLE
Date: Tue, 12 Apr 2005 11:23:18 -0400	[thread overview]
Message-ID: <20050412152318.GA2714@tsunami.ccur.com> (raw)


Hi Andrew,
 This patch adds EOWNERDEAD and ENOTRECOVERABLE to all
architectures.  Though there is nothing in the kernel
that uses them yet, I know of two patches in development,
one by Intel and the other by Bull, that adds robust mutex
support to pthread_mutex*.

Robust mutexes, by de-facto industry convention, return
EOWNERDEAD when the owner of a mutex dies, and returns
ENOTRECOVERABLE if the new owner decides that it is not
able to recover from the dead state, and so wants to mark
the mutex unrecoverable.

There is interest in robust mutexes in Linux, as they are
a well established tool when writing high availability
applications on non-Linux platforms.

Even though there are kernel components to the robust mutex
patches, the exact kernel ABI can be easily changed or
even completely replaced, without affecting applications,
while the patches are still in development.  To achieve
this immunity, the applications need only to access robust
services through the pthreads library and they must link
only with the dynamic version of the library.  This works
only because pthread robust mutexes are a de-facto
standard, enforced by standard usage by long established
applications, which any implementation of robust mutexes
is required to match if it is to be accepted.

However, one piece of the ABI that does leak through is
the value of EOWNERDEAD and ENOTRECOVERABLE.  If these
values could be fixed then application writers would feel
more comfortable using these patches while they are still
in development.  In addition, if the patches are never
accepted into the standard kernel, but live forever in
various high availability vendor kernels as a specialty
item, then it gives their users an unchanging ABI that they
can live with -- even when they migrate their application
binaries to a competing high availability Linux kernel.

I know that it is rare for an unused patch to be accepted;
however it has happened at least once before when there
was need -- eg, the security hooks patch, so this patch
request may not be completely out of line.

Regards,
Joe

i386 compile tested.

Signed-off-by: Joe Korty <joe.korty@ccur.com>


 2.6.12-rc2-jak/include/asm-alpha/errno.h   |    3 +++
 2.6.12-rc2-jak/include/asm-generic/errno.h |    3 +++
 2.6.12-rc2-jak/include/asm-mips/errno.h    |    3 +++
 2.6.12-rc2-jak/include/asm-parisc/errno.h  |    3 +++
 2.6.12-rc2-jak/include/asm-sparc/errno.h   |    3 +++
 2.6.12-rc2-jak/include/asm-sparc64/errno.h |    3 +++
 6 files changed, 18 insertions(+)

diff -puNa include/asm-generic/errno.h~owner.notrecoverable.errnos include/asm-generic/errno.h
--- 2.6.12-rc2/include/asm-generic/errno.h~owner.notrecoverable.errnos	2005-04-12 09:54:38.000000000 -0400
+++ 2.6.12-rc2-jak/include/asm-generic/errno.h	2005-04-12 11:16:50.681480153 -0400
@@ -102,4 +102,7 @@
 #define	EKEYREVOKED	128	/* Key has been revoked */
 #define	EKEYREJECTED	129	/* Key was rejected by service */
 
+#define	EOWNERDEAD	130	/* Owner died */
+#define	ENOTRECOVERABLE	131	/* State not recoverable */
+
 #endif
diff -puNa include/asm-alpha/errno.h~owner.notrecoverable.errnos include/asm-alpha/errno.h
--- 2.6.12-rc2/include/asm-alpha/errno.h~owner.notrecoverable.errnos	2005-04-12 10:04:36.000000000 -0400
+++ 2.6.12-rc2-jak/include/asm-alpha/errno.h	2005-04-12 11:16:17.548396780 -0400
@@ -116,4 +116,7 @@
 #define	EKEYREVOKED	134	/* Key has been revoked */
 #define	EKEYREJECTED	135	/* Key was rejected by service */
 
+#define	EOWNERDEAD	136	/* Owner died */
+#define	ENOTRECOVERABLE	137	/* State not recoverable */
+
 #endif
diff -puNa include/asm-mips/errno.h~owner.notrecoverable.errnos include/asm-mips/errno.h
--- 2.6.12-rc2/include/asm-mips/errno.h~owner.notrecoverable.errnos	2005-04-12 10:04:36.000000000 -0400
+++ 2.6.12-rc2-jak/include/asm-mips/errno.h	2005-04-12 11:16:29.262658422 -0400
@@ -115,6 +115,9 @@
 #define	EKEYREVOKED	163	/* Key has been revoked */
 #define	EKEYREJECTED	164	/* Key was rejected by service */
 
+#define	EOWNERDEAD	165	/* Owner died */
+#define	ENOTRECOVERABLE	166	/* State not recoverable */
+
 #define EDQUOT		1133	/* Quota exceeded */
 
 #ifdef __KERNEL__
diff -puNa include/asm-parisc/errno.h~owner.notrecoverable.errnos include/asm-parisc/errno.h
--- 2.6.12-rc2/include/asm-parisc/errno.h~owner.notrecoverable.errnos	2005-04-12 10:04:36.000000000 -0400
+++ 2.6.12-rc2-jak/include/asm-parisc/errno.h	2005-04-12 11:14:19.353941346 -0400
@@ -115,5 +115,8 @@
 #define ENOTSUP		252	/* Function not implemented (POSIX.4 / HPUX) */
 #define ECANCELLED	253	/* aio request was canceled before complete (POSIX.4 / HPUX) */
 
+#define EOWNERDEAD	254	/* Owner died */
+#define ENOTRECOVERABLE	255	/* State not recoverable */
+
 
 #endif
diff -puNa include/asm-sparc/errno.h~owner.notrecoverable.errnos include/asm-sparc/errno.h
--- 2.6.12-rc2/include/asm-sparc/errno.h~owner.notrecoverable.errnos	2005-04-12 10:04:36.000000000 -0400
+++ 2.6.12-rc2-jak/include/asm-sparc/errno.h	2005-04-12 11:15:55.987596555 -0400
@@ -107,4 +107,7 @@
 #define	EKEYREVOKED	130	/* Key has been revoked */
 #define	EKEYREJECTED	131	/* Key was rejected by service */
 
+#define	EOWNERDEAD	132	/* Owner died */
+#define	ENOTRECOVERABLE	133	/* State not recoverable */
+
 #endif
diff -puNa include/asm-sparc64/errno.h~owner.notrecoverable.errnos include/asm-sparc64/errno.h
--- 2.6.12-rc2/include/asm-sparc64/errno.h~owner.notrecoverable.errnos	2005-04-12 10:04:36.000000000 -0400
+++ 2.6.12-rc2-jak/include/asm-sparc64/errno.h	2005-04-12 11:16:01.526774474 -0400
@@ -107,4 +107,7 @@
 #define	EKEYREVOKED	130	/* Key has been revoked */
 #define	EKEYREJECTED	131	/* Key was rejected by service */
 
+#define	EOWNERDEAD	132	/* Owner died */
+#define	ENOTRECOVERABLE	133	/* State not recoverable */
+
 #endif /* !(_SPARC64_ERRNO_H) */

_


             reply	other threads:[~2005-04-12 15:31 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-04-12 15:23 Joe Korty [this message]
2005-04-13  2:01 ` Andrew Morton
2005-04-13 14:14   ` [PATCH] add EOWNERDEAD and ENOTRECOVERABLE version 2 Joe Korty

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20050412152318.GA2714@tsunami.ccur.com \
    --to=joe.korty@ccur.com \
    --cc=akpm@osdl.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=robustmutexes@lists.osdl.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®