From owner-freebsd-hackers@freebsd.org Tue Nov 22 17:32:31 2016 Return-Path: Delivered-To: freebsd-hackers@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 134D9C50E87 for ; Tue, 22 Nov 2016 17:32:31 +0000 (UTC) (envelope-from asomers@gmail.com) Received: from mail-qk0-x242.google.com (mail-qk0-x242.google.com [IPv6:2607:f8b0:400d:c09::242]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id C2F191ACC; Tue, 22 Nov 2016 17:32:30 +0000 (UTC) (envelope-from asomers@gmail.com) Received: by mail-qk0-x242.google.com with SMTP id x190so5516281qkb.0; Tue, 22 Nov 2016 09:32:30 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:sender:in-reply-to:references:from:date:message-id :subject:to:cc; bh=mb4Nt+PqnJC88k7z7WXetXrBF/3E9iDzEYmV1tDU5NU=; b=Kh2m2QjTbbBZVnYVd8lCy+/HdgmTBRlN8ijW25DabqpWVcDJq6s+5rY5Va18OV/JBH qAzC1X9zaoNxLa0BLkmx3PO1XuciA1paRjD5V6i7XHGdgVyjvhFP0abuuLaU4PNG97mF /MBwx/UlTxqUEGC4GxyU0+5i90WByF9Fh9RdEVABCmZbhedcLaBVBKfA/NoaHIsvcUSS cSPMNet5XD4dk9qlfEfDzJbybX/+s7U/I+vA12pUzyIIjE+K9GR11AjD/ra8Fug5IoLj gDOFMtRPe5W2avR4a5mW/jMfI9yxjDTKzn9OWwMkA4KSz88F4RylBwBnn/UJlmOnTJti 1gAw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:sender:in-reply-to:references:from :date:message-id:subject:to:cc; bh=mb4Nt+PqnJC88k7z7WXetXrBF/3E9iDzEYmV1tDU5NU=; b=Qvk1C1g/XcybAsTQUq5Oi7sbg3ltKcLDcN647Xni1aCK0BLoMQrm7qgeQI5RPllNpq YqYEXUAO4j3TVN/Hdd13LPh4791pGshqsxA1C7qGiFL2eueGHfiXDEgOTGJ8nPdveuaZ KT6WdE0E2DJWwJmeodKJ3ZCpflHfhgWPzFfjFl7364GOLYCLm4tRKPT0BOKG/+dbkx+p BbCAXrIyMtai7BrhIgBIGUtsO90ryL87/5nBEf6hG/ALmE28N5j5F5Nm2vnDxbN29lPG hC//DMaO4sfbCGdEKpp9wzqKm/bnYRTOOecpqVY2XqDyVVNWCJVLN/n2wPxvnuJQTFOz xNAA== X-Gm-Message-State: AKaTC00E8tv4ewKQvQt9EArI1bSFKYxPxSVoz+6oLT+vjYyJLtTys6aHVEOFjJs9GftZrJrdntHkY8aCidOEqA== X-Received: by 10.55.104.68 with SMTP id d65mr22818188qkc.119.1479835949882; Tue, 22 Nov 2016 09:32:29 -0800 (PST) MIME-Version: 1.0 Sender: asomers@gmail.com Received: by 10.12.166.129 with HTTP; Tue, 22 Nov 2016 09:32:29 -0800 (PST) In-Reply-To: References: <56E6C5EA.2080005@digiware.nl> <5030334.fMbvND8flt@ralph.baldwin.cx> From: Alan Somers Date: Tue, 22 Nov 2016 10:32:29 -0700 X-Google-Sender-Auth: rDHU9HEEqGAxfcsjM3dFaTqcCjw Message-ID: Subject: Re: Mising ENODATA To: Willem Jan Withagen Cc: John Baldwin , "freebsd-hackers@freebsd.org" Content-Type: text/plain; charset=UTF-8 X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 22 Nov 2016 17:32:31 -0000 On Tue, Nov 22, 2016 at 4:44 AM, Willem Jan Withagen wrote: > On 23-5-2016 22:47, John Baldwin wrote: >> On Monday, March 14, 2016 03:08:42 PM Willem Jan Withagen wrote: >>> Hi, >>> >>> According the standard is ENODATA an extention of errno.h defines... >>> >>> http://pubs.opengroup.org/onlinepubs/9699919799/ >>> >>> The Open Group Base Specifications Issue 7 >>> IEEE Std 1003.1, 2013 Edition >>> >>> [ENODATA] >>> [OB XSR] [Option Start] >>> No message available. No message is available on the STREAM head >>> read queue. [Option End] >>> >>> [XSR] [Option Start] XSI STREAMS [Option End] >>> The functionality described is optional. The functionality described is >>> also an extension to the ISO C standard. >>> >>> Where applicable, functions are marked with the XSR margin legend in the >>> SYNOPSIS section. Where additional semantics apply to a function, the >>> material is identified by use of the XSR margin legend. >>> >>> [OB] [Option Start] Obsolescent [Option End] >>> The functionality described may be removed in a future version of this >>> volume of POSIX.1-2008. Strictly Conforming POSIX Applications and >>> Strictly Conforming XSI Applications shall not use obsolescent features. >>> >>> Where applicable, the material is identified by use of the OB margin legend. >>> ---- >>> >>> The OB part makes a bit strange to ask for definition, but would it be >>> possible to add ENODATA to our headers? >>> The alternative question is: why would we not? >> >> Well, it's defined for STREAMS and FreeBSD (and BSDs in general) don't >> implement STREAMS. OTOH, if Ceph has (ab)used it for their own internal >> errors then we could perhaps add our own ENODATA. Do you want to make a >> patch to do so? >> > > Hi John, > > Rather old Email, but now it comes to the point that it is going to be > used. Uptil now I just patched my onw errno.h, but once I'm going to > build a port for Cep, it no long works. I do not think anubody will > allow a port to modify /usr/include/errno.h 8-) > > For my/Ceph needs the path is rather simple. > *** /usr/include/errno.h Mon Oct 3 02:05:43 2016 > --- /usr/srcs/head/src/sys/sys/errno.h Sun Aug 21 18:25:05 2016 > *************** > *** 164,170 **** > #define ECANCELED 85 /* Operation canceled */ > #define EILSEQ 86 /* Illegal byte sequence */ > #define ENOATTR 87 /* Attribute not found */ > - #define ENODATA 87 /* Attribute not found */ > > #define EDOOFUS 88 /* Programming error */ > #endif /* _POSIX_SOURCE */ > --- 164,169 ---- > > I'll submit this as "bug" report and will see what comes of it. > > --WjW I too ran into this problem a few years ago. My solution was to patch Ceph instead. Would these patches still work? --- src/include/compat.h.orig 2013-11-01 16:14:01.000000000 +0000 +++ src/include/compat.h 2013-11-04 18:21:43.000000000 +0000 @@ -13,7 +13,15 @@ #define CEPH_COMPAT_H #if defined(__FreeBSD__) -#define ENODATA 61 +/* + * FreeBSD does not have ENODATA. We must define it here. However, it MAY be + * defined by boost. We can't simply include boost/cerrno.hpp here, because + * that header is not includable by C code. So we must duplicate boost's + * definition :( + */ +#ifndef ENODATA +#define ENODATA 9919 +#endif #endif /* !__FreeBSD__ */ #if defined(__FreeBSD__) || defined(__APPLE__) --- src/pybind/rados.py.orig 2013-11-04 17:36:06.000000000 +0000 +++ src/pybind/rados.py 2013-11-04 17:37:02.000000000 +0000 @@ -89,10 +89,14 @@ errno.EIO : IOError, errno.ENOSPC : NoSpace, errno.EEXIST : ObjectExists, - errno.ENODATA : NoData, errno.EINTR : InterruptedOrTimeoutError, errno.ETIMEDOUT : TimedOut } + # errno.ENODATA is not implemented on all platforms + try: + errors[errno.ENODATA] = NoData + except AttributeError: + pass ret = abs(ret) if ret in errors: return errors[ret](msg) --- src/pybind/cephfs.py.orig 2013-10-10 16:14:07.000000000 +0000 +++ src/pybind/cephfs.py 2013-10-10 16:15:22.000000000 +0000 @@ -49,8 +49,12 @@ errno.EIO : IOError, errno.ENOSPC : NoSpace, errno.EEXIST : ObjectExists, - errno.ENODATA : NoData } + # errno.ENODATA is not implemented on all platforms + try: + errors[errno.ENODATA] = NoData + except AttributeError: + pass ret = abs(ret) if ret in errors: return errors[ret](msg)