Commit 933eb397 authored by John L. Hammond's avatar John L. Hammond Committed by Greg Kroah-Hartman
Browse files

staging: lustre: clio: use CIT_SETATTR for FSFILT_IOC_SETFLAGS



Add handling of inode flags to the handlers of CIT_SETATTR in lov and
osc. In the FSFILT_IOC_SETFLAGS case of ll_iocontrol() use
cl_setattr_ost() rather than obd_setattr_rqset() to set inode flags on
OST objects. Remove the then unused OBD API methods
obd_setattr_rqset() and obd_setattr_async() along with their
supporting functions.

Signed-off-by: default avatarJohn L. Hammond <john.hammond@intel.com>
Signed-off-by: default avatarJinshan Xiong <jinshan.xiong@intel.com>
Intel-bug-id: https://jira.hpdd.intel.com/browse/LU-5823
Reviewed-on: http://review.whamcloud.com/13422


Reviewed-by: default avatarBobi Jam <bobijam@hotmail.com>
Reviewed-by: default avatarOleg Drokin <oleg.drokin@intel.com>
Signed-off-by: default avatarJames Simmons <jsimmons@infradead.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 2a99f829
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -1772,9 +1772,10 @@ struct cl_io {
		struct cl_io_rw_common ci_rw;
		struct cl_setattr_io {
			struct ost_lvb   sa_attr;
			unsigned int		 sa_attr_flags;
			unsigned int     sa_valid;
			int		sa_stripe_index;
			struct lu_fid  *sa_parent_fid;
			const struct lu_fid	*sa_parent_fid;
		} ci_setattr;
		struct cl_fault_io {
			/** page index within file. */
+2 −0
Original line number Diff line number Diff line
@@ -74,4 +74,6 @@
# define ext2_find_next_zero_bit  find_next_zero_bit_le
#endif

#define TIMES_SET_FLAGS (ATTR_MTIME_SET | ATTR_ATIME_SET | ATTR_TIMES_SET)

#endif /* _LUSTRE_COMPAT_H */
+0 −3
Original line number Diff line number Diff line
@@ -896,9 +896,6 @@ struct obd_ops {
		       struct obdo *oa, struct obd_trans_info *oti);
	int (*setattr)(const struct lu_env *, struct obd_export *exp,
		       struct obd_info *oinfo, struct obd_trans_info *oti);
	int (*setattr_async)(struct obd_export *exp, struct obd_info *oinfo,
			     struct obd_trans_info *oti,
			     struct ptlrpc_request_set *rqset);
	int (*getattr)(const struct lu_env *env, struct obd_export *exp,
		       struct obd_info *oinfo);
	int (*getattr_async)(struct obd_export *exp, struct obd_info *oinfo,
+0 −39
Original line number Diff line number Diff line
@@ -749,45 +749,6 @@ static inline int obd_setattr(const struct lu_env *env, struct obd_export *exp,
	return rc;
}

/* This performs all the requests set init/wait/destroy actions. */
static inline int obd_setattr_rqset(struct obd_export *exp,
				    struct obd_info *oinfo,
				    struct obd_trans_info *oti)
{
	struct ptlrpc_request_set *set = NULL;
	int rc;

	EXP_CHECK_DT_OP(exp, setattr_async);
	EXP_COUNTER_INCREMENT(exp, setattr_async);

	set =  ptlrpc_prep_set();
	if (!set)
		return -ENOMEM;

	rc = OBP(exp->exp_obd, setattr_async)(exp, oinfo, oti, set);
	if (rc == 0)
		rc = ptlrpc_set_wait(set);
	ptlrpc_set_destroy(set);
	return rc;
}

/* This adds all the requests into @set if @set != NULL, otherwise
 * all requests are sent asynchronously without waiting for response.
 */
static inline int obd_setattr_async(struct obd_export *exp,
				    struct obd_info *oinfo,
				    struct obd_trans_info *oti,
				    struct ptlrpc_request_set *set)
{
	int rc;

	EXP_CHECK_DT_OP(exp, setattr_async);
	EXP_COUNTER_INCREMENT(exp, setattr_async);

	rc = OBP(exp->exp_obd, setattr_async)(exp, oinfo, oti, set);
	return rc;
}

static inline int obd_add_conn(struct obd_import *imp, struct obd_uuid *uuid,
			       int priority)
{
+5 −3
Original line number Diff line number Diff line
@@ -80,7 +80,8 @@ int cl_inode_fini_refcheck;
 */
static DEFINE_MUTEX(cl_inode_fini_guard);

int cl_setattr_ost(struct inode *inode, const struct iattr *attr)
int cl_setattr_ost(struct cl_object *obj, const struct iattr *attr,
		   unsigned int attr_flags)
{
	struct lu_env *env;
	struct cl_io  *io;
@@ -92,14 +93,15 @@ int cl_setattr_ost(struct inode *inode, const struct iattr *attr)
		return PTR_ERR(env);

	io = vvp_env_thread_io(env);
	io->ci_obj = ll_i2info(inode)->lli_clob;
	io->ci_obj = obj;

	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);
	io->u.ci_setattr.sa_attr.lvb_ctime = LTIME_S(attr->ia_ctime);
	io->u.ci_setattr.sa_attr.lvb_size = attr->ia_size;
	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 = ll_inode2fid(inode);
	io->u.ci_setattr.sa_parent_fid = lu_object_fid(&obj->co_lu);

again:
	if (cl_io_init(env, io, CIT_SETATTR, io->ci_obj) == 0) {
Loading