From 58a916eb05e54304d20af13f18d7810cd465f2d7 Mon Sep 17 00:00:00 2001 From: tappro Date: Thu, 3 Sep 2009 07:53:02 +0000 Subject: [PATCH] Branch HEAD b=20347 i=tappro i=fanyong In llite's SETFLAGS ioctl, the local i_flags should be updated even when "lsm == NULL". --- lustre/llite/llite_lib.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/lustre/llite/llite_lib.c b/lustre/llite/llite_lib.c index 248f212..c39ecab 100644 --- a/lustre/llite/llite_lib.c +++ b/lustre/llite/llite_lib.c @@ -1834,11 +1834,16 @@ int ll_iocontrol(struct inode *inode, struct file *file, NULL, 0, NULL, 0, &req, NULL); ll_finish_md_op_data(op_data); ptlrpc_req_finished(req); - if (rc || lsm == NULL) { + if (rc) { OBDO_FREE(oinfo.oi_oa); RETURN(rc); } + if (lsm == NULL) { + OBDO_FREE(oinfo.oi_oa); + GOTO(update_cache, rc); + } + oinfo.oi_oa->o_id = lsm->lsm_object_id; oinfo.oi_oa->o_gr = lsm->lsm_object_gr; oinfo.oi_oa->o_flags = flags; @@ -1853,13 +1858,15 @@ int ll_iocontrol(struct inode *inode, struct file *file, OBDO_FREE(oinfo.oi_oa); if (rc) { if (rc != -EPERM && rc != -EACCES) - CERROR("md_setattr_async fails: rc = %d\n", rc); + CERROR("osc_setattr_async fails: rc = %d\n",rc); RETURN(rc); } + EXIT; +update_cache: inode->i_flags = ll_ext_to_inode_flags(flags | MDS_BFLAG_EXT_FLAGS); - RETURN(0); + return 0; } default: RETURN(-ENOSYS); -- 1.8.3.1