X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Fmdd%2Fmdd_lock.c;h=2d33a16b98d737f8d3f0f89de58d31e88ed87bcc;hb=a4a164c9e4c703c1f869de3a2e22793c66f0f74a;hp=d9921afdaf3e13cc6b0c74fdd173373a0772503e;hpb=ea75e9e7711c932cab9fc8961be3d4205bd80a97;p=fs%2Flustre-release.git diff --git a/lustre/mdd/mdd_lock.c b/lustre/mdd/mdd_lock.c index d9921af..2d33a16 100644 --- a/lustre/mdd/mdd_lock.c +++ b/lustre/mdd/mdd_lock.c @@ -87,116 +87,3 @@ unsigned long mdd_name2hash(const char *name) { return full_name_hash((unsigned char*)name, strlen(name)); } - -/* Methods for parallel directory locking */ -#if MDD_DISABLE_PDO_LOCK - -static void *pdo_handle = (void *)0xbabecafe; - -void mdd_pdlock_init(struct mdd_object *obj) -{ -} - -void *mdd_pdo_write_lock(const struct lu_env *env, struct mdd_object *obj, - const char *name, enum mdd_object_role role) -{ - return pdo_handle; -} - -void *mdd_pdo_read_lock(const struct lu_env *env, struct mdd_object *obj, - const char *name, enum mdd_object_role role) -{ - return pdo_handle; -} - -void mdd_pdo_write_unlock(const struct lu_env *env, struct mdd_object *obj, - void *dlh) -{ - LASSERT(dlh == pdo_handle); -} - -void mdd_pdo_read_unlock(const struct lu_env *env, struct mdd_object *obj, - void *dlh) -{ - LASSERT(dlh == pdo_handle); -} - -#else /* !MDD_DISABLE_PDO_LOCK */ - -#ifdef CONFIG_LOCKDEP -static struct lock_class_key mdd_pdirop_key; - -#define RETIP ((unsigned long)__builtin_return_address(0)) - -static void mdd_lockdep_init(struct mdd_object *obj) -{ - lockdep_set_class_and_name(obj, &mdd_pdirop_key, "pdir"); -} - -static void mdd_lockdep_pd_acquire(struct mdd_object *obj, - enum mdd_object_role role) -{ - lock_map_acquire(&obj->dep_map); -} - -static void mdd_lockdep_pd_release(struct mdd_object *obj) -{ - lock_map_release(&obj->dep_map); -} - -#else /* !CONFIG_LOCKDEP */ - -static void mdd_lockdep_init(struct mdd_object *obj) -{} -static void mdd_lockdep_pd_acquire(struct mdd_object *obj, - enum mdd_object_role role) -{} -static void mdd_lockdep_pd_release(struct mdd_object *obj) -{} - -#endif /* !CONFIG_LOCKDEP */ - -void mdd_pdlock_init(struct mdd_object *obj) -{ - dynlock_init(&obj->mod_pdlock); - mdd_lockdep_init(obj); -} - -void *mdd_pdo_write_lock(const struct lu_env *env, struct mdd_object *obj, - const char *name, enum mdd_object_role role) -{ - struct dynlock_handle *handle; - unsigned long value = mdd_name2hash(name); - - handle = dynlock_lock(&obj->mod_pdlock, value, DLT_WRITE, GFP_NOFS); - if (handle != NULL) - mdd_lockdep_pd_acquire(obj, role); - return handle; -} - -void *mdd_pdo_read_lock(const struct lu_env *env, struct mdd_object *obj, - const char *name, enum mdd_object_role role) -{ - struct dynlock_handle *handle; - unsigned long value = mdd_name2hash(name); - handle = dynlock_lock(&obj->mod_pdlock, value, DLT_READ, GFP_NOFS); - if (handle != NULL) - mdd_lockdep_pd_acquire(obj, role); - return handle; -} - -void mdd_pdo_write_unlock(const struct lu_env *env, struct mdd_object *obj, - void *dlh) -{ - mdd_lockdep_pd_release(obj); - return dynlock_unlock(&obj->mod_pdlock, dlh); -} - -void mdd_pdo_read_unlock(const struct lu_env *env, struct mdd_object *obj, - void *dlh) -{ - mdd_lockdep_pd_release(obj); - return dynlock_unlock(&obj->mod_pdlock, dlh); -} - -#endif /* MDD_DISABLE_PDO_LOCK */