struct ll_file_data *fd;
OBD_SLAB_ALLOC_PTR_GFP(fd, ll_file_data_slab, CFS_ALLOC_IO);
+ if (fd == NULL)
+ return NULL;
+
fd->fd_write_failed = false;
+
return fd;
}
{
ENTRY;
- op_data->op_attr.ia_valid = ATTR_MODE | ATTR_ATIME_SET |
- ATTR_MTIME_SET | ATTR_CTIME_SET;
+ op_data->op_attr.ia_valid = ATTR_MODE | ATTR_ATIME | ATTR_ATIME_SET |
+ ATTR_MTIME | ATTR_MTIME_SET |
+ ATTR_CTIME | ATTR_CTIME_SET;
if (!(och->och_flags & FMODE_WRITE))
goto out;
it = file->private_data; /* XXX: compat macro */
file->private_data = NULL; /* prevent ll_local_open assertion */
- fd = ll_file_data_get();
- if (fd == NULL)
- GOTO(out_och_free, rc = -ENOMEM);
+ fd = ll_file_data_get();
+ if (fd == NULL)
+ GOTO(out_openerr, rc = -ENOMEM);
- fd->fd_file = file;
- if (S_ISDIR(inode->i_mode)) {
+ fd->fd_file = file;
+ if (S_ISDIR(inode->i_mode)) {
spin_lock(&lli->lli_sa_lock);
if (lli->lli_opendir_key == NULL && lli->lli_sai == NULL &&
lli->lli_opendir_pid == 0) {
opendir_set = 1;
}
spin_unlock(&lli->lli_sa_lock);
- }
+ }
if (inode->i_sb->s_root == file->f_dentry) {
LUSTRE_FPRIVATE(file) = fd;
CDEBUG(D_INFO, "trying to match res "DFID" mode %s\n", PFID(fid),
ldlm_lockname[mode]);
- flags = LDLM_FL_BLOCK_GRANTED | LDLM_FL_CBPENDING | LDLM_FL_TEST_LOCK;
- for (i = 0; i < MDS_INODELOCK_MAXSHIFT && *bits != 0; i++) {
- policy.l_inodebits.bits = *bits & (1 << i);
- if (policy.l_inodebits.bits == 0)
- continue;
+ flags = LDLM_FL_BLOCK_GRANTED | LDLM_FL_CBPENDING | LDLM_FL_TEST_LOCK;
+ for (i = 0; i <= MDS_INODELOCK_MAXSHIFT && *bits != 0; i++) {
+ policy.l_inodebits.bits = *bits & (1 << i);
+ if (policy.l_inodebits.bits == 0)
+ continue;
if (md_lock_match(ll_i2mdexp(inode), flags, fid, LDLM_IBITS,
&policy, mode, &lockh)) {
here to preserve get_cwd functionality on 2.6.
Bug 10503 */
if (!dentry->d_inode->i_nlink)
- d_lustre_invalidate(dentry);
+ d_lustre_invalidate(dentry, 0);
ll_lookup_finish_locks(&oit, dentry);
} else if (!ll_have_md_lock(dentry->d_inode, &ibits, LCK_MINMODE)) {