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
exofs
file.c
Go to the documentation of this file.
1
/*
2
* Copyright (C) 2005, 2006
3
* Avishay Traeger (
[email protected]
)
4
* Copyright (C) 2008, 2009
5
* Boaz Harrosh <
[email protected]
>
6
*
7
* Copyrights for code taken from ext2:
8
* Copyright (C) 1992, 1993, 1994, 1995
9
* Remy Card (
[email protected]
)
10
* Laboratoire MASI - Institut Blaise Pascal
11
* Universite Pierre et Marie Curie (Paris VI)
12
* from
13
* linux/fs/minix/inode.c
14
* Copyright (C) 1991, 1992 Linus Torvalds
15
*
16
* This file is part of exofs.
17
*
18
* exofs is free software; you can redistribute it and/or modify
19
* it under the terms of the GNU General Public License as published by
20
* the Free Software Foundation. Since it is based on ext2, and the only
21
* valid version of GPL for the Linux kernel is version 2, the only valid
22
* version of GPL for exofs is version 2.
23
*
24
* exofs is distributed in the hope that it will be useful,
25
* but WITHOUT ANY WARRANTY; without even the implied warranty of
26
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
27
* GNU General Public License for more details.
28
*
29
* You should have received a copy of the GNU General Public License
30
* along with exofs; if not, write to the Free Software
31
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
32
*/
33
#include "
exofs.h
"
34
35
static
int
exofs_release_file(
struct
inode
*
inode
,
struct
file
*filp)
36
{
37
return
0;
38
}
39
40
/* exofs_file_fsync - flush the inode to disk
41
*
42
* Note, in exofs all metadata is written as part of inode, regardless.
43
* The writeout is synchronous
44
*/
45
static
int
exofs_file_fsync(
struct
file
*filp, loff_t
start
, loff_t
end
,
46
int
datasync)
47
{
48
struct
inode
*
inode
= filp->
f_mapping
->host;
49
int
ret
;
50
51
ret =
filemap_write_and_wait_range
(inode->
i_mapping
, start, end);
52
if
(ret)
53
return
ret
;
54
55
mutex_lock
(&inode->
i_mutex
);
56
ret =
sync_inode_metadata
(filp->
f_mapping
->host, 1);
57
mutex_unlock
(&inode->
i_mutex
);
58
return
ret
;
59
}
60
61
static
int
exofs_flush(
struct
file
*
file
,
fl_owner_t
id
)
62
{
63
int
ret =
vfs_fsync
(file, 0);
64
/* TODO: Flush the OSD target */
65
return
ret
;
66
}
67
68
const
struct
file_operations
exofs_file_operations
= {
69
.llseek =
generic_file_llseek
,
70
.read =
do_sync_read
,
71
.write =
do_sync_write
,
72
.aio_read =
generic_file_aio_read
,
73
.aio_write =
generic_file_aio_write
,
74
.mmap =
generic_file_mmap
,
75
.open =
generic_file_open
,
76
.release = exofs_release_file,
77
.fsync = exofs_file_fsync,
78
.flush = exofs_flush,
79
.splice_read =
generic_file_splice_read
,
80
.splice_write =
generic_file_splice_write
,
81
};
82
83
const
struct
inode_operations
exofs_file_inode_operations
= {
84
.setattr =
exofs_setattr
,
85
};
Generated on Thu Jan 10 2013 13:09:23 for Linux Kernel by
1.8.2