From: Randy Dunlap <randy.dunlap@oracle.com>
To: cluster-devel.redhat.com
Subject: [Cluster-devel] Re: mmotm 2009-01-14-20-31 uploaded (gfs2)
Date: Mon, 19 Jan 2009 09:55:22 -0800 [thread overview]
Message-ID: <4974BE8A.6000808@oracle.com> (raw)
In-Reply-To: <1232386050.9571.628.camel@quoit>
Steven Whitehouse wrote:
> Hi,
>
> On Mon, 2009-01-19 at 09:05 -0800, Randy Dunlap wrote:
>> Steven Whitehouse wrote:
>>> Hi,
>>>
>>> On Fri, 2009-01-16 at 09:35 -0800, Andrew Morton wrote:
>>>> On Fri, 16 Jan 2009 09:06:23 -0800 Randy Dunlap <randy.dunlap@oracle.com> wrote:
>>>>
>>>>>>>> which is not ideal, but I don't see any easy way to avoid the #ifdef,
>>>>>>>>
>>>>>>> Take a look in fs.h:
>>>>>>>
>>>>>>> #define generic_setlease(a, b, c) ({ -EINVAL; })
>>>>>>>
>>>>>>> If that wasn't a stupid macro, your code would have compiled and ran
>>>>>>> just as intended.
>>>>>>>
>>>>>> There doesn't seem to be an easy answer though. If I #define it to NULL,
>>>>>> that upsets other parts of the code that rely on that macro, and if I
>>>>>> turn it into a inline function which returns -EINVAL, then presumably I
>>>>>> can't take its address for my file_operations.
>>>>> No, gcc will allow &inline_func and out-of-line it if it is needed (AFAIK;
>>>>> I've seen a few cases of that).
>>>>>
>>>> yup. It measn that we'll get a separate private copy of the
>>>> generic_setlease() code in each compilation unit which takes its
>>>> address, but I don't think that would kill us.
>>>>
>>>> The prevention is of course to put the stub function in a core kernel
>>>> .c file and export it to modules.
>>>>
>>> Having looked into this in a bit more detail now, it seems that this
>>> particular function (generic_setlease) is one of a number appearing in
>>> fs.h which are replaced by macros in the case that CONFIG_FILE_LOCKING
>>> is not set.
>>>
>>> So rather than just do the one function, it seemed to make sense to me
>>> to make them all the same. So this uses inline functions as originally
>>> proposed. If you'd prefer that we don't inline them and instead have a
>>> fs/no-locks.c or something like that with stub functions in it, then I"m
>>> happy to revise the patch accordingly.
>> Acked-by/Tested-by: Randy Dunlap <randy.dunlap@oracle.com>
>>
> Ok, Thanks. I'll send a proper patch to a suitable tree. Presumably the
> VFS tree would be best for this?
That sounds correct, but no guarantees.
>>> This patch passes my compile tests, modulo a small change that I need to
>>> make in GFS2 to suppress a warning (not attached). That seems to be
>>> related to yet another set of macros which appear only with
>>> CONFIG_FILE_LOCKING not set. Maybe I should update those to be inline
>>> functions as well....
>> You mean these? Probably should update them as well.
>>
>> #else /* !CONFIG_FILE_LOCKING */
>> #define locks_mandatory_locked(a) ({ 0; })
>> #define locks_mandatory_area(a, b, c, d, e) ({ 0; })
>> #define __mandatory_lock(a) ({ 0; })
>> #define mandatory_lock(a) ({ 0; })
>> #define locks_verify_locked(a) ({ 0; })
>> #define locks_verify_truncate(a, b, c) ({ 0; })
>> #define break_lease(a, b) ({ 0; })
>> #endif /* CONFIG_FILE_LOCKING */
>>
>>
> Yes, I'll do a patch for those as well then,
Thanks.
--
~Randy
WARNING: multiple messages have this Message-ID (diff)
From: Randy Dunlap <randy.dunlap@oracle.com>
To: Steven Whitehouse <swhiteho@redhat.com>
Cc: Andrew Morton <akpm@linux-foundation.org>,
linux-kernel@vger.kernel.org, cluster-devel@redhat.com
Subject: Re: mmotm 2009-01-14-20-31 uploaded (gfs2)
Date: Mon, 19 Jan 2009 09:55:22 -0800 [thread overview]
Message-ID: <4974BE8A.6000808@oracle.com> (raw)
In-Reply-To: <1232386050.9571.628.camel@quoit>
Steven Whitehouse wrote:
> Hi,
>
> On Mon, 2009-01-19 at 09:05 -0800, Randy Dunlap wrote:
>> Steven Whitehouse wrote:
>>> Hi,
>>>
>>> On Fri, 2009-01-16 at 09:35 -0800, Andrew Morton wrote:
>>>> On Fri, 16 Jan 2009 09:06:23 -0800 Randy Dunlap <randy.dunlap@oracle.com> wrote:
>>>>
>>>>>>>> which is not ideal, but I don't see any easy way to avoid the #ifdef,
>>>>>>>>
>>>>>>> Take a look in fs.h:
>>>>>>>
>>>>>>> #define generic_setlease(a, b, c) ({ -EINVAL; })
>>>>>>>
>>>>>>> If that wasn't a stupid macro, your code would have compiled and ran
>>>>>>> just as intended.
>>>>>>>
>>>>>> There doesn't seem to be an easy answer though. If I #define it to NULL,
>>>>>> that upsets other parts of the code that rely on that macro, and if I
>>>>>> turn it into a inline function which returns -EINVAL, then presumably I
>>>>>> can't take its address for my file_operations.
>>>>> No, gcc will allow &inline_func and out-of-line it if it is needed (AFAIK;
>>>>> I've seen a few cases of that).
>>>>>
>>>> yup. It measn that we'll get a separate private copy of the
>>>> generic_setlease() code in each compilation unit which takes its
>>>> address, but I don't think that would kill us.
>>>>
>>>> The prevention is of course to put the stub function in a core kernel
>>>> .c file and export it to modules.
>>>>
>>> Having looked into this in a bit more detail now, it seems that this
>>> particular function (generic_setlease) is one of a number appearing in
>>> fs.h which are replaced by macros in the case that CONFIG_FILE_LOCKING
>>> is not set.
>>>
>>> So rather than just do the one function, it seemed to make sense to me
>>> to make them all the same. So this uses inline functions as originally
>>> proposed. If you'd prefer that we don't inline them and instead have a
>>> fs/no-locks.c or something like that with stub functions in it, then I"m
>>> happy to revise the patch accordingly.
>> Acked-by/Tested-by: Randy Dunlap <randy.dunlap@oracle.com>
>>
> Ok, Thanks. I'll send a proper patch to a suitable tree. Presumably the
> VFS tree would be best for this?
That sounds correct, but no guarantees.
>>> This patch passes my compile tests, modulo a small change that I need to
>>> make in GFS2 to suppress a warning (not attached). That seems to be
>>> related to yet another set of macros which appear only with
>>> CONFIG_FILE_LOCKING not set. Maybe I should update those to be inline
>>> functions as well....
>> You mean these? Probably should update them as well.
>>
>> #else /* !CONFIG_FILE_LOCKING */
>> #define locks_mandatory_locked(a) ({ 0; })
>> #define locks_mandatory_area(a, b, c, d, e) ({ 0; })
>> #define __mandatory_lock(a) ({ 0; })
>> #define mandatory_lock(a) ({ 0; })
>> #define locks_verify_locked(a) ({ 0; })
>> #define locks_verify_truncate(a, b, c) ({ 0; })
>> #define break_lease(a, b) ({ 0; })
>> #endif /* CONFIG_FILE_LOCKING */
>>
>>
> Yes, I'll do a patch for those as well then,
Thanks.
--
~Randy
next prev parent reply other threads:[~2009-01-19 17:55 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-01-15 4:32 mmotm 2009-01-14-20-31 uploaded akpm
2009-01-15 19:13 ` [Cluster-devel] Re: mmotm 2009-01-14-20-31 uploaded (gfs2) Randy Dunlap
2009-01-15 19:13 ` Randy Dunlap
2009-01-16 10:20 ` [Cluster-devel] " Steven Whitehouse
2009-01-16 10:20 ` Steven Whitehouse
2009-01-16 16:43 ` [Cluster-devel] " Andrew Morton
2009-01-16 16:43 ` Andrew Morton
2009-01-16 17:02 ` [Cluster-devel] " Steven Whitehouse
2009-01-16 17:02 ` Steven Whitehouse
2009-01-16 17:06 ` [Cluster-devel] " Randy Dunlap
2009-01-16 17:06 ` Randy Dunlap
2009-01-16 17:35 ` [Cluster-devel] " Andrew Morton
2009-01-16 17:35 ` Andrew Morton
2009-01-16 17:37 ` [Cluster-devel] " Steven Whitehouse
2009-01-16 17:37 ` Steven Whitehouse
2009-01-19 15:16 ` [Cluster-devel] " Steven Whitehouse
2009-01-19 15:16 ` Steven Whitehouse
2009-01-19 17:05 ` [Cluster-devel] " Randy Dunlap
2009-01-19 17:05 ` Randy Dunlap
2009-01-19 17:27 ` [Cluster-devel] " Steven Whitehouse
2009-01-19 17:27 ` Steven Whitehouse
2009-01-19 17:55 ` Randy Dunlap [this message]
2009-01-19 17:55 ` Randy Dunlap
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=4974BE8A.6000808@oracle.com \
--to=randy.dunlap@oracle.com \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.