Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
linux
Commits
12f38872
Commit
12f38872
authored
Sep 15, 2013
by
Al Viro
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
libfs: get exports to definitions of objects being exported...
Signed-off-by:
Al Viro
<
viro@zeniv.linux.org.uk
>
parent
cbe9c085
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
34 additions
and
35 deletions
+34
-35
fs/libfs.c
fs/libfs.c
+34
-35
No files found.
fs/libfs.c
View file @
12f38872
...
@@ -31,6 +31,7 @@ int simple_getattr(struct vfsmount *mnt, struct dentry *dentry,
...
@@ -31,6 +31,7 @@ int simple_getattr(struct vfsmount *mnt, struct dentry *dentry,
stat
->
blocks
=
inode
->
i_mapping
->
nrpages
<<
(
PAGE_CACHE_SHIFT
-
9
);
stat
->
blocks
=
inode
->
i_mapping
->
nrpages
<<
(
PAGE_CACHE_SHIFT
-
9
);
return
0
;
return
0
;
}
}
EXPORT_SYMBOL
(
simple_getattr
);
int
simple_statfs
(
struct
dentry
*
dentry
,
struct
kstatfs
*
buf
)
int
simple_statfs
(
struct
dentry
*
dentry
,
struct
kstatfs
*
buf
)
{
{
...
@@ -39,6 +40,7 @@ int simple_statfs(struct dentry *dentry, struct kstatfs *buf)
...
@@ -39,6 +40,7 @@ int simple_statfs(struct dentry *dentry, struct kstatfs *buf)
buf
->
f_namelen
=
NAME_MAX
;
buf
->
f_namelen
=
NAME_MAX
;
return
0
;
return
0
;
}
}
EXPORT_SYMBOL
(
simple_statfs
);
/*
/*
* Retaining negative dentries for an in-memory filesystem just wastes
* Retaining negative dentries for an in-memory filesystem just wastes
...
@@ -66,6 +68,7 @@ struct dentry *simple_lookup(struct inode *dir, struct dentry *dentry, unsigned
...
@@ -66,6 +68,7 @@ struct dentry *simple_lookup(struct inode *dir, struct dentry *dentry, unsigned
d_add
(
dentry
,
NULL
);
d_add
(
dentry
,
NULL
);
return
NULL
;
return
NULL
;
}
}
EXPORT_SYMBOL
(
simple_lookup
);
int
dcache_dir_open
(
struct
inode
*
inode
,
struct
file
*
file
)
int
dcache_dir_open
(
struct
inode
*
inode
,
struct
file
*
file
)
{
{
...
@@ -75,12 +78,14 @@ int dcache_dir_open(struct inode *inode, struct file *file)
...
@@ -75,12 +78,14 @@ int dcache_dir_open(struct inode *inode, struct file *file)
return
file
->
private_data
?
0
:
-
ENOMEM
;
return
file
->
private_data
?
0
:
-
ENOMEM
;
}
}
EXPORT_SYMBOL
(
dcache_dir_open
);
int
dcache_dir_close
(
struct
inode
*
inode
,
struct
file
*
file
)
int
dcache_dir_close
(
struct
inode
*
inode
,
struct
file
*
file
)
{
{
dput
(
file
->
private_data
);
dput
(
file
->
private_data
);
return
0
;
return
0
;
}
}
EXPORT_SYMBOL
(
dcache_dir_close
);
loff_t
dcache_dir_lseek
(
struct
file
*
file
,
loff_t
offset
,
int
whence
)
loff_t
dcache_dir_lseek
(
struct
file
*
file
,
loff_t
offset
,
int
whence
)
{
{
...
@@ -123,6 +128,7 @@ loff_t dcache_dir_lseek(struct file *file, loff_t offset, int whence)
...
@@ -123,6 +128,7 @@ loff_t dcache_dir_lseek(struct file *file, loff_t offset, int whence)
mutex_unlock
(
&
dentry
->
d_inode
->
i_mutex
);
mutex_unlock
(
&
dentry
->
d_inode
->
i_mutex
);
return
offset
;
return
offset
;
}
}
EXPORT_SYMBOL
(
dcache_dir_lseek
);
/* Relationship between i_mode and the DT_xxx types */
/* Relationship between i_mode and the DT_xxx types */
static
inline
unsigned
char
dt_type
(
struct
inode
*
inode
)
static
inline
unsigned
char
dt_type
(
struct
inode
*
inode
)
...
@@ -172,11 +178,13 @@ int dcache_readdir(struct file *file, struct dir_context *ctx)
...
@@ -172,11 +178,13 @@ int dcache_readdir(struct file *file, struct dir_context *ctx)
spin_unlock
(
&
dentry
->
d_lock
);
spin_unlock
(
&
dentry
->
d_lock
);
return
0
;
return
0
;
}
}
EXPORT_SYMBOL
(
dcache_readdir
);
ssize_t
generic_read_dir
(
struct
file
*
filp
,
char
__user
*
buf
,
size_t
siz
,
loff_t
*
ppos
)
ssize_t
generic_read_dir
(
struct
file
*
filp
,
char
__user
*
buf
,
size_t
siz
,
loff_t
*
ppos
)
{
{
return
-
EISDIR
;
return
-
EISDIR
;
}
}
EXPORT_SYMBOL
(
generic_read_dir
);
const
struct
file_operations
simple_dir_operations
=
{
const
struct
file_operations
simple_dir_operations
=
{
.
open
=
dcache_dir_open
,
.
open
=
dcache_dir_open
,
...
@@ -186,10 +194,12 @@ const struct file_operations simple_dir_operations = {
...
@@ -186,10 +194,12 @@ const struct file_operations simple_dir_operations = {
.
iterate
=
dcache_readdir
,
.
iterate
=
dcache_readdir
,
.
fsync
=
noop_fsync
,
.
fsync
=
noop_fsync
,
};
};
EXPORT_SYMBOL
(
simple_dir_operations
);
const
struct
inode_operations
simple_dir_inode_operations
=
{
const
struct
inode_operations
simple_dir_inode_operations
=
{
.
lookup
=
simple_lookup
,
.
lookup
=
simple_lookup
,
};
};
EXPORT_SYMBOL
(
simple_dir_inode_operations
);
static
const
struct
super_operations
simple_super_operations
=
{
static
const
struct
super_operations
simple_super_operations
=
{
.
statfs
=
simple_statfs
,
.
statfs
=
simple_statfs
,
...
@@ -244,6 +254,7 @@ struct dentry *mount_pseudo(struct file_system_type *fs_type, char *name,
...
@@ -244,6 +254,7 @@ struct dentry *mount_pseudo(struct file_system_type *fs_type, char *name,
deactivate_locked_super
(
s
);
deactivate_locked_super
(
s
);
return
ERR_PTR
(
-
ENOMEM
);
return
ERR_PTR
(
-
ENOMEM
);
}
}
EXPORT_SYMBOL
(
mount_pseudo
);
int
simple_open
(
struct
inode
*
inode
,
struct
file
*
file
)
int
simple_open
(
struct
inode
*
inode
,
struct
file
*
file
)
{
{
...
@@ -251,6 +262,7 @@ int simple_open(struct inode *inode, struct file *file)
...
@@ -251,6 +262,7 @@ int simple_open(struct inode *inode, struct file *file)
file
->
private_data
=
inode
->
i_private
;
file
->
private_data
=
inode
->
i_private
;
return
0
;
return
0
;
}
}
EXPORT_SYMBOL
(
simple_open
);
int
simple_link
(
struct
dentry
*
old_dentry
,
struct
inode
*
dir
,
struct
dentry
*
dentry
)
int
simple_link
(
struct
dentry
*
old_dentry
,
struct
inode
*
dir
,
struct
dentry
*
dentry
)
{
{
...
@@ -263,6 +275,7 @@ int simple_link(struct dentry *old_dentry, struct inode *dir, struct dentry *den
...
@@ -263,6 +275,7 @@ int simple_link(struct dentry *old_dentry, struct inode *dir, struct dentry *den
d_instantiate
(
dentry
,
inode
);
d_instantiate
(
dentry
,
inode
);
return
0
;
return
0
;
}
}
EXPORT_SYMBOL
(
simple_link
);
int
simple_empty
(
struct
dentry
*
dentry
)
int
simple_empty
(
struct
dentry
*
dentry
)
{
{
...
@@ -283,6 +296,7 @@ int simple_empty(struct dentry *dentry)
...
@@ -283,6 +296,7 @@ int simple_empty(struct dentry *dentry)
spin_unlock
(
&
dentry
->
d_lock
);
spin_unlock
(
&
dentry
->
d_lock
);
return
ret
;
return
ret
;
}
}
EXPORT_SYMBOL
(
simple_empty
);
int
simple_unlink
(
struct
inode
*
dir
,
struct
dentry
*
dentry
)
int
simple_unlink
(
struct
inode
*
dir
,
struct
dentry
*
dentry
)
{
{
...
@@ -293,6 +307,7 @@ int simple_unlink(struct inode *dir, struct dentry *dentry)
...
@@ -293,6 +307,7 @@ int simple_unlink(struct inode *dir, struct dentry *dentry)
dput
(
dentry
);
dput
(
dentry
);
return
0
;
return
0
;
}
}
EXPORT_SYMBOL
(
simple_unlink
);
int
simple_rmdir
(
struct
inode
*
dir
,
struct
dentry
*
dentry
)
int
simple_rmdir
(
struct
inode
*
dir
,
struct
dentry
*
dentry
)
{
{
...
@@ -304,6 +319,7 @@ int simple_rmdir(struct inode *dir, struct dentry *dentry)
...
@@ -304,6 +319,7 @@ int simple_rmdir(struct inode *dir, struct dentry *dentry)
drop_nlink
(
dir
);
drop_nlink
(
dir
);
return
0
;
return
0
;
}
}
EXPORT_SYMBOL
(
simple_rmdir
);
int
simple_rename
(
struct
inode
*
old_dir
,
struct
dentry
*
old_dentry
,
int
simple_rename
(
struct
inode
*
old_dir
,
struct
dentry
*
old_dentry
,
struct
inode
*
new_dir
,
struct
dentry
*
new_dentry
)
struct
inode
*
new_dir
,
struct
dentry
*
new_dentry
)
...
@@ -330,6 +346,7 @@ int simple_rename(struct inode *old_dir, struct dentry *old_dentry,
...
@@ -330,6 +346,7 @@ int simple_rename(struct inode *old_dir, struct dentry *old_dentry,
return
0
;
return
0
;
}
}
EXPORT_SYMBOL
(
simple_rename
);
/**
/**
* simple_setattr - setattr for simple filesystem
* simple_setattr - setattr for simple filesystem
...
@@ -370,6 +387,7 @@ int simple_readpage(struct file *file, struct page *page)
...
@@ -370,6 +387,7 @@ int simple_readpage(struct file *file, struct page *page)
unlock_page
(
page
);
unlock_page
(
page
);
return
0
;
return
0
;
}
}
EXPORT_SYMBOL
(
simple_readpage
);
int
simple_write_begin
(
struct
file
*
file
,
struct
address_space
*
mapping
,
int
simple_write_begin
(
struct
file
*
file
,
struct
address_space
*
mapping
,
loff_t
pos
,
unsigned
len
,
unsigned
flags
,
loff_t
pos
,
unsigned
len
,
unsigned
flags
,
...
@@ -393,6 +411,7 @@ int simple_write_begin(struct file *file, struct address_space *mapping,
...
@@ -393,6 +411,7 @@ int simple_write_begin(struct file *file, struct address_space *mapping,
}
}
return
0
;
return
0
;
}
}
EXPORT_SYMBOL
(
simple_write_begin
);
/**
/**
* simple_write_end - .write_end helper for non-block-device FSes
* simple_write_end - .write_end helper for non-block-device FSes
...
@@ -444,6 +463,7 @@ int simple_write_end(struct file *file, struct address_space *mapping,
...
@@ -444,6 +463,7 @@ int simple_write_end(struct file *file, struct address_space *mapping,
return
copied
;
return
copied
;
}
}
EXPORT_SYMBOL
(
simple_write_end
);
/*
/*
* the inodes created here are not hashed. If you use iunique to generate
* the inodes created here are not hashed. If you use iunique to generate
...
@@ -512,6 +532,7 @@ int simple_fill_super(struct super_block *s, unsigned long magic,
...
@@ -512,6 +532,7 @@ int simple_fill_super(struct super_block *s, unsigned long magic,
dput
(
root
);
dput
(
root
);
return
-
ENOMEM
;
return
-
ENOMEM
;
}
}
EXPORT_SYMBOL
(
simple_fill_super
);
static
DEFINE_SPINLOCK
(
pin_fs_lock
);
static
DEFINE_SPINLOCK
(
pin_fs_lock
);
...
@@ -534,6 +555,7 @@ int simple_pin_fs(struct file_system_type *type, struct vfsmount **mount, int *c
...
@@ -534,6 +555,7 @@ int simple_pin_fs(struct file_system_type *type, struct vfsmount **mount, int *c
mntput
(
mnt
);
mntput
(
mnt
);
return
0
;
return
0
;
}
}
EXPORT_SYMBOL
(
simple_pin_fs
);
void
simple_release_fs
(
struct
vfsmount
**
mount
,
int
*
count
)
void
simple_release_fs
(
struct
vfsmount
**
mount
,
int
*
count
)
{
{
...
@@ -545,6 +567,7 @@ void simple_release_fs(struct vfsmount **mount, int *count)
...
@@ -545,6 +567,7 @@ void simple_release_fs(struct vfsmount **mount, int *count)
spin_unlock
(
&
pin_fs_lock
);
spin_unlock
(
&
pin_fs_lock
);
mntput
(
mnt
);
mntput
(
mnt
);
}
}
EXPORT_SYMBOL
(
simple_release_fs
);
/**
/**
* simple_read_from_buffer - copy data from the buffer to user space
* simple_read_from_buffer - copy data from the buffer to user space
...
@@ -579,6 +602,7 @@ ssize_t simple_read_from_buffer(void __user *to, size_t count, loff_t *ppos,
...
@@ -579,6 +602,7 @@ ssize_t simple_read_from_buffer(void __user *to, size_t count, loff_t *ppos,
*
ppos
=
pos
+
count
;
*
ppos
=
pos
+
count
;
return
count
;
return
count
;
}
}
EXPORT_SYMBOL
(
simple_read_from_buffer
);
/**
/**
* simple_write_to_buffer - copy data from user space to the buffer
* simple_write_to_buffer - copy data from user space to the buffer
...
@@ -613,6 +637,7 @@ ssize_t simple_write_to_buffer(void *to, size_t available, loff_t *ppos,
...
@@ -613,6 +637,7 @@ ssize_t simple_write_to_buffer(void *to, size_t available, loff_t *ppos,
*
ppos
=
pos
+
count
;
*
ppos
=
pos
+
count
;
return
count
;
return
count
;
}
}
EXPORT_SYMBOL
(
simple_write_to_buffer
);
/**
/**
* memory_read_from_buffer - copy data from the buffer
* memory_read_from_buffer - copy data from the buffer
...
@@ -644,6 +669,7 @@ ssize_t memory_read_from_buffer(void *to, size_t count, loff_t *ppos,
...
@@ -644,6 +669,7 @@ ssize_t memory_read_from_buffer(void *to, size_t count, loff_t *ppos,
return
count
;
return
count
;
}
}
EXPORT_SYMBOL
(
memory_read_from_buffer
);
/*
/*
* Transaction based IO.
* Transaction based IO.
...
@@ -665,6 +691,7 @@ void simple_transaction_set(struct file *file, size_t n)
...
@@ -665,6 +691,7 @@ void simple_transaction_set(struct file *file, size_t n)
smp_mb
();
smp_mb
();
ar
->
size
=
n
;
ar
->
size
=
n
;
}
}
EXPORT_SYMBOL
(
simple_transaction_set
);
char
*
simple_transaction_get
(
struct
file
*
file
,
const
char
__user
*
buf
,
size_t
size
)
char
*
simple_transaction_get
(
struct
file
*
file
,
const
char
__user
*
buf
,
size_t
size
)
{
{
...
@@ -696,6 +723,7 @@ char *simple_transaction_get(struct file *file, const char __user *buf, size_t s
...
@@ -696,6 +723,7 @@ char *simple_transaction_get(struct file *file, const char __user *buf, size_t s
return
ar
->
data
;
return
ar
->
data
;
}
}
EXPORT_SYMBOL
(
simple_transaction_get
);
ssize_t
simple_transaction_read
(
struct
file
*
file
,
char
__user
*
buf
,
size_t
size
,
loff_t
*
pos
)
ssize_t
simple_transaction_read
(
struct
file
*
file
,
char
__user
*
buf
,
size_t
size
,
loff_t
*
pos
)
{
{
...
@@ -705,12 +733,14 @@ ssize_t simple_transaction_read(struct file *file, char __user *buf, size_t size
...
@@ -705,12 +733,14 @@ ssize_t simple_transaction_read(struct file *file, char __user *buf, size_t size
return
0
;
return
0
;
return
simple_read_from_buffer
(
buf
,
size
,
pos
,
ar
->
data
,
ar
->
size
);
return
simple_read_from_buffer
(
buf
,
size
,
pos
,
ar
->
data
,
ar
->
size
);
}
}
EXPORT_SYMBOL
(
simple_transaction_read
);
int
simple_transaction_release
(
struct
inode
*
inode
,
struct
file
*
file
)
int
simple_transaction_release
(
struct
inode
*
inode
,
struct
file
*
file
)
{
{
free_page
((
unsigned
long
)
file
->
private_data
);
free_page
((
unsigned
long
)
file
->
private_data
);
return
0
;
return
0
;
}
}
EXPORT_SYMBOL
(
simple_transaction_release
);
/* Simple attribute files */
/* Simple attribute files */
...
@@ -746,12 +776,14 @@ int simple_attr_open(struct inode *inode, struct file *file,
...
@@ -746,12 +776,14 @@ int simple_attr_open(struct inode *inode, struct file *file,
return
nonseekable_open
(
inode
,
file
);
return
nonseekable_open
(
inode
,
file
);
}
}
EXPORT_SYMBOL_GPL
(
simple_attr_open
);
int
simple_attr_release
(
struct
inode
*
inode
,
struct
file
*
file
)
int
simple_attr_release
(
struct
inode
*
inode
,
struct
file
*
file
)
{
{
kfree
(
file
->
private_data
);
kfree
(
file
->
private_data
);
return
0
;
return
0
;
}
}
EXPORT_SYMBOL_GPL
(
simple_attr_release
);
/* GPL-only? This? Really? */
/* read from the buffer that is filled with the get function */
/* read from the buffer that is filled with the get function */
ssize_t
simple_attr_read
(
struct
file
*
file
,
char
__user
*
buf
,
ssize_t
simple_attr_read
(
struct
file
*
file
,
char
__user
*
buf
,
...
@@ -787,6 +819,7 @@ ssize_t simple_attr_read(struct file *file, char __user *buf,
...
@@ -787,6 +819,7 @@ ssize_t simple_attr_read(struct file *file, char __user *buf,
mutex_unlock
(
&
attr
->
mutex
);
mutex_unlock
(
&
attr
->
mutex
);
return
ret
;
return
ret
;
}
}
EXPORT_SYMBOL_GPL
(
simple_attr_read
);
/* interpret the buffer as a number to call the set function with */
/* interpret the buffer as a number to call the set function with */
ssize_t
simple_attr_write
(
struct
file
*
file
,
const
char
__user
*
buf
,
ssize_t
simple_attr_write
(
struct
file
*
file
,
const
char
__user
*
buf
,
...
@@ -819,6 +852,7 @@ ssize_t simple_attr_write(struct file *file, const char __user *buf,
...
@@ -819,6 +852,7 @@ ssize_t simple_attr_write(struct file *file, const char __user *buf,
mutex_unlock
(
&
attr
->
mutex
);
mutex_unlock
(
&
attr
->
mutex
);
return
ret
;
return
ret
;
}
}
EXPORT_SYMBOL_GPL
(
simple_attr_write
);
/**
/**
* generic_fh_to_dentry - generic helper for the fh_to_dentry export operation
* generic_fh_to_dentry - generic helper for the fh_to_dentry export operation
...
@@ -957,39 +991,4 @@ int noop_fsync(struct file *file, loff_t start, loff_t end, int datasync)
...
@@ -957,39 +991,4 @@ int noop_fsync(struct file *file, loff_t start, loff_t end, int datasync)
{
{
return
0
;
return
0
;
}
}
EXPORT_SYMBOL
(
dcache_dir_close
);
EXPORT_SYMBOL
(
dcache_dir_lseek
);
EXPORT_SYMBOL
(
dcache_dir_open
);
EXPORT_SYMBOL
(
dcache_readdir
);
EXPORT_SYMBOL
(
generic_read_dir
);
EXPORT_SYMBOL
(
mount_pseudo
);
EXPORT_SYMBOL
(
simple_write_begin
);
EXPORT_SYMBOL
(
simple_write_end
);
EXPORT_SYMBOL
(
simple_dir_inode_operations
);
EXPORT_SYMBOL
(
simple_dir_operations
);
EXPORT_SYMBOL
(
simple_empty
);
EXPORT_SYMBOL
(
simple_fill_super
);
EXPORT_SYMBOL
(
simple_getattr
);
EXPORT_SYMBOL
(
simple_open
);
EXPORT_SYMBOL
(
simple_link
);
EXPORT_SYMBOL
(
simple_lookup
);
EXPORT_SYMBOL
(
simple_pin_fs
);
EXPORT_SYMBOL
(
simple_readpage
);
EXPORT_SYMBOL
(
simple_release_fs
);
EXPORT_SYMBOL
(
simple_rename
);
EXPORT_SYMBOL
(
simple_rmdir
);
EXPORT_SYMBOL
(
simple_statfs
);
EXPORT_SYMBOL
(
noop_fsync
);
EXPORT_SYMBOL
(
noop_fsync
);
EXPORT_SYMBOL
(
simple_unlink
);
EXPORT_SYMBOL
(
simple_read_from_buffer
);
EXPORT_SYMBOL
(
simple_write_to_buffer
);
EXPORT_SYMBOL
(
memory_read_from_buffer
);
EXPORT_SYMBOL
(
simple_transaction_set
);
EXPORT_SYMBOL
(
simple_transaction_get
);
EXPORT_SYMBOL
(
simple_transaction_read
);
EXPORT_SYMBOL
(
simple_transaction_release
);
EXPORT_SYMBOL_GPL
(
simple_attr_open
);
EXPORT_SYMBOL_GPL
(
simple_attr_release
);
EXPORT_SYMBOL_GPL
(
simple_attr_read
);
EXPORT_SYMBOL_GPL
(
simple_attr_write
);
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment