[PATCH] add EOWNERDEAD and ENOTRECOVERABLE

From: Joe Korty (joe.korty_at_ccur.com)
Date: 04/12/05

  • Next message: Ihalainen Nickolay: "Re: Digi Neo 8: linux-2.6.12_r2 jsm driver"
    Date:	Tue, 12 Apr 2005 11:23:18 -0400
    To: akpm@osdl.org
    
    

    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) */

    _

    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/


  • Next message: Ihalainen Nickolay: "Re: Digi Neo 8: linux-2.6.12_r2 jsm driver"

    Relevant Pages

    • Re: This is [Re:] How to improve the quality of the kernel[?].
      ... The -mm kernel already implements what your proposed PTS would do. ... If patch have no TS ID, ... Thus i can apply for example lguest patches and implement and test new ... How many open source projects use Bugzilla and how many use the Debian BTS? ...
      (Linux-Kernel)
    • Re: [PATCH] new CSA patchset for 2.6.8
      ... Please don't send patches as attachments, and please don't send more than ... one patch per email. ... judging how useful this feature is to Linux implementors and how well this ... > functional kernel. ...
      (Linux-Kernel)
    • Re: Documentation - how to apply patches for various trees
      ... >> explanation of the various kernel trees and how to apply their patches. ... +a patch to the kernel or, more specifically, what base kernel a patch for ... +and what new version the patch will change the source tree into. ...
      (Linux-Kernel)
    • Re: Documentation - how to apply patches for various trees
      ... >> explanation of the various kernel trees and how to apply their patches. ... +a patch to the kernel or, more specifically, what base kernel a patch for ... +kernel source directories it was generated against. ...
      (Linux-Kernel)
    • Re: RT patch acceptance
      ... judge the complexity of a design for that type of system. ... claim that you cannot judge the complexity of a kernel modification. ... Since the patch in question doesn't actually need that information to ... nanokernel's API up to date with additions to Linux's API that RT people ...
      (Linux-Kernel)