Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
adam.huang
Aufs5 Standalone
Commits
0d0b7ef4
Commit
0d0b7ef4
authored
May 28, 2019
by
J. R. Okajima
Browse files
Merge branch 'aufs5.0/30stdalone' into aufs5.1/30stdalone
parents
e37a6b3f
18798024
Changes
5
Show whitespace changes
Inline
Side-by-side
Documentation/filesystems/aufs/README
View file @
0d0b7ef4
...
@@ -249,6 +249,13 @@ optional. When you meet some problems, they will help you.
...
@@ -249,6 +249,13 @@ optional. When you meet some problems, they will help you.
Supports a nested loopback mount in a branch-fs. This patch is
Supports a nested loopback mount in a branch-fs. This patch is
unnecessary until aufs produces a message like "you may want to try
unnecessary until aufs produces a message like "you may want to try
another patch for loopback file".
another patch for loopback file".
- proc_mounts.patch
When there are many mountpoints and many mount(2)/umount(2) are
running, then /proc/mounts may not show the all mountpoints. This
patch makes /proc/mounts always show the full mountpoints list.
If you don't want to apply this patch and meet such problem, then you
need to increase the value of 'ProcMounts_Times' make-variable in
aufs-util.git as a second best solution.
- vfs-ino.patch
- vfs-ino.patch
Modifies a system global kernel internal function get_next_ino() in
Modifies a system global kernel internal function get_next_ino() in
order to stop assigning 0 for an inode-number. Not directly related to
order to stop assigning 0 for an inode-number. Not directly related to
...
...
fs/aufs/branch.h
View file @
0d0b7ef4
...
@@ -225,7 +225,8 @@ int au_br_stfs(struct au_branch *br, struct aufs_stfs *stfs);
...
@@ -225,7 +225,8 @@ int au_br_stfs(struct au_branch *br, struct aufs_stfs *stfs);
static
const
loff_t
au_loff_max
=
LLONG_MAX
;
static
const
loff_t
au_loff_max
=
LLONG_MAX
;
aufs_bindex_t
au_xi_root
(
struct
super_block
*
sb
,
struct
dentry
*
dentry
);
aufs_bindex_t
au_xi_root
(
struct
super_block
*
sb
,
struct
dentry
*
dentry
);
struct
file
*
au_xino_create
(
struct
super_block
*
sb
,
char
*
fpath
,
int
silent
);
struct
file
*
au_xino_create
(
struct
super_block
*
sb
,
char
*
fpath
,
int
silent
,
int
wbrtop
);
struct
file
*
au_xino_create2
(
struct
super_block
*
sb
,
struct
path
*
base
,
struct
file
*
au_xino_create2
(
struct
super_block
*
sb
,
struct
path
*
base
,
struct
file
*
copy_src
);
struct
file
*
copy_src
);
struct
au_xi_new
{
struct
au_xi_new
{
...
...
fs/aufs/loop.h
View file @
0d0b7ef4
...
@@ -40,7 +40,7 @@ void au_warn_loopback(struct super_block *h_sb);
...
@@ -40,7 +40,7 @@ void au_warn_loopback(struct super_block *h_sb);
int
au_loopback_init
(
void
);
int
au_loopback_init
(
void
);
void
au_loopback_fin
(
void
);
void
au_loopback_fin
(
void
);
#else
#else
AuStub
(
struct
file
*
,
loop_backing_file
,
return
NULL
)
AuStub
(
struct
file
*
,
loop_backing_file
,
return
NULL
,
struct
super_block
*
sb
)
AuStubInt0
(
au_test_loopback_overlap
,
struct
super_block
*
sb
,
AuStubInt0
(
au_test_loopback_overlap
,
struct
super_block
*
sb
,
struct
dentry
*
h_adding
)
struct
dentry
*
h_adding
)
...
...
fs/aufs/opts.c
View file @
0d0b7ef4
...
@@ -918,7 +918,7 @@ static int au_opts_parse_xino(struct super_block *sb, struct au_opt_xino *xino,
...
@@ -918,7 +918,7 @@ static int au_opts_parse_xino(struct super_block *sb, struct au_opt_xino *xino,
int
err
;
int
err
;
struct
file
*
file
;
struct
file
*
file
;
file
=
au_xino_create
(
sb
,
args
[
0
].
from
,
/*silent*/
0
);
file
=
au_xino_create
(
sb
,
args
[
0
].
from
,
/*silent*/
0
,
/*wbrtop*/
0
);
err
=
PTR_ERR
(
file
);
err
=
PTR_ERR
(
file
);
if
(
IS_ERR
(
file
))
if
(
IS_ERR
(
file
))
goto
out
;
goto
out
;
...
...
fs/aufs/xino.c
View file @
0d0b7ef4
...
@@ -160,22 +160,28 @@ static void au_xino_unlock_dir(struct au_xino_lock_dir *ldir)
...
@@ -160,22 +160,28 @@ static void au_xino_unlock_dir(struct au_xino_lock_dir *ldir)
/*
/*
* create and set a new xino file
* create and set a new xino file
*/
*/
struct
file
*
au_xino_create
(
struct
super_block
*
sb
,
char
*
fpath
,
int
silent
)
struct
file
*
au_xino_create
(
struct
super_block
*
sb
,
char
*
fpath
,
int
silent
,
int
wbrtop
)
{
{
struct
file
*
file
;
struct
file
*
file
;
struct
dentry
*
h_parent
,
*
d
;
struct
dentry
*
h_parent
,
*
d
;
struct
inode
*
h_dir
,
*
inode
;
struct
inode
*
h_dir
,
*
inode
;
int
err
;
int
err
;
static
DEFINE_MUTEX
(
mtx
);
/*
/*
* at mount-time, and the xino file is the default path,
* at mount-time, and the xino file is the default path,
* hnotify is disabled so we have no notify events to ignore.
* hnotify is disabled so we have no notify events to ignore.
* when a user specified the xino, we cannot get au_hdir to be ignored.
* when a user specified the xino, we cannot get au_hdir to be ignored.
*/
*/
if
(
!
wbrtop
)
mutex_lock
(
&
mtx
);
file
=
vfsub_filp_open
(
fpath
,
O_RDWR
|
O_CREAT
|
O_EXCL
|
O_LARGEFILE
file
=
vfsub_filp_open
(
fpath
,
O_RDWR
|
O_CREAT
|
O_EXCL
|
O_LARGEFILE
/* | __FMODE_NONOTIFY */
,
/* | __FMODE_NONOTIFY */
,
0666
);
0666
);
if
(
IS_ERR
(
file
))
{
if
(
IS_ERR
(
file
))
{
if
(
!
wbrtop
)
mutex_unlock
(
&
mtx
);
if
(
!
silent
)
if
(
!
silent
)
pr_err
(
"open %s(%ld)
\n
"
,
fpath
,
PTR_ERR
(
file
));
pr_err
(
"open %s(%ld)
\n
"
,
fpath
,
PTR_ERR
(
file
));
return
file
;
return
file
;
...
@@ -185,6 +191,8 @@ struct file *au_xino_create(struct super_block *sb, char *fpath, int silent)
...
@@ -185,6 +191,8 @@ struct file *au_xino_create(struct super_block *sb, char *fpath, int silent)
err
=
0
;
err
=
0
;
d
=
file
->
f_path
.
dentry
;
d
=
file
->
f_path
.
dentry
;
h_parent
=
au_dget_parent_lock
(
d
,
AuLsc_I_PARENT
);
h_parent
=
au_dget_parent_lock
(
d
,
AuLsc_I_PARENT
);
if
(
!
wbrtop
)
mutex_unlock
(
&
mtx
);
/* mnt_want_write() is unnecessary here */
/* mnt_want_write() is unnecessary here */
h_dir
=
d_inode
(
h_parent
);
h_dir
=
d_inode
(
h_parent
);
inode
=
file_inode
(
file
);
inode
=
file_inode
(
file
);
...
@@ -1667,11 +1675,12 @@ struct file *au_xino_def(struct super_block *sb)
...
@@ -1667,11 +1675,12 @@ struct file *au_xino_def(struct super_block *sb)
if
(
!
IS_ERR
(
p
))
{
if
(
!
IS_ERR
(
p
))
{
strcat
(
p
,
"/"
AUFS_XINO_FNAME
);
strcat
(
p
,
"/"
AUFS_XINO_FNAME
);
AuDbg
(
"%s
\n
"
,
p
);
AuDbg
(
"%s
\n
"
,
p
);
file
=
au_xino_create
(
sb
,
p
,
/*silent*/
0
);
file
=
au_xino_create
(
sb
,
p
,
/*silent*/
0
,
/*wbrtop*/
1
);
}
}
free_page
((
unsigned
long
)
page
);
free_page
((
unsigned
long
)
page
);
}
else
{
}
else
{
file
=
au_xino_create
(
sb
,
AUFS_XINO_DEFPATH
,
/*silent*/
0
);
file
=
au_xino_create
(
sb
,
AUFS_XINO_DEFPATH
,
/*silent*/
0
,
/*wbrtop*/
0
);
if
(
IS_ERR
(
file
))
if
(
IS_ERR
(
file
))
goto
out
;
goto
out
;
h_sb
=
file
->
f_path
.
dentry
->
d_sb
;
h_sb
=
file
->
f_path
.
dentry
->
d_sb
;
...
...
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