]>
git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/blob - fs/ocfs2/dir.h
1 /* -*- mode: c; c-basic-offset: 8; -*-
2 * vim: noexpandtab sw=8 ts=8 sts=0:
8 * Copyright (C) 2002, 2004 Oracle. All rights reserved.
10 * This program is free software; you can redistribute it and/or
11 * modify it under the terms of the GNU General Public
12 * License as published by the Free Software Foundation; either
13 * version 2 of the License, or (at your option) any later version.
15 * This program is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18 * General Public License for more details.
20 * You should have received a copy of the GNU General Public
21 * License along with this program; if not, write to the
22 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
23 * Boston, MA 021110-1307, USA.
29 struct ocfs2_dir_lookup_result
{
30 struct buffer_head
*dl_leaf_bh
;
31 struct ocfs2_dir_entry
*dl_entry
;
33 void ocfs2_free_dir_lookup_result(struct ocfs2_dir_lookup_result
*res
);
35 int ocfs2_find_entry(const char *name
, int namelen
,
37 struct ocfs2_dir_lookup_result
*lookup
);
38 int ocfs2_delete_entry(handle_t
*handle
,
40 struct ocfs2_dir_lookup_result
*res
);
41 int __ocfs2_add_entry(handle_t
*handle
,
43 const char *name
, int namelen
,
44 struct inode
*inode
, u64 blkno
,
45 struct buffer_head
*parent_fe_bh
,
46 struct ocfs2_dir_lookup_result
*lookup
);
47 static inline int ocfs2_add_entry(handle_t
*handle
,
48 struct dentry
*dentry
,
49 struct inode
*inode
, u64 blkno
,
50 struct buffer_head
*parent_fe_bh
,
51 struct ocfs2_dir_lookup_result
*lookup
)
53 return __ocfs2_add_entry(handle
, dentry
->d_parent
->d_inode
,
54 dentry
->d_name
.name
, dentry
->d_name
.len
,
55 inode
, blkno
, parent_fe_bh
, lookup
);
57 int ocfs2_update_entry(struct inode
*dir
, handle_t
*handle
,
58 struct ocfs2_dir_lookup_result
*res
,
59 struct inode
*new_entry_inode
);
61 int ocfs2_check_dir_for_entry(struct inode
*dir
,
64 int ocfs2_empty_dir(struct inode
*inode
);
66 int ocfs2_find_files_on_disk(const char *name
,
70 struct ocfs2_dir_lookup_result
*res
);
71 int ocfs2_lookup_ino_from_name(struct inode
*dir
, const char *name
,
72 int namelen
, u64
*blkno
);
73 int ocfs2_readdir(struct file
*filp
, void *dirent
, filldir_t filldir
);
74 int ocfs2_dir_foreach(struct inode
*inode
, loff_t
*f_pos
, void *priv
,
76 int ocfs2_prepare_dir_for_insert(struct ocfs2_super
*osb
,
78 struct buffer_head
*parent_fe_bh
,
81 struct ocfs2_dir_lookup_result
*lookup
);
82 struct ocfs2_alloc_context
;
83 int ocfs2_fill_new_dir(struct ocfs2_super
*osb
,
87 struct buffer_head
*fe_bh
,
88 struct ocfs2_alloc_context
*data_ac
);
90 struct ocfs2_dir_block_trailer
*ocfs2_dir_trailer_from_size(int blocksize
,
92 #endif /* OCFS2_DIR_H */