X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Fllite%2Flcommon_cl.c;h=fa5e77a52d0e23b1404ccd43b5f9d2b5df8bb51b;hb=95557d5c1080f68be2c24dad9f3acf83d6fcbcf9;hp=53b5d4e159ad4bccdcd95129189a603c65c95e0e;hpb=427e6a469722cf14b2cd80cec991a4154b4aae50;p=fs%2Flustre-release.git diff --git a/lustre/llite/lcommon_cl.c b/lustre/llite/lcommon_cl.c index 53b5d4e..fa5e77a 100644 --- a/lustre/llite/lcommon_cl.c +++ b/lustre/llite/lcommon_cl.c @@ -73,7 +73,7 @@ int cl_inode_fini_refcheck; static DEFINE_MUTEX(cl_inode_fini_guard); int cl_setattr_ost(struct cl_object *obj, const struct iattr *attr, - unsigned int attr_flags, struct obd_capa *capa) + unsigned int attr_flags) { struct lu_env *env; struct cl_io *io; @@ -88,6 +88,7 @@ int cl_setattr_ost(struct cl_object *obj, const struct iattr *attr, io = vvp_env_thread_io(env); io->ci_obj = obj; + io->ci_verify_layout = 1; io->u.ci_setattr.sa_attr.lvb_atime = LTIME_S(attr->ia_atime); io->u.ci_setattr.sa_attr.lvb_mtime = LTIME_S(attr->ia_mtime); @@ -96,7 +97,6 @@ int cl_setattr_ost(struct cl_object *obj, const struct iattr *attr, io->u.ci_setattr.sa_attr_flags = attr_flags; io->u.ci_setattr.sa_valid = attr->ia_valid; io->u.ci_setattr.sa_parent_fid = lu_object_fid(&obj->co_lu); - io->u.ci_setattr.sa_capa = capa; again: if (cl_io_init(env, io, CIT_SETATTR, io->ci_obj) == 0) { @@ -114,12 +114,7 @@ again: cl_io_fini(env, io); if (unlikely(io->ci_need_restart)) goto again; - /* HSM import case: file is released, cannot be restored - * no need to fail except if restore registration failed - * with -ENODATA */ - if (result == -ENODATA && io->ci_restore_needed && - io->ci_result != -ENODATA) - result = 0; + cl_env_put(env, &refcheck); RETURN(result); } @@ -140,12 +135,12 @@ int cl_file_inode_init(struct inode *inode, struct lustre_md *md) struct cl_object *clob; struct lu_site *site; struct lu_fid *fid; - struct cl_object_conf conf = { - .coc_inode = inode, - .u = { - .coc_md = md - } - }; + struct cl_object_conf conf = { + .coc_inode = inode, + .u = { + .coc_layout = md->layout, + } + }; int result = 0; int refcheck; @@ -176,7 +171,6 @@ int cl_file_inode_init(struct inode *inode, struct lustre_md *md) * locked by I_NEW bit. */ lli->lli_clob = clob; - lli->lli_has_smd = lsm_has_objects(md->lsm); lu_object_ref_add(&clob->co_lu, "inode", inode); } else result = PTR_ERR(clob); @@ -212,14 +206,14 @@ static void cl_object_put_last(struct lu_env *env, struct cl_object *obj) bkt = lu_site_bkt_from_fid(site, &header->loh_fid); - init_waitqueue_entry_current(&waiter); + init_waitqueue_entry(&waiter, current); add_wait_queue(&bkt->lsb_marche_funebre, &waiter); while (1) { set_current_state(TASK_UNINTERRUPTIBLE); if (atomic_read(&header->loh_ref) == 1) break; - waitq_wait(&waiter, TASK_UNINTERRUPTIBLE); + schedule(); } set_current_state(TASK_RUNNING);