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
ext3
file.c
Go to the documentation of this file.
1
/*
2
* linux/fs/ext3/file.c
3
*
4
* Copyright (C) 1992, 1993, 1994, 1995
5
* Remy Card (
[email protected]
)
6
* Laboratoire MASI - Institut Blaise Pascal
7
* Universite Pierre et Marie Curie (Paris VI)
8
*
9
* from
10
*
11
* linux/fs/minix/file.c
12
*
13
* Copyright (C) 1991, 1992 Linus Torvalds
14
*
15
* ext3 fs regular file handling primitives
16
*
17
* 64-bit file support on 64-bit platforms by Jakub Jelinek
18
* (
[email protected]
)
19
*/
20
21
#include <
linux/quotaops.h
>
22
#include "
ext3.h
"
23
#include "
xattr.h
"
24
#include "
acl.h
"
25
26
/*
27
* Called when an inode is released. Note that this is different
28
* from ext3_file_open: open gets called at every open, but release
29
* gets called only when /all/ the files are closed.
30
*/
31
static
int
ext3_release_file (
struct
inode
*
inode
,
struct
file
* filp)
32
{
33
if
(ext3_test_inode_state(inode,
EXT3_STATE_FLUSH_ON_CLOSE
)) {
34
filemap_flush
(inode->
i_mapping
);
35
ext3_clear_inode_state(inode,
EXT3_STATE_FLUSH_ON_CLOSE
);
36
}
37
/* if we are the last writer on the inode, drop the block reservation */
38
if
((filp->
f_mode
&
FMODE_WRITE
) &&
39
(
atomic_read
(&inode->
i_writecount
) == 1))
40
{
41
mutex_lock
(&EXT3_I(inode)->truncate_mutex);
42
ext3_discard_reservation
(inode);
43
mutex_unlock
(&EXT3_I(inode)->truncate_mutex);
44
}
45
if
(
is_dx
(inode) && filp->
private_data
)
46
ext3_htree_free_dir_info
(filp->
private_data
);
47
48
return
0;
49
}
50
51
const
struct
file_operations
ext3_file_operations
= {
52
.llseek =
generic_file_llseek
,
53
.read =
do_sync_read
,
54
.write =
do_sync_write
,
55
.aio_read =
generic_file_aio_read
,
56
.aio_write =
generic_file_aio_write
,
57
.unlocked_ioctl =
ext3_ioctl
,
58
#ifdef CONFIG_COMPAT
59
.compat_ioctl =
ext3_compat_ioctl
,
60
#endif
61
.mmap =
generic_file_mmap
,
62
.open =
dquot_file_open
,
63
.release = ext3_release_file,
64
.fsync =
ext3_sync_file
,
65
.splice_read =
generic_file_splice_read
,
66
.splice_write =
generic_file_splice_write
,
67
};
68
69
const
struct
inode_operations
ext3_file_inode_operations
= {
70
.setattr =
ext3_setattr
,
71
#ifdef CONFIG_EXT3_FS_XATTR
72
.setxattr =
generic_setxattr
,
73
.getxattr =
generic_getxattr
,
74
.listxattr =
ext3_listxattr
,
75
.removexattr =
generic_removexattr
,
76
#endif
77
.get_acl =
ext3_get_acl
,
78
.fiemap =
ext3_fiemap
,
79
};
80
Generated on Thu Jan 10 2013 13:09:23 for Linux Kernel by
1.8.2