18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-or-later */
28c2ecf20Sopenharmony_ci/* -*- mode: c; c-basic-offset: 8; -*-
38c2ecf20Sopenharmony_ci * vim: noexpandtab sw=8 ts=8 sts=0:
48c2ecf20Sopenharmony_ci *
58c2ecf20Sopenharmony_ci * dcache.h
68c2ecf20Sopenharmony_ci *
78c2ecf20Sopenharmony_ci * Function prototypes
88c2ecf20Sopenharmony_ci *
98c2ecf20Sopenharmony_ci * Copyright (C) 2002, 2004 Oracle.  All rights reserved.
108c2ecf20Sopenharmony_ci */
118c2ecf20Sopenharmony_ci
128c2ecf20Sopenharmony_ci#ifndef OCFS2_DCACHE_H
138c2ecf20Sopenharmony_ci#define OCFS2_DCACHE_H
148c2ecf20Sopenharmony_ci
158c2ecf20Sopenharmony_ciextern const struct dentry_operations ocfs2_dentry_ops;
168c2ecf20Sopenharmony_ci
178c2ecf20Sopenharmony_cistruct ocfs2_dentry_lock {
188c2ecf20Sopenharmony_ci	unsigned int		dl_count;
198c2ecf20Sopenharmony_ci	u64			dl_parent_blkno;
208c2ecf20Sopenharmony_ci
218c2ecf20Sopenharmony_ci	/*
228c2ecf20Sopenharmony_ci	 * The ocfs2_dentry_lock keeps an inode reference until
238c2ecf20Sopenharmony_ci	 * dl_lockres has been destroyed. This is usually done in
248c2ecf20Sopenharmony_ci	 * ->d_iput() anyway, so there should be minimal impact.
258c2ecf20Sopenharmony_ci	 */
268c2ecf20Sopenharmony_ci	struct inode		*dl_inode;
278c2ecf20Sopenharmony_ci	struct ocfs2_lock_res	dl_lockres;
288c2ecf20Sopenharmony_ci};
298c2ecf20Sopenharmony_ci
308c2ecf20Sopenharmony_ciint ocfs2_dentry_attach_lock(struct dentry *dentry, struct inode *inode,
318c2ecf20Sopenharmony_ci			     u64 parent_blkno);
328c2ecf20Sopenharmony_ci
338c2ecf20Sopenharmony_civoid ocfs2_dentry_lock_put(struct ocfs2_super *osb,
348c2ecf20Sopenharmony_ci			   struct ocfs2_dentry_lock *dl);
358c2ecf20Sopenharmony_ci
368c2ecf20Sopenharmony_cistruct dentry *ocfs2_find_local_alias(struct inode *inode, u64 parent_blkno,
378c2ecf20Sopenharmony_ci				      int skip_unhashed);
388c2ecf20Sopenharmony_ci
398c2ecf20Sopenharmony_civoid ocfs2_dentry_move(struct dentry *dentry, struct dentry *target,
408c2ecf20Sopenharmony_ci		       struct inode *old_dir, struct inode *new_dir);
418c2ecf20Sopenharmony_ci
428c2ecf20Sopenharmony_ciextern spinlock_t dentry_attach_lock;
438c2ecf20Sopenharmony_civoid ocfs2_dentry_attach_gen(struct dentry *dentry);
448c2ecf20Sopenharmony_ci
458c2ecf20Sopenharmony_ci#endif /* OCFS2_DCACHE_H */
46