diff options
| author | Shehjar Tikoo <shehjart@zresearch.com> | 2009-04-07 05:36:57 -0700 | 
|---|---|---|
| committer | Anand V. Avati <avati@amp.gluster.com> | 2009-04-08 15:05:55 +0530 | 
| commit | 957ae7ba2ba7b8276dab963b7af7dbf16eeb5888 (patch) | |
| tree | ebfeb22b18aa80429d1f73ad05318373a279c40d | |
| parent | d4ab91b1f254a21cac538fdffa7ff37db10ae83c (diff) | |
libglusterfsclient: Perform explicit create
We must create the file based on the O_CREATE in the flags
instead of depending on the return status of the lookup.
This works because we've already handled O_EXCL earlier and
also handled a missing file(ENOENT)
in case this was actually an open and not create.
Adapted from Raghu's original patch.
Signed-off-by: Anand V. Avati <avati@amp.gluster.com>
| -rwxr-xr-x | libglusterfsclient/src/libglusterfsclient.c | 7 | 
1 files changed, 3 insertions, 4 deletions
diff --git a/libglusterfsclient/src/libglusterfsclient.c b/libglusterfsclient/src/libglusterfsclient.c index 99129fc250a..9602492a625 100755 --- a/libglusterfsclient/src/libglusterfsclient.c +++ b/libglusterfsclient/src/libglusterfsclient.c @@ -1574,7 +1574,9 @@ glusterfs_open (glusterfs_handle_t handle,          fd = fd_create (loc.inode, 0);          fd->flags = flags; -        if (!op_ret) { +        if ((flags & O_CREAT) == O_CREAT) +                op_ret = libgf_client_creat (ctx, &loc, fd, flags, mode); +        else {                  if (S_ISDIR (loc.inode->st_mode)) {                          if (((flags & O_RDONLY) == O_RDONLY) &&                               ((flags & O_WRONLY) == 0) &&  @@ -1589,9 +1591,6 @@ glusterfs_open (glusterfs_handle_t handle,                          op_ret = libgf_client_open (ctx, &loc, fd,                                                      flags);                  } -        } else { -                op_ret = libgf_client_creat (ctx, &loc, fd, flags, -                                             mode);          }          if (op_ret == -1) {  | 
