static inline void mdd_quota_wrapper(struct lu_attr *la, unsigned int *qids)
{
- qids[0] = la->la_uid;
- qids[1] = la->la_gid;
+ qids[USRQUOTA] = la->la_uid;
+ qids[GRPQUOTA] = la->la_gid;
}
#endif
#define CLM_PURGE 0x40000
struct mdd_changelog {
- spinlock_t mc_lock; /* for index */
+ cfs_spinlock_t mc_lock; /* for index */
cfs_waitq_t mc_waitq;
int mc_flags;
int mc_mask;
__u64 mc_index;
__u64 mc_starttime;
+ cfs_spinlock_t mc_user_lock;
+ int mc_lastuser;
+};
+
+/** Objects in .lustre dir */
+struct mdd_dot_lustre_objs {
+ struct mdd_object *mdd_obf;
};
struct mdd_device {
struct mdd_txn_op_descr mdd_tod[MDD_TXN_LAST_OP];
struct mdd_changelog mdd_cl;
unsigned long mdd_atime_diff;
+ struct mdd_object *mdd_dot_lustre;
+ struct mdd_dot_lustre_objs mdd_dot_lustre_objs;
+ unsigned int mdd_sync_permission;
};
enum mod_flags {
struct lu_name mti_name;
struct obdo mti_oa;
char mti_xattr_buf[LUSTRE_POSIX_ACL_MAX_SIZE];
- struct lu_fid_pack mti_pack;
struct dt_allocation_hint mti_hint;
struct lov_mds_md *mti_max_lmm;
int mti_max_lmm_size;
void *md, int *md_size, const char *name);
int mdd_get_md_locked(const struct lu_env *env, struct mdd_object *obj,
void *md, int *md_size, const char *name);
+int mdd_data_get(const struct lu_env *env, struct mdd_object *obj, void **data);
int mdd_la_get(const struct lu_env *env, struct mdd_object *obj,
struct lu_attr *la, struct lustre_capa *capa);
int mdd_attr_set_internal(const struct lu_env *env,
enum mdd_object_role role);
void mdd_write_unlock(const struct lu_env *env, struct mdd_object *obj);
void mdd_read_unlock(const struct lu_env *env, struct mdd_object *obj);
+int mdd_write_locked(const struct lu_env *env, struct mdd_object *obj);
void mdd_pdlock_init(struct mdd_object *obj);
unsigned long mdd_name2hash(const char *name);
void mdd_pdo_read_unlock(const struct lu_env *env, struct mdd_object *obj,
struct dynlock_handle *dlh);
/* mdd_dir.c */
+int mdd_is_subdir(const struct lu_env *env, struct md_object *mo,
+ const struct lu_fid *fid, struct lu_fid *sfid);
void __mdd_ref_add(const struct lu_env *env, struct mdd_object *obj,
struct thandle *handle);
void __mdd_ref_del(const struct lu_env *env, struct mdd_object *obj,
struct mdd_object *mdd_object_find(const struct lu_env *env,
struct mdd_device *d,
const struct lu_fid *f);
+int mdd_get_default_md(struct mdd_object *mdd_obj, struct lov_mds_md *lmm,
+ int *size);
+int mdd_readpage(const struct lu_env *env, struct md_object *obj,
+ const struct lu_rdpg *rdpg);
/* mdd_quota.c*/
#ifdef HAVE_QUOTA_SUPPORT
int mdd_quota_cleanup(const struct lu_env *env, struct md_device *m);
int mdd_quota_recovery(const struct lu_env *env, struct md_device *m);
int mdd_quota_check(const struct lu_env *env, struct md_device *m,
- struct obd_export *exp, __u32 type);
+ __u32 type);
int mdd_quota_on(const struct lu_env *env, struct md_device *m,
__u32 type);
int mdd_quota_off(const struct lu_env *env, struct md_device *m,
struct thandle *handle);
int mdd_changelog_llog_cancel(struct mdd_device *mdd, long long endrec);
int mdd_changelog_write_header(struct mdd_device *mdd, int markerflags);
+int mdd_changelog_on(struct mdd_device *mdd, int on);
/* mdd_permission.c */
#define mdd_cap_t(x) (x)
return lu_object_fid(&obj->mod_obj.mo_lu);
}
-static inline const struct dt_rec *__mdd_fid_rec(const struct lu_env *env,
- const struct lu_fid *fid)
-{
- struct lu_fid_pack *pack = &mdd_env_info(env)->mti_pack;
-
- fid_pack(pack, fid, &mdd_env_info(env)->mti_fid2);
- return (const struct dt_rec *)pack;
-}
-
-static inline umode_t mdd_object_type(const struct mdd_object *obj)
+static inline cfs_umode_t mdd_object_type(const struct mdd_object *obj)
{
return lu_object_attr(&obj->mod_obj.mo_lu);
}
return __mdd_permission_internal(env, obj, la, mask, role);
}
+static inline int mdo_data_get(const struct lu_env *env,
+ struct mdd_object *obj,
+ void **data)
+{
+ struct dt_object *next = mdd_object_child(obj);
+ next->do_ops->do_data_get(env, next, data);
+ return 0;
+}
+
/* mdd inline func for calling osd_dt_object ops */
static inline int mdo_attr_get(const struct lu_env *env, struct mdd_object *obj,
struct lu_attr *la, struct lustre_capa *capa)