X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Fcmm%2Fmdc_device.c;h=416233d5c2715a607811fcef05135fde5eae2ad9;hb=b9ab6348153fd8d236871f75e5bd3793a49c9a45;hp=51386debe2032262842531277c07bf88eee15908;hpb=6fe18330660980fc4ec4fd4e960f5415e571a54e;p=fs%2Flustre-release.git diff --git a/lustre/cmm/mdc_device.c b/lustre/cmm/mdc_device.c index 51386de..416233d 100644 --- a/lustre/cmm/mdc_device.c +++ b/lustre/cmm/mdc_device.c @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -53,15 +53,18 @@ #include "mdc_internal.h" static const struct lu_device_operations mdc_lu_ops; - -static inline int lu_device_is_mdc(struct lu_device *ld) -{ - return ergo(ld != NULL && ld->ld_ops != NULL, - ld->ld_ops == &mdc_lu_ops); -} - +/** + * \addtogroup cmm_mdc + * @{ + */ +/** + * The md_device_operation for mdc. It is empty. + */ static const struct md_device_operations mdc_md_ops = { 0 }; +/** + * Upcall handler in mdc. Analog of obd_device::o_notify(). + */ static int mdc_obd_update(struct obd_device *host, struct obd_device *watched, enum obd_notify_event ev, void *owner, void *data) @@ -92,10 +95,14 @@ static int mdc_obd_update(struct obd_device *host, RETURN(rc); } -/* MDC OBD is set up already and connected to the proper MDS +/** + * Add new mdc device. + * Invoked by configuration command LCFG_ADD_MDC. + * + * MDC OBD is set up already and connected to the proper MDS * mdc_add_obd() find that obd by uuid and connects to it. - * Local MDT uuid is used for connection - * */ + * Local MDT uuid is used for connection. + */ static int mdc_obd_add(const struct lu_env *env, struct mdc_device *mc, struct lustre_cfg *cfg) { @@ -151,7 +158,8 @@ static int mdc_obd_add(const struct lu_env *env, OBD_CONNECT_IBITS | OBD_CONNECT_MDS_MDS | OBD_CONNECT_FID | - OBD_CONNECT_AT; + OBD_CONNECT_AT | + OBD_CONNECT_FULL20; rc = obd_connect(env, &desc->cl_exp, mdc, &mdc->obd_uuid, ocd, NULL); OBD_FREE_PTR(ocd); if (rc) { @@ -181,6 +189,12 @@ static int mdc_obd_add(const struct lu_env *env, RETURN(rc); } +/** + * Delete mdc device. + * Called when configuration command LCFG_CLEANUP is issued. + * + * This disconnects MDC OBD and cleanup it. + */ static int mdc_obd_del(const struct lu_env *env, struct mdc_device *mc, struct lustre_cfg *cfg) { @@ -222,6 +236,10 @@ static int mdc_obd_del(const struct lu_env *env, struct mdc_device *mc, RETURN(0); } +/** + * Process config command. Passed to the mdc from mdt. + * Supports two commands only - LCFG_ADD_MDC and LCFG_CLEANUP + */ static int mdc_process_config(const struct lu_env *env, struct lu_device *ld, struct lustre_cfg *cfg) @@ -243,11 +261,17 @@ static int mdc_process_config(const struct lu_env *env, RETURN(rc); } +/** + * lu_device_operations instance for mdc. + */ static const struct lu_device_operations mdc_lu_ops = { .ldo_object_alloc = mdc_object_alloc, .ldo_process_config = mdc_process_config }; +/** + * Initialize proper easize and cookie size. + */ void cmm_mdc_init_ea_size(const struct lu_env *env, struct mdc_device *mc, int max_mdsize, int max_cookiesize) { @@ -257,12 +281,14 @@ void cmm_mdc_init_ea_size(const struct lu_env *env, struct mdc_device *mc, obd->u.cli.cl_max_mds_cookiesize = max_cookiesize; } +/** Start mdc device */ static int mdc_device_init(const struct lu_env *env, struct lu_device *ld, const char *name, struct lu_device *next) { return 0; } +/** Stop mdc device. */ static struct lu_device *mdc_device_fini(const struct lu_env *env, struct lu_device *ld) { @@ -270,6 +296,7 @@ static struct lu_device *mdc_device_fini(const struct lu_env *env, RETURN (NULL); } +/** Allocate new mdc device */ static struct lu_device *mdc_device_alloc(const struct lu_env *env, struct lu_device_type *ldt, struct lustre_cfg *cfg) @@ -286,32 +313,33 @@ static struct lu_device *mdc_device_alloc(const struct lu_env *env, mc->mc_md_dev.md_ops = &mdc_md_ops; ld = mdc2lu_dev(mc); ld->ld_ops = &mdc_lu_ops; - sema_init(&mc->mc_fid_sem, 1); + cfs_sema_init(&mc->mc_fid_sem, 1); } RETURN (ld); } +/** Free mdc device */ static struct lu_device *mdc_device_free(const struct lu_env *env, struct lu_device *ld) { struct mdc_device *mc = lu2mdc_dev(ld); - LASSERTF(atomic_read(&ld->ld_ref) == 0, - "Refcount = %i\n", atomic_read(&ld->ld_ref)); - LASSERT(list_empty(&mc->mc_linkage)); + LASSERTF(cfs_atomic_read(&ld->ld_ref) == 0, + "Refcount = %d\n", cfs_atomic_read(&ld->ld_ref)); + LASSERT(cfs_list_empty(&mc->mc_linkage)); md_device_fini(&mc->mc_md_dev); OBD_FREE_PTR(mc); return NULL; } -/* context key constructor/destructor: mdc_key_init, mdc_key_fini */ +/** context key constructor/destructor: mdc_key_init, mdc_key_fini */ LU_KEY_INIT_FINI(mdc, struct mdc_thread_info); -/* context key: mdc_thread_key */ +/** context key: mdc_thread_key */ LU_CONTEXT_KEY_DEFINE(mdc, LCT_MD_THREAD|LCT_CL_THREAD); -/* type constructor/destructor: mdc_type_init, mdc_type_fini */ +/** type constructor/destructor: mdc_type_init, mdc_type_fini */ LU_TYPE_INIT_FINI(mdc, &mdc_thread_key); static struct lu_device_type_operations mdc_device_type_ops = { @@ -334,3 +362,4 @@ struct lu_device_type mdc_device_type = { .ldt_ops = &mdc_device_type_ops, .ldt_ctx_tags = LCT_MD_THREAD|LCT_CL_THREAD }; +/** @} */