gluster-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Gluster-devel] Weirdness in glfs_mkdir()?


From: Anand Avati
Subject: Re: [Gluster-devel] Weirdness in glfs_mkdir()?
Date: Mon, 28 Oct 2013 21:51:03 -0700

On Mon, Oct 28, 2013 at 6:28 PM, Jay Vyas <address@hidden> 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 <address@hidden> 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 <address@hidden> 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
address@hidden
https://lists.nongnu.org/mailman/listinfo/gluster-devel




--
Jay Vyas
http://jayunit100.blogspot.com


reply via email to

[Prev in Thread] Current Thread [Next in Thread]