staging/lustre/llite: call simple_setattr() from ll_md_setattr()
This partially reverts the change from "LU-2482 layout: introduce new layout for released files" by calling simple_setattr() from ll_md_setattr() without ATTR_SIZE set. Doing so avoids failed assertions in osc_page_delete(). Disable truncates on released files and modify sanity 229 accordingly. Intel-bug-id: https://jira.hpdd.intel.com/browse/LU-3448 Lustre-change: http://review.whamcloud.com/6643 Signed-off-by: John L. Hammond <john.hammond@intel.com> Reviewed-by: jacques-Charles Lafoucriere <jacques-charles.lafoucriere@cea.fr> Reviewed-by: Jinshan Xiong <jinshan.xiong@intel.com> Reviewed-by: Oleg Drokin <oleg.drokin@intel.com> Signed-off-by: Peng Tao <tao.peng@emc.com> Signed-off-by: Andreas Dilger <andreas.dilger@intel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
ce74f92d97
commit
251c4317b3
|
@ -1282,6 +1282,13 @@ int ll_md_setattr(struct dentry *dentry, struct md_op_data *op_data,
|
|||
RETURN(rc);
|
||||
}
|
||||
|
||||
ia_valid = op_data->op_attr.ia_valid;
|
||||
/* inode size will be in ll_setattr_ost, can't do it now since dirty
|
||||
* cache is not cleared yet. */
|
||||
op_data->op_attr.ia_valid &= ~(TIMES_SET_FLAGS | ATTR_SIZE);
|
||||
rc = simple_setattr(dentry, &op_data->op_attr);
|
||||
op_data->op_attr.ia_valid = ia_valid;
|
||||
|
||||
/* Extract epoch data if obtained. */
|
||||
op_data->op_handle = md.body->handle;
|
||||
op_data->op_ioepoch = md.body->ioepoch;
|
||||
|
@ -1364,7 +1371,6 @@ int ll_setattr_raw(struct dentry *dentry, struct iattr *attr)
|
|||
struct ll_inode_info *lli = ll_i2info(inode);
|
||||
struct md_op_data *op_data = NULL;
|
||||
struct md_open_data *mod = NULL;
|
||||
unsigned int valid = attr->ia_valid;
|
||||
int rc = 0, rc1 = 0;
|
||||
ENTRY;
|
||||
|
||||
|
@ -1476,13 +1482,6 @@ int ll_setattr_raw(struct dentry *dentry, struct iattr *attr)
|
|||
rc = ll_setattr_ost(inode, attr);
|
||||
EXIT;
|
||||
out:
|
||||
if (rc == 0) {
|
||||
/* Update inode attribute after dirty cache is cleaned
|
||||
* by truncating OST objects. */
|
||||
attr->ia_valid |= ATTR_FORCE;
|
||||
rc = simple_setattr(dentry, attr);
|
||||
LASSERT(rc == 0);
|
||||
}
|
||||
if (op_data) {
|
||||
if (op_data->op_ioepoch) {
|
||||
rc1 = ll_setattr_done_writing(inode, op_data, mod);
|
||||
|
@ -1501,8 +1500,7 @@ out:
|
|||
ll_stats_ops_tally(ll_i2sbi(inode), (attr->ia_valid & ATTR_SIZE) ?
|
||||
LPROC_LL_TRUNC : LPROC_LL_SETATTR, 1);
|
||||
|
||||
attr->ia_valid = valid;
|
||||
RETURN(rc);
|
||||
return rc;
|
||||
}
|
||||
|
||||
int ll_setattr(struct dentry *de, struct iattr *attr)
|
||||
|
|
|
@ -980,9 +980,9 @@ int lov_io_init_released(const struct lu_env *env, struct cl_object *obj,
|
|||
LASSERTF(0, "invalid type %d\n", io->ci_type);
|
||||
case CIT_MISC:
|
||||
case CIT_FSYNC:
|
||||
case CIT_SETATTR:
|
||||
result = +1;
|
||||
break;
|
||||
case CIT_SETATTR:
|
||||
case CIT_READ:
|
||||
case CIT_WRITE:
|
||||
case CIT_FAULT:
|
||||
|
|
Loading…
Reference in New Issue