#include <file.h>
#endif
-#undef LIST_HEAD
-
#include "llite_lib.h"
typedef ssize_t llu_file_piov_t(const struct iovec *iovec, int iovlen,
{
struct llu_io_session *session;
- OBD_ALLOC(session, LLU_IO_SESSION_SIZE(ngroups));
+ OBD_ALLOC_PTR(session);
if (!session)
return NULL;
static void put_io_session(struct llu_io_session *session)
{
- int i;
-
- for (i = 0; i < session->lis_ngroups; i++) {
- if (session->lis_groups[i]) {
- put_io_group(session->lis_groups[i]);
- session->lis_groups[i] = NULL;
- }
- }
-
I_RELE(session->lis_inode);
- OBD_FREE(session, LLU_IO_SESSION_SIZE(session->lis_max_groups));
+ OBD_FREE_PTR(session);
}
static int llu_file_rwx(struct inode *ino,
io->u.ci_wr.wr_append = lli->lli_open_flags & O_APPEND;
io->ci_obj = llu_i2info(inode)->lli_clob;
- if (lli->lli_open_flags & O_APPEND)
+ if ((lli->lli_open_flags & O_APPEND) && write)
io->ci_lockreq = CILR_MANDATORY;
else
io->ci_lockreq = CILR_NEVER;
-
}
int llu_iop_read(struct inode *ino,
int ret;
/* BUG: 5972 */
- st->st_atime = CURRENT_TIME;
+ st->st_atime = CFS_CURRENT_TIME;
env = cl_env_get(&refcheck);
if (IS_ERR(env))
int refcheck;
int ret;
- st->st_mtime = st->st_ctime = CURRENT_TIME;
+ st->st_mtime = st->st_ctime = CFS_CURRENT_TIME;
env = cl_env_get(&refcheck);
if (IS_ERR(env))
int llu_iop_iodone(struct ioctx *ioctx)
{
struct llu_io_session *session;
- struct llu_io_group *group;
- int i, rc = 0;
struct lu_env *env;
struct cl_io *io;
int refcheck;
LASSERT(session);
LASSERT(!IS_ERR(session));
- for (i = 0; i < session->lis_ngroups; i++) {
- group = session->lis_groups[i];
- if (group) {
- if (!rc)
- rc = group->lig_rc;
- if (!rc)
- ioctx->ioctx_cc += group->lig_rwcount;
- put_io_group(group);
- session->lis_groups[i] = NULL;
- }
- }
-
- if (rc) {
- LASSERT(rc < 0);
+ if (session->lis_rc == 0) {
+ ioctx->ioctx_cc = session->lis_rwcount;
+ } else {
+ LASSERT(session->lis_rc < 0);
ioctx->ioctx_cc = -1;
- ioctx->ioctx_errno = -rc;
+ ioctx->ioctx_errno = -session->lis_rc;
}
put_io_session(session);