[Gluster-devel] Weirdness in glfs_mkdir()?

Anand Avati avati at gluster.org
Tue Oct 29 04:51:03 UTC 2013


On Mon, Oct 28, 2013 at 6:28 PM, Jay Vyas <jayunit100 at gmail.com> wrote:

> wow.  im surprised.  this caught my eye, checked into the mode:
>
> glfs_mkdir (struct glfs *fs, const char *path, mode_t mode)
>
> So, somehow, the python API is capable of sending a "mode" which doesnt
> correspond to anything enumerated as part of the mode_t, but the C method
> still manages to write the file with a "garbage mode" ?
>
> That sounds like a bug not in python.  Not in gluster... but in C ! :)
> [if im understanding this correctyle, which i might not be]
>


Not sure whether its a bug or feature of C. C runtime is typeless. Python
ctypes uses dlopen/dlsym which do symbol lookups - doesn't care whether the
looked up symbol is a data structure or a function name - let alone do type
matching!

Avati



>
>
>
>
>
>
> On Mon, Oct 28, 2013 at 7:19 PM, Anand Avati <avati at gluster.org> wrote:
>
>> glfs_mkdir() (in glfs.h) accepts three params - @fs, @path, @mode.
>> gfapi.py uses raw ctypes to provide python APIs - and therefore the bug of
>> not accepting and passing @mode in the mkdir() method in gfapi.py is
>> translating into a junk value getting received by glfs_mkdir (and random
>> modes getting set for various dirs). You  just witnessed the woe of a
>> typeless system :)
>>
>> Avati
>>
>>
>> On Mon, Oct 28, 2013 at 1:31 PM, Justin Clift <jclift at redhat.com> wrote:
>>
>>> Hi Avati,
>>>
>>> When creating directories through glfs_mkdir() - called through
>>> Python - the directories have inconsistent mode permissions.
>>>
>>> Is this expected?
>>>
>>> Here's the super simple code running directly in a Python
>>> 2.7.5 shell, on F19.  It's a simple single brick volume,
>>> XFS underneath.  Gluster compiled from git master head over
>>> the weekend:
>>>
>>>   >>> vol.mkdir('asdf')
>>>   0
>>>   >>> vol.mkdir('asdf/111')
>>>   0
>>>   >>> vol.mkdir('asdf/112')
>>>   0
>>>   >>> vol.mkdir('asdf/113')
>>>   0
>>>   >>> vol.mkdir('asdf/114')
>>>   0
>>>   >>> vol.mkdir('asdf/115')
>>>   0
>>>   >>> vol.mkdir('asdf/116')
>>>   0
>>>   >>> vol.mkdir('asdf/117')
>>>   0
>>>
>>> Looks ok from here, but ls -la shows the strangeness of
>>> the subdirs:
>>>
>>>   $ sudo ls -la asdf/
>>>   total 0
>>>   dr-x-w----. 9 root root  76 Oct 28 20:22 .
>>>   drwxr-xr-x. 8 root root 114 Oct 28 20:22 ..
>>>   d-w--w---T. 2 root root   6 Oct 28 20:22 111
>>>   d--x--x--T. 2 root root   6 Oct 28 20:22 112
>>>   dr--rw---T. 2 root root   6 Oct 28 20:22 113
>>>   drwx--x---. 2 root root   6 Oct 28 20:22 114
>>>   dr--r----T. 2 root root   6 Oct 28 20:22 115
>>>   dr-x-w----. 2 root root   6 Oct 28 20:22 116
>>>   drwx--x---. 2 root root   6 Oct 28 20:22 117
>>>
>>> Easily worked around using chmod() after each mkdir(), but
>>> I'm not sure if this is a bug or not.
>>>
>>> ?
>>>
>>> Regards and best wishes,
>>>
>>> Justin Clift
>>>
>>> --
>>> Open Source and Standards @ Red Hat
>>>
>>> twitter.com/realjustinclift
>>>
>>>
>>
>> _______________________________________________
>> Gluster-devel mailing list
>> Gluster-devel at nongnu.org
>> https://lists.nongnu.org/mailman/listinfo/gluster-devel
>>
>>
>
>
> --
> Jay Vyas
> http://jayunit100.blogspot.com
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://supercolony.gluster.org/pipermail/gluster-devel/attachments/20131028/cfbab01e/attachment-0001.html>


More information about the Gluster-devel mailing list