if (!S_ISREG(st->st_mode))
GOTO(out_release, rc = 0);
-
+
fd = lli->lli_file_data;
lsm = lli->lli_smd;
it->it_op_release(it);
OBD_FREE(it, sizeof(*it));
- /* libsysio haven't doing anything for O_TRUNC. here we
- * simply simulate it as open(...); truncate(...);
- */
- if (rc == 0 && (flags & O_TRUNC) &&
- S_ISREG(st->st_mode)) {
+ /* libsysio hasn't done anything for O_TRUNC. here we
+ * simply simulate it as open(...); truncate(...); */
+ if (rc == 0 && (flags & O_TRUNC) && S_ISREG(st->st_mode)) {
struct iattr attr;
memset(&attr, 0, sizeof(attr));
attr.ia_size = 0;
attr.ia_valid |= ATTR_SIZE | ATTR_RAW;
- rc = llu_setattr_raw(inode, &attr);
- if (rc) {
+ rc = llu_setattr_raw(inode, &attr);
+ if (rc)
CERROR("error %d truncate in open()\n", rc);
- }
}
+ liblustre_wait_event(0);
RETURN(rc);
}
RETURN(rc);
}
-int llu_file_release(struct inode *inode)
+static int llu_file_release(struct inode *inode)
{
struct ll_file_data *fd;
struct llu_sb_info *sbi = llu_i2sbi(inode);
}
/* if open count == 0 && stale_flag is set, should we
* remove the inode immediately? */
+ liblustre_wait_event(0);
return 0;
}
LASSERT(!llu_i2info(ino)->lli_it);
}
+ liblustre_wait_event(0);
RETURN(rc);
}
struct intnl_stat *stbuf)
{
struct iattr iattr;
+ int rc;
ENTRY;
liblustre_wait_event(0);
iattr.ia_valid |= ATTR_RAW | ATTR_CTIME;
iattr.ia_ctime = CURRENT_TIME;
- RETURN(llu_setattr_raw(ino, &iattr));
+ rc = llu_setattr_raw(ino, &iattr);
+ liblustre_wait_event(0);
+ RETURN(rc);
}
#define EXT2_LINK_MAX 32000
int err = -EMLINK;
ENTRY;
+ liblustre_wait_event(0);
if (llu_i2stat(dir)->st_nlink >= EXT2_LINK_MAX)
RETURN(err);
current->fsuid, current->fsgid, current->cap_effective,
0, &request);
ptlrpc_req_finished(request);
+ liblustre_wait_event(0);
RETURN(err);
}
int rc;
ENTRY;
+ liblustre_wait_event(0);
rc = llu_readlink_internal(inode, &request, &symname);
if (rc)
GOTO(out, rc);
ptlrpc_req_finished(request);
out:
+ liblustre_wait_event(0);
RETURN(rc);
}
int err = -EMLINK;
ENTRY;
+ liblustre_wait_event(0);
CDEBUG(D_VFSTRACE, "VFS Op:name=%.*s,dir=%llu\n",
(int)pno->p_base->pb_name.len, pno->p_base->pb_name.name,
(long long)llu_i2stat(dir)->st_ino);
default:
err = -EINVAL;
}
+ liblustre_wait_event(0);
RETURN(err);
}
LASSERT(src);
LASSERT(tgt);
+ liblustre_wait_event(0);
llu_prepare_mdc_op_data(&op_data, src, tgt, NULL, 0, 0);
rc = mdc_rename(llu_i2sbi(src)->ll_mdc_exp, &op_data,
oldname, oldnamelen, newname, newnamelen,
}
ptlrpc_req_finished(request);
+ liblustre_wait_event(0);
RETURN(rc);
}
buf->f_namemax = fs.f_namelen;
#endif
+ liblustre_wait_event(0);
RETURN(0);
}
#endif /* _HAVE_STATVFS */
int err = -EMLINK;
ENTRY;
+ liblustre_wait_event(0);
CDEBUG(D_VFSTRACE, "VFS Op:name=%.*s,dir=%llu/%lu(%p)\n", len, name,
(long long)st->st_ino, llu_i2info(dir)->lli_st_generation, dir);
current->fsuid, current->fsgid, current->cap_effective,
0, &request);
ptlrpc_req_finished(request);
+ liblustre_wait_event(0);
RETURN(err);
}
struct mdc_op_data op_data;
int rc;
ENTRY;
+
+ liblustre_wait_event(0);
CDEBUG(D_VFSTRACE, "VFS Op:name=%.*s,dir=%llu/%lu(%p)\n", len, name,
(long long)llu_i2stat(dir)->st_ino,
llu_i2info(dir)->lli_st_generation, dir);
rc = mdc_unlink(llu_i2sbi(dir)->ll_mdc_exp, &op_data, &request);
ptlrpc_req_finished(request);
+ liblustre_wait_event(0);
RETURN(rc);
}
struct llu_inode_info *lli = llu_i2info(ino);
long flags;
struct flock *flock;
- long err;
+ long err = 0;
+ liblustre_wait_event(0);
switch (cmd) {
case F_GETFL:
*rtn = lli->lli_open_flags;
- return 0;
+ break;
case F_SETFL:
flags = va_arg(ap, long);
flags &= FCNTL_FLMASK;
CERROR("liblustre don't support O_NONBLOCK, O_ASYNC, "
"and O_DIRECT on file descriptor\n");
*rtn = -EINVAL;
- return EINVAL;
+ err = EINVAL;
+ break;
}
lli->lli_open_flags = (int)(flags & FCNTL_FLMASK) |
(lli->lli_open_flags & ~FCNTL_FLMASK);
*rtn = 0;
- return 0;
+ break;
case F_GETLK:
#ifdef F_GETLK64
#if F_GETLK64 != F_GETLK
flock = va_arg(ap, struct flock *);
err = llu_fcntl_getlk(ino, flock);
*rtn = err? -1: 0;
- return err;
+ break;
case F_SETLK:
#ifdef F_SETLKW64
#if F_SETLKW64 != F_SETLKW
flock = va_arg(ap, struct flock *);
err = llu_fcntl_setlk(ino, cmd, flock);
*rtn = err? -1: 0;
- return err;
+ break;
+ default:
+ CERROR("unsupported fcntl cmd %x\n", cmd);
+ *rtn = -ENOSYS;
+ err = ENOSYS;
+ break;
}
- CERROR("unsupported fcntl cmd %x\n", cmd);
- *rtn = -ENOSYS;
- return ENOSYS;
+ liblustre_wait_event(0);
+ return err;
}
static int llu_get_grouplock(struct inode *inode, unsigned long arg)
memset(&fd->fd_cwlockh, 0, sizeof(fd->fd_cwlockh));
RETURN(0);
-}
+}
static int llu_iop_ioctl(struct inode *ino, unsigned long int request,
va_list ap)
{
unsigned long arg;
+ int rc;
liblustre_wait_event(0);
switch (request) {
case LL_IOC_GROUP_LOCK:
arg = va_arg(ap, unsigned long);
- return llu_get_grouplock(ino, arg);
+ rc = llu_get_grouplock(ino, arg);
+ break;
case LL_IOC_GROUP_UNLOCK:
arg = va_arg(ap, unsigned long);
- return llu_put_grouplock(ino, arg);
+ rc = llu_put_grouplock(ino, arg);
+ break;
+ default:
+ CERROR("did not support ioctl cmd %lx\n", request);
+ rc = -ENOSYS;
+ break;
}
- CERROR("did not support ioctl cmd %lx\n", request);
- return -ENOSYS;
+ liblustre_wait_event(0);
+ return rc;
}
/*
ptlrpc_req_finished(request);
CDEBUG(D_SUPER, "LibLustre: %s mounted successfully!\n", source);
+ liblustre_wait_event(0);
return 0;