mirror of
git://git.yoctoproject.org/linux-yocto.git
synced 2025-07-05 13:25:20 +02:00
aufs6: base
Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
This commit is contained in:
parent
aac513e6bc
commit
59d1000e12
13
MAINTAINERS
13
MAINTAINERS
|
@ -3320,6 +3320,19 @@ F: Documentation/driver-api/auxiliary_bus.rst
|
||||||
F: drivers/base/auxiliary.c
|
F: drivers/base/auxiliary.c
|
||||||
F: include/linux/auxiliary_bus.h
|
F: include/linux/auxiliary_bus.h
|
||||||
|
|
||||||
|
AUFS (advanced multi layered unification filesystem) FILESYSTEM
|
||||||
|
M: "J. R. Okajima" <hooanon05g@gmail.com>
|
||||||
|
L: aufs-users@lists.sourceforge.net (members only)
|
||||||
|
L: linux-unionfs@vger.kernel.org
|
||||||
|
S: Supported
|
||||||
|
W: http://aufs.sourceforge.net
|
||||||
|
T: git://github.com/sfjro/aufs4-linux.git
|
||||||
|
F: Documentation/ABI/testing/debugfs-aufs
|
||||||
|
F: Documentation/ABI/testing/sysfs-aufs
|
||||||
|
F: Documentation/filesystems/aufs/
|
||||||
|
F: fs/aufs/
|
||||||
|
F: include/uapi/linux/aufs_type.h
|
||||||
|
|
||||||
AUXILIARY DISPLAY DRIVERS
|
AUXILIARY DISPLAY DRIVERS
|
||||||
M: Miguel Ojeda <ojeda@kernel.org>
|
M: Miguel Ojeda <ojeda@kernel.org>
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
|
|
@ -645,6 +645,24 @@ out_putf:
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* for AUFS
|
||||||
|
* no get/put for file.
|
||||||
|
*/
|
||||||
|
struct file *loop_backing_file(struct super_block *sb)
|
||||||
|
{
|
||||||
|
struct file *ret;
|
||||||
|
struct loop_device *l;
|
||||||
|
|
||||||
|
ret = NULL;
|
||||||
|
if (MAJOR(sb->s_dev) == LOOP_MAJOR) {
|
||||||
|
l = sb->s_bdev->bd_disk->private_data;
|
||||||
|
ret = l->lo_backing_file;
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(loop_backing_file);
|
||||||
|
|
||||||
/* loop sysfs attributes */
|
/* loop sysfs attributes */
|
||||||
|
|
||||||
static ssize_t loop_attr_show(struct device *dev, char *page,
|
static ssize_t loop_attr_show(struct device *dev, char *page,
|
||||||
|
|
|
@ -1345,7 +1345,7 @@ enum d_walk_ret {
|
||||||
*
|
*
|
||||||
* The @enter() callbacks are called with d_lock held.
|
* The @enter() callbacks are called with d_lock held.
|
||||||
*/
|
*/
|
||||||
static void d_walk(struct dentry *parent, void *data,
|
void d_walk(struct dentry *parent, void *data,
|
||||||
enum d_walk_ret (*enter)(void *, struct dentry *))
|
enum d_walk_ret (*enter)(void *, struct dentry *))
|
||||||
{
|
{
|
||||||
struct dentry *this_parent;
|
struct dentry *this_parent;
|
||||||
|
|
|
@ -34,7 +34,7 @@
|
||||||
|
|
||||||
#define SETFL_MASK (O_APPEND | O_NONBLOCK | O_NDELAY | O_DIRECT | O_NOATIME)
|
#define SETFL_MASK (O_APPEND | O_NONBLOCK | O_NDELAY | O_DIRECT | O_NOATIME)
|
||||||
|
|
||||||
static int setfl(int fd, struct file * filp, unsigned long arg)
|
int setfl(int fd, struct file *filp, unsigned long arg)
|
||||||
{
|
{
|
||||||
struct inode * inode = file_inode(filp);
|
struct inode * inode = file_inode(filp);
|
||||||
int error = 0;
|
int error = 0;
|
||||||
|
@ -64,6 +64,8 @@ static int setfl(int fd, struct file * filp, unsigned long arg)
|
||||||
|
|
||||||
if (filp->f_op->check_flags)
|
if (filp->f_op->check_flags)
|
||||||
error = filp->f_op->check_flags(arg);
|
error = filp->f_op->check_flags(arg);
|
||||||
|
if (!error && filp->f_op->setfl)
|
||||||
|
error = filp->f_op->setfl(filp, arg);
|
||||||
if (error)
|
if (error)
|
||||||
return error;
|
return error;
|
||||||
|
|
||||||
|
|
|
@ -872,6 +872,12 @@ static inline int check_mnt(struct mount *mnt)
|
||||||
return mnt->mnt_ns == current->nsproxy->mnt_ns;
|
return mnt->mnt_ns == current->nsproxy->mnt_ns;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* for aufs, CONFIG_AUFS_BR_FUSE */
|
||||||
|
int is_current_mnt_ns(struct vfsmount *mnt)
|
||||||
|
{
|
||||||
|
return check_mnt(real_mount(mnt));
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* vfsmount lock must be held for write
|
* vfsmount lock must be held for write
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -928,8 +928,8 @@ static int warn_unsupported(struct file *file, const char *op)
|
||||||
/*
|
/*
|
||||||
* Attempt to initiate a splice from pipe to file.
|
* Attempt to initiate a splice from pipe to file.
|
||||||
*/
|
*/
|
||||||
static long do_splice_from(struct pipe_inode_info *pipe, struct file *out,
|
long do_splice_from(struct pipe_inode_info *pipe, struct file *out,
|
||||||
loff_t *ppos, size_t len, unsigned int flags)
|
loff_t *ppos, size_t len, unsigned int flags)
|
||||||
{
|
{
|
||||||
if (unlikely(!out->f_op->splice_write))
|
if (unlikely(!out->f_op->splice_write))
|
||||||
return warn_unsupported(out, "write");
|
return warn_unsupported(out, "write");
|
||||||
|
|
|
@ -1068,6 +1068,7 @@ extern void fasync_free(struct fasync_struct *);
|
||||||
/* can be called from interrupts */
|
/* can be called from interrupts */
|
||||||
extern void kill_fasync(struct fasync_struct **, int, int);
|
extern void kill_fasync(struct fasync_struct **, int, int);
|
||||||
|
|
||||||
|
extern int setfl(int fd, struct file *filp, unsigned long arg);
|
||||||
extern void __f_setown(struct file *filp, struct pid *, enum pid_type, int force);
|
extern void __f_setown(struct file *filp, struct pid *, enum pid_type, int force);
|
||||||
extern int f_setown(struct file *filp, unsigned long arg, int force);
|
extern int f_setown(struct file *filp, unsigned long arg, int force);
|
||||||
extern void f_delown(struct file *filp);
|
extern void f_delown(struct file *filp);
|
||||||
|
@ -1794,6 +1795,7 @@ struct file_operations {
|
||||||
int (*lock) (struct file *, int, struct file_lock *);
|
int (*lock) (struct file *, int, struct file_lock *);
|
||||||
unsigned long (*get_unmapped_area)(struct file *, unsigned long, unsigned long, unsigned long, unsigned long);
|
unsigned long (*get_unmapped_area)(struct file *, unsigned long, unsigned long, unsigned long, unsigned long);
|
||||||
int (*check_flags)(int);
|
int (*check_flags)(int);
|
||||||
|
int (*setfl)(struct file *, unsigned long);
|
||||||
int (*flock) (struct file *, int, struct file_lock *);
|
int (*flock) (struct file *, int, struct file_lock *);
|
||||||
ssize_t (*splice_write)(struct pipe_inode_info *, struct file *, loff_t *, size_t, unsigned int);
|
ssize_t (*splice_write)(struct pipe_inode_info *, struct file *, loff_t *, size_t, unsigned int);
|
||||||
ssize_t (*splice_read)(struct file *, loff_t *, struct pipe_inode_info *, size_t, unsigned int);
|
ssize_t (*splice_read)(struct file *, loff_t *, struct pipe_inode_info *, size_t, unsigned int);
|
||||||
|
|
|
@ -249,6 +249,8 @@ static inline int lockdep_match_key(struct lockdep_map *lock,
|
||||||
return lock->key == key;
|
return lock->key == key;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct lock_class *lockdep_hlock_class(struct held_lock *hlock);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Acquire a lock.
|
* Acquire a lock.
|
||||||
*
|
*
|
||||||
|
|
|
@ -7,12 +7,15 @@ struct mnt_namespace;
|
||||||
struct fs_struct;
|
struct fs_struct;
|
||||||
struct user_namespace;
|
struct user_namespace;
|
||||||
struct ns_common;
|
struct ns_common;
|
||||||
|
struct vfsmount;
|
||||||
|
|
||||||
extern struct mnt_namespace *copy_mnt_ns(unsigned long, struct mnt_namespace *,
|
extern struct mnt_namespace *copy_mnt_ns(unsigned long, struct mnt_namespace *,
|
||||||
struct user_namespace *, struct fs_struct *);
|
struct user_namespace *, struct fs_struct *);
|
||||||
extern void put_mnt_ns(struct mnt_namespace *ns);
|
extern void put_mnt_ns(struct mnt_namespace *ns);
|
||||||
extern struct ns_common *from_mnt_ns(struct mnt_namespace *);
|
extern struct ns_common *from_mnt_ns(struct mnt_namespace *);
|
||||||
|
|
||||||
|
extern int is_current_mnt_ns(struct vfsmount *mnt);
|
||||||
|
|
||||||
extern const struct file_operations proc_mounts_operations;
|
extern const struct file_operations proc_mounts_operations;
|
||||||
extern const struct file_operations proc_mountinfo_operations;
|
extern const struct file_operations proc_mountinfo_operations;
|
||||||
extern const struct file_operations proc_mountstats_operations;
|
extern const struct file_operations proc_mountstats_operations;
|
||||||
|
|
|
@ -99,4 +99,10 @@ extern void splice_shrink_spd(struct splice_pipe_desc *);
|
||||||
|
|
||||||
extern const struct pipe_buf_operations page_cache_pipe_buf_ops;
|
extern const struct pipe_buf_operations page_cache_pipe_buf_ops;
|
||||||
extern const struct pipe_buf_operations default_pipe_buf_ops;
|
extern const struct pipe_buf_operations default_pipe_buf_ops;
|
||||||
|
|
||||||
|
extern long do_splice_from(struct pipe_inode_info *pipe, struct file *out,
|
||||||
|
loff_t *ppos, size_t len, unsigned int flags);
|
||||||
|
extern long do_splice_to(struct file *in, loff_t *ppos,
|
||||||
|
struct pipe_inode_info *pipe, size_t len,
|
||||||
|
unsigned int flags);
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -218,7 +218,7 @@ unsigned long max_lock_class_idx;
|
||||||
struct lock_class lock_classes[MAX_LOCKDEP_KEYS];
|
struct lock_class lock_classes[MAX_LOCKDEP_KEYS];
|
||||||
DECLARE_BITMAP(lock_classes_in_use, MAX_LOCKDEP_KEYS);
|
DECLARE_BITMAP(lock_classes_in_use, MAX_LOCKDEP_KEYS);
|
||||||
|
|
||||||
static inline struct lock_class *hlock_class(struct held_lock *hlock)
|
inline struct lock_class *lockdep_hlock_class(struct held_lock *hlock)
|
||||||
{
|
{
|
||||||
unsigned int class_idx = hlock->class_idx;
|
unsigned int class_idx = hlock->class_idx;
|
||||||
|
|
||||||
|
@ -239,6 +239,7 @@ static inline struct lock_class *hlock_class(struct held_lock *hlock)
|
||||||
*/
|
*/
|
||||||
return lock_classes + class_idx;
|
return lock_classes + class_idx;
|
||||||
}
|
}
|
||||||
|
#define hlock_class(hlock) lockdep_hlock_class(hlock)
|
||||||
|
|
||||||
#ifdef CONFIG_LOCK_STAT
|
#ifdef CONFIG_LOCK_STAT
|
||||||
static DEFINE_PER_CPU(struct lock_class_stats[MAX_LOCKDEP_KEYS], cpu_lock_stats);
|
static DEFINE_PER_CPU(struct lock_class_stats[MAX_LOCKDEP_KEYS], cpu_lock_stats);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user