On 29/10/2013, at 4:51 AM, Anand Avati wrote: > On Mon, Oct 28, 2013 at 6:28 PM, Jay Vyas <jayunit100@xxxxxxxxx> 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! Thanks guys. Armed with this "it's a bug, nor a feature" info, it turned out to be a simple fix. Added a new mode parameter to the Gluster Libgfapi mkdir() call works, passing it straight through to the C glfs_mkdir() call. New dirs are now created as expected: :) >>> vol.mkdir("foobar", 0o750) 0 >>> vol.mkdir("foobar/111", 0o750) 0 >>> vol.mkdir("foobar/112", 0o750) 0 >>> vol.mkdir("foobar/113", 0o750) 0 $ sudo ls -la /export/brick/brick1/foobar/ total 0 drwxr-x---. 8 root root 65 Oct 29 09:42 . drwxr-xr-x. 8 root root 87 Oct 29 09:41 .. drwxr-x---. 2 root root 6 Oct 29 09:42 111 drwxr-x---. 2 root root 6 Oct 29 09:42 112 drwxr-x---. 2 root root 6 Oct 29 09:42 113 This fix is in Gerrit for review, along with newly added chmod() and chown() calls, plus some docstrings for the existing functions. http://review.gluster.org/#/c/6158 Please review if you have a few minutes. :) Note - I'm not sure about the format of the docstrings. Mostly copied the layout of the C comments, but am happy to adjust things if theres a better docstring layout. + Justin -- Open Source and Standards @ Red Hat twitter.com/realjustinclift