blob: 3686a52ba1435a0d321095404c09dec0d7bc6022 [file] [log] [blame]
Thomas Gleixner328970d2019-05-24 12:04:05 +02001/* SPDX-License-Identifier: GPL-2.0-or-later */
Mark Fashehccd979b2005-12-15 14:31:24 -08002/* -*- mode: c; c-basic-offset: 8; -*-
3 * vim: noexpandtab sw=8 ts=8 sts=0:
4 *
5 * dcache.h
6 *
7 * Function prototypes
8 *
9 * Copyright (C) 2002, 2004 Oracle. All rights reserved.
Mark Fashehccd979b2005-12-15 14:31:24 -080010 */
11
12#ifndef OCFS2_DCACHE_H
13#define OCFS2_DCACHE_H
14
Al Virod8fba0f2009-02-20 06:00:26 +000015extern const struct dentry_operations ocfs2_dentry_ops;
Mark Fashehccd979b2005-12-15 14:31:24 -080016
Mark Fashehd680efe2006-09-08 14:14:34 -070017struct ocfs2_dentry_lock {
18 unsigned int dl_count;
Goldwyn Rodrigues8ed6b232014-04-03 14:46:59 -070019 u64 dl_parent_blkno;
Mark Fashehd680efe2006-09-08 14:14:34 -070020
21 /*
22 * The ocfs2_dentry_lock keeps an inode reference until
23 * dl_lockres has been destroyed. This is usually done in
24 * ->d_iput() anyway, so there should be minimal impact.
25 */
26 struct inode *dl_inode;
27 struct ocfs2_lock_res dl_lockres;
28};
29
Mark Fasheh80c05842006-09-08 14:43:18 -070030int ocfs2_dentry_attach_lock(struct dentry *dentry, struct inode *inode,
Mark Fasheh0027dd52006-09-21 16:51:28 -070031 u64 parent_blkno);
Mark Fashehd680efe2006-09-08 14:14:34 -070032
Mark Fasheh80c05842006-09-08 14:43:18 -070033void ocfs2_dentry_lock_put(struct ocfs2_super *osb,
34 struct ocfs2_dentry_lock *dl);
35
36struct dentry *ocfs2_find_local_alias(struct inode *inode, u64 parent_blkno,
37 int skip_unhashed);
38
39void ocfs2_dentry_move(struct dentry *dentry, struct dentry *target,
40 struct inode *old_dir, struct inode *new_dir);
Mark Fashehd680efe2006-09-08 14:14:34 -070041
42extern spinlock_t dentry_attach_lock;
Goldwyn Rodrigues5e98d492010-06-28 10:04:32 -050043void ocfs2_dentry_attach_gen(struct dentry *dentry);
Mark Fashehd680efe2006-09-08 14:14:34 -070044
Mark Fashehccd979b2005-12-15 14:31:24 -080045#endif /* OCFS2_DCACHE_H */