Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
fs
gfs2
dir.h
Go to the documentation of this file.
1
/*
2
* Copyright (C) Sistina Software, Inc. 1997-2003 All rights reserved.
3
* Copyright (C) 2004-2006 Red Hat, Inc. All rights reserved.
4
*
5
* This copyrighted material is made available to anyone wishing to use,
6
* modify, copy, or redistribute it subject to the terms and conditions
7
* of the GNU General Public License version 2.
8
*/
9
10
#ifndef __DIR_DOT_H__
11
#define __DIR_DOT_H__
12
13
#include <
linux/dcache.h
>
14
#include <
linux/crc32.h
>
15
16
struct
inode
;
17
struct
gfs2_inode
;
18
struct
gfs2_inum
;
19
20
extern
struct
inode
*
gfs2_dir_search
(
struct
inode
*dir,
21
const
struct
qstr
*
filename
);
22
extern
int
gfs2_dir_check
(
struct
inode
*dir,
const
struct
qstr
*
filename
,
23
const
struct
gfs2_inode
*
ip
);
24
extern
int
gfs2_dir_add
(
struct
inode
*
inode
,
const
struct
qstr
*
filename
,
25
const
struct
gfs2_inode
*
ip
);
26
extern
int
gfs2_dir_del
(
struct
gfs2_inode
*dip,
const
struct
dentry
*
dentry
);
27
extern
int
gfs2_dir_read
(
struct
inode
*
inode
,
u64
*
offset
,
void
*opaque,
28
filldir_t
filldir,
struct
file_ra_state
*f_ra);
29
extern
int
gfs2_dir_mvino
(
struct
gfs2_inode
*dip,
const
struct
qstr
*
filename
,
30
const
struct
gfs2_inode
*nip,
unsigned
int
new_type);
31
32
extern
int
gfs2_dir_exhash_dealloc
(
struct
gfs2_inode
*dip);
33
34
extern
int
gfs2_diradd_alloc_required
(
struct
inode
*dir,
35
const
struct
qstr
*
filename
);
36
extern
int
gfs2_dir_get_new_buffer
(
struct
gfs2_inode
*
ip
,
u64
block
,
37
struct
buffer_head **bhp);
38
extern
void
gfs2_dir_hash_inval
(
struct
gfs2_inode
*
ip
);
39
40
static
inline
u32
gfs2_disk_hash(
const
char
*
data
,
int
len)
41
{
42
return
crc32_le
((
u32
)~0, data, len) ^ (
u32
)~0;
43
}
44
45
46
static
inline
void
gfs2_str2qstr(
struct
qstr
*
name
,
const
char
*
fname
)
47
{
48
name->
name
=
fname
;
49
name->len =
strlen
(fname);
50
name->hash = gfs2_disk_hash(name->
name
, name->len);
51
}
52
53
/* N.B. This probably ought to take inum & type as args as well */
54
static
inline
void
gfs2_qstr2dirent(
const
struct
qstr
*
name
,
u16
reclen,
struct
gfs2_dirent
*dent)
55
{
56
dent->
de_inum
.no_addr =
cpu_to_be64
(0);
57
dent->
de_inum
.no_formal_ino =
cpu_to_be64
(0);
58
dent->
de_hash
=
cpu_to_be32
(name->hash);
59
dent->
de_rec_len
=
cpu_to_be16
(reclen);
60
dent->
de_name_len
=
cpu_to_be16
(name->len);
61
dent->
de_type
=
cpu_to_be16
(0);
62
memset
(dent->
__pad
, 0,
sizeof
(dent->
__pad
));
63
memcpy
(dent + 1, name->
name
, name->len);
64
}
65
66
extern
struct
qstr
gfs2_qdot
;
67
extern
struct
qstr
gfs2_qdotdot
;
68
69
#endif
/* __DIR_DOT_H__ */
Generated on Thu Jan 10 2013 14:46:26 for Linux Kernel by
1.8.2