Whamcloud - gitweb
git://git.whamcloud.com
/
fs
/
lustre-release.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Constify instances of struct {lu,dt,md}_device_operations.
[fs/lustre-release.git]
/
lustre
/
include
/
md_object.h
diff --git
a/lustre/include/md_object.h
b/lustre/include/md_object.h
index
1f383a6
..
774e34b
100644
(file)
--- a/
lustre/include/md_object.h
+++ b/
lustre/include/md_object.h
@@
-41,7
+41,7
@@
#ifndef _LUSTRE_MD_OBJECT_H
#define _LUSTRE_MD_OBJECT_H
#ifndef _LUSTRE_MD_OBJECT_H
#define _LUSTRE_MD_OBJECT_H
-/*
+/*
* \defgroup md md
* Sub-class of lu_object with methods common for "meta-data" objects in MDT
* stack.
*
* Sub-class of lu_object with methods common for "meta-data" objects in MDT
* stack.
*
@@
-49,6
+49,7
@@
* them, and treat them as directories.
*
* Examples: mdt, cmm, and mdt are implementations of md interface.
* them, and treat them as directories.
*
* Examples: mdt, cmm, and mdt are implementations of md interface.
+ * @{
*/
*/
@@
-81,7
+82,7
@@
struct md_ucred {
__u32 mu_fsuid;
__u32 mu_fsgid;
__u32 mu_suppgids[2];
__u32 mu_fsuid;
__u32 mu_fsgid;
__u32 mu_suppgids[2];
-
__u32
mu_cap;
+
cfs_cap_t
mu_cap;
__u32 mu_umask;
struct group_info *mu_ginfo;
struct md_identity *mu_identity;
__u32 mu_umask;
struct group_info *mu_ginfo;
struct md_identity *mu_identity;
@@
-89,14
+90,14
@@
struct md_ucred {
#define MD_CAPAINFO_MAX 5
#define MD_CAPAINFO_MAX 5
-/* there are at most 5 fids in one operation, see rename, NOTE the last one
+/*
*
there are at most 5 fids in one operation, see rename, NOTE the last one
* is a temporary one used for is_subdir() */
struct md_capainfo {
const struct lu_fid *mc_fid[MD_CAPAINFO_MAX];
struct lustre_capa *mc_capa[MD_CAPAINFO_MAX];
};
* is a temporary one used for is_subdir() */
struct md_capainfo {
const struct lu_fid *mc_fid[MD_CAPAINFO_MAX];
struct lustre_capa *mc_capa[MD_CAPAINFO_MAX];
};
-/*
+/*
*
* Implemented in mdd/mdd_handler.c.
*
* XXX should be moved into separate .h/.c together with all md security
* Implemented in mdd/mdd_handler.c.
*
* XXX should be moved into separate .h/.c together with all md security
@@
-105,7
+106,7
@@
struct md_capainfo {
struct md_ucred *md_ucred(const struct lu_env *env);
struct md_capainfo *md_capainfo(const struct lu_env *env);
struct md_ucred *md_ucred(const struct lu_env *env);
struct md_capainfo *md_capainfo(const struct lu_env *env);
-/* metadata attributes */
+/*
*
metadata attributes */
enum ma_valid {
MA_INODE = (1 << 0),
MA_LOV = (1 << 1),
enum ma_valid {
MA_INODE = (1 << 0),
MA_LOV = (1 << 1),
@@
-150,16
+151,16
@@
struct md_attr {
struct lustre_capa *ma_capa;
};
struct lustre_capa *ma_capa;
};
-/* Additional parameters for create */
+/*
*
Additional parameters for create */
struct md_op_spec {
union {
struct md_op_spec {
union {
- /* symlink target */
+ /*
*
symlink target */
const char *sp_symname;
const char *sp_symname;
- /* parent FID for cross-ref mkdir */
+ /*
*
parent FID for cross-ref mkdir */
const struct lu_fid *sp_pfid;
const struct lu_fid *sp_pfid;
- /* eadata for regular files */
+ /*
*
eadata for regular files */
struct md_spec_reg {
struct md_spec_reg {
- /* lov objs exist already */
+ /*
*
lov objs exist already */
const struct lu_fid *fid;
int no_lov_create;
const void *eadata;
const struct lu_fid *fid;
int no_lov_create;
const void *eadata;
@@
-167,20
+168,20
@@
struct md_op_spec {
} sp_ea;
} u;
} sp_ea;
} u;
- /* Create flag from client: such as MDS_OPEN_CREAT, and others. */
+ /*
*
Create flag from client: such as MDS_OPEN_CREAT, and others. */
__u32 sp_cr_flags;
__u32 sp_cr_flags;
- /* Should mdd do lookup sanity check or not. */
+ /*
*
Should mdd do lookup sanity check or not. */
int sp_cr_lookup;
int sp_cr_lookup;
- /* Current lock mode for parent dir where create is performing. */
+ /*
*
Current lock mode for parent dir where create is performing. */
mdl_mode_t sp_cr_mode;
mdl_mode_t sp_cr_mode;
- /* Check for split */
+ /*
*
Check for split */
int sp_ck_split;
};
int sp_ck_split;
};
-/*
+/*
*
* Operations implemented for each md object (both directory and leaf).
*/
struct md_object_operations {
* Operations implemented for each md object (both directory and leaf).
*/
struct md_object_operations {
@@
-213,7
+214,7
@@
struct md_object_operations {
int (*moo_readlink)(const struct lu_env *env, struct md_object *obj,
struct lu_buf *buf);
int (*moo_readlink)(const struct lu_env *env, struct md_object *obj,
struct lu_buf *buf);
- /* part of cross-ref operation */
+ /*
*
part of cross-ref operation */
int (*moo_object_create)(const struct lu_env *env,
struct md_object *obj,
const struct md_op_spec *spec,
int (*moo_object_create)(const struct lu_env *env,
struct md_object *obj,
const struct md_op_spec *spec,
@@
-235,9
+236,10
@@
struct md_object_operations {
int (*moo_capa_get)(const struct lu_env *, struct md_object *,
struct lustre_capa *, int renewal);
int (*moo_capa_get)(const struct lu_env *, struct md_object *,
struct lustre_capa *, int renewal);
+ int (*moo_object_sync)(const struct lu_env *, struct md_object *);
};
};
-/*
+/*
*
* Operations implemented for each directory object.
*/
struct md_dir_operations {
* Operations implemented for each directory object.
*/
struct md_dir_operations {
@@
-257,7
+259,7
@@
struct md_dir_operations {
struct md_op_spec *spec,
struct md_attr *ma);
struct md_op_spec *spec,
struct md_attr *ma);
- /* This method is used for creating data object for this meta object*/
+ /*
*
This method is used for creating data object for this meta object*/
int (*mdo_create_data)(const struct lu_env *env, struct md_object *p,
struct md_object *o,
const struct md_op_spec *spec,
int (*mdo_create_data)(const struct lu_env *env, struct md_object *p,
struct md_object *o,
const struct md_op_spec *spec,
@@
-276,7
+278,7
@@
struct md_dir_operations {
struct md_object *cobj, const struct lu_name *lname,
struct md_attr *ma);
struct md_object *cobj, const struct lu_name *lname,
struct md_attr *ma);
- /* partial ops for cross-ref case */
+ /*
*
partial ops for cross-ref case */
int (*mdo_name_insert)(const struct lu_env *env,
struct md_object *obj,
const struct lu_name *lname,
int (*mdo_name_insert)(const struct lu_env *env,
struct md_object *obj,
const struct lu_name *lname,
@@
-294,7
+296,7
@@
struct md_dir_operations {
};
struct md_device_operations {
};
struct md_device_operations {
- /* meta-data device related handlers. */
+ /*
*
meta-data device related handlers. */
int (*mdo_root_get)(const struct lu_env *env, struct md_device *m,
struct lu_fid *f);
int (*mdo_root_get)(const struct lu_env *env, struct md_device *m,
struct lu_fid *f);
@@
-314,26
+316,27
@@
struct md_device_operations {
};
enum md_upcall_event {
};
enum md_upcall_event {
- /*sync the md layer*/
+ /*
*
sync the md layer*/
MD_LOV_SYNC = (1 << 0),
MD_LOV_SYNC = (1 << 0),
- MD_NO_TRANS = (1 << 1), /* Just for split, no need trans, for replay */
+ /** Just for split, no need trans, for replay */
+ MD_NO_TRANS = (1 << 1),
MD_LOV_CONFIG = (1 << 2)
};
struct md_upcall {
MD_LOV_CONFIG = (1 << 2)
};
struct md_upcall {
- /* this lock protects upcall using against its removal
+ /*
*
this lock protects upcall using against its removal
* read lock is for usage the upcall, write - for init/fini */
struct rw_semaphore mu_upcall_sem;
* read lock is for usage the upcall, write - for init/fini */
struct rw_semaphore mu_upcall_sem;
- /* device to call, upper layer normally */
+ /*
*
device to call, upper layer normally */
struct md_device *mu_upcall_dev;
struct md_device *mu_upcall_dev;
- /* upcall function */
+ /*
*
upcall function */
int (*mu_upcall)(const struct lu_env *env, struct md_device *md,
enum md_upcall_event ev);
};
struct md_device {
struct lu_device md_lu_dev;
int (*mu_upcall)(const struct lu_env *env, struct md_device *md,
enum md_upcall_event ev);
};
struct md_device {
struct lu_device md_lu_dev;
- struct md_device_operations *md_ops;
+
const
struct md_device_operations *md_ops;
struct md_upcall md_upcall;
};
struct md_upcall md_upcall;
};
@@
-422,7
+425,15
@@
static inline void md_device_fini(struct md_device *md)
lu_device_fini(&md->md_lu_dev);
}
lu_device_fini(&md->md_lu_dev);
}
-/* md operations */
+static inline struct md_object *md_object_find_slice(const struct lu_env *env,
+ struct md_device *md,
+ const struct lu_fid *f)
+{
+ return lu2md(lu_object_find_slice(env, md2lu_dev(md), f, NULL));
+}
+
+
+/** md operations */
static inline int mo_permission(const struct lu_env *env,
struct md_object *p,
struct md_object *c,
static inline int mo_permission(const struct lu_env *env,
struct md_object *p,
struct md_object *c,
@@
-550,6
+561,12
@@
static inline int mo_capa_get(const struct lu_env *env,
return m->mo_ops->moo_capa_get(env, m, c, renewal);
}
return m->mo_ops->moo_capa_get(env, m, c, renewal);
}
+static inline int mo_object_sync(const struct lu_env *env, struct md_object *m)
+{
+ LASSERT(m->mo_ops->moo_object_sync);
+ return m->mo_ops->moo_object_sync(env, m);
+}
+
static inline int mdo_lookup(const struct lu_env *env,
struct md_object *p,
const struct lu_name *lname,
static inline int mdo_lookup(const struct lu_env *env,
struct md_object *p,
const struct lu_name *lname,
@@
-668,4
+685,6
@@
static inline int mdo_rename_tgt(const struct lu_env *env,
}
}
}
}
+/** @} md */
+
#endif /* _LINUX_MD_OBJECT_H */
#endif /* _LINUX_MD_OBJECT_H */