forked from Minki/linux
Merge branch 'for-linus2' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
* 'for-linus2' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (165 commits) reiserfs: Properly display mount options in /proc/mounts vfs: prevent remount read-only if pending removes vfs: count unlinked inodes vfs: protect remounting superblock read-only vfs: keep list of mounts for each superblock vfs: switch ->show_options() to struct dentry * vfs: switch ->show_path() to struct dentry * vfs: switch ->show_devname() to struct dentry * vfs: switch ->show_stats to struct dentry * switch security_path_chmod() to struct path * vfs: prefer ->dentry->d_sb to ->mnt->mnt_sb vfs: trim includes a bit switch mnt_namespace ->root to struct mount vfs: take /proc/*/mounts and friends to fs/proc_namespace.c vfs: opencode mntget() mnt_set_mountpoint() vfs: spread struct mount - remaining argument of next_mnt() vfs: move fsnotify junk to struct mount vfs: move mnt_devname vfs: move mnt_list to struct mount vfs: switch pnode.h macros to struct mount * ...
This commit is contained in:
commit
972b2c7199
@ -37,15 +37,15 @@ d_manage: no no yes (ref-walk) maybe
|
||||
|
||||
--------------------------- inode_operations ---------------------------
|
||||
prototypes:
|
||||
int (*create) (struct inode *,struct dentry *,int, struct nameidata *);
|
||||
int (*create) (struct inode *,struct dentry *,umode_t, struct nameidata *);
|
||||
struct dentry * (*lookup) (struct inode *,struct dentry *, struct nameid
|
||||
ata *);
|
||||
int (*link) (struct dentry *,struct inode *,struct dentry *);
|
||||
int (*unlink) (struct inode *,struct dentry *);
|
||||
int (*symlink) (struct inode *,struct dentry *,const char *);
|
||||
int (*mkdir) (struct inode *,struct dentry *,int);
|
||||
int (*mkdir) (struct inode *,struct dentry *,umode_t);
|
||||
int (*rmdir) (struct inode *,struct dentry *);
|
||||
int (*mknod) (struct inode *,struct dentry *,int,dev_t);
|
||||
int (*mknod) (struct inode *,struct dentry *,umode_t,dev_t);
|
||||
int (*rename) (struct inode *, struct dentry *,
|
||||
struct inode *, struct dentry *);
|
||||
int (*readlink) (struct dentry *, char __user *,int);
|
||||
@ -117,7 +117,7 @@ prototypes:
|
||||
int (*statfs) (struct dentry *, struct kstatfs *);
|
||||
int (*remount_fs) (struct super_block *, int *, char *);
|
||||
void (*umount_begin) (struct super_block *);
|
||||
int (*show_options)(struct seq_file *, struct vfsmount *);
|
||||
int (*show_options)(struct seq_file *, struct dentry *);
|
||||
ssize_t (*quota_read)(struct super_block *, int, char *, size_t, loff_t);
|
||||
ssize_t (*quota_write)(struct super_block *, int, const char *, size_t, loff_t);
|
||||
int (*bdev_try_to_free_page)(struct super_block*, struct page*, gfp_t);
|
||||
|
@ -192,7 +192,7 @@ attribute value uses the store_attribute() method.
|
||||
struct configfs_attribute {
|
||||
char *ca_name;
|
||||
struct module *ca_owner;
|
||||
mode_t ca_mode;
|
||||
umode_t ca_mode;
|
||||
};
|
||||
|
||||
When a config_item wants an attribute to appear as a file in the item's
|
||||
|
@ -35,7 +35,7 @@ described below will work.
|
||||
|
||||
The most general way to create a file within a debugfs directory is with:
|
||||
|
||||
struct dentry *debugfs_create_file(const char *name, mode_t mode,
|
||||
struct dentry *debugfs_create_file(const char *name, umode_t mode,
|
||||
struct dentry *parent, void *data,
|
||||
const struct file_operations *fops);
|
||||
|
||||
@ -53,13 +53,13 @@ actually necessary; the debugfs code provides a number of helper functions
|
||||
for simple situations. Files containing a single integer value can be
|
||||
created with any of:
|
||||
|
||||
struct dentry *debugfs_create_u8(const char *name, mode_t mode,
|
||||
struct dentry *debugfs_create_u8(const char *name, umode_t mode,
|
||||
struct dentry *parent, u8 *value);
|
||||
struct dentry *debugfs_create_u16(const char *name, mode_t mode,
|
||||
struct dentry *debugfs_create_u16(const char *name, umode_t mode,
|
||||
struct dentry *parent, u16 *value);
|
||||
struct dentry *debugfs_create_u32(const char *name, mode_t mode,
|
||||
struct dentry *debugfs_create_u32(const char *name, umode_t mode,
|
||||
struct dentry *parent, u32 *value);
|
||||
struct dentry *debugfs_create_u64(const char *name, mode_t mode,
|
||||
struct dentry *debugfs_create_u64(const char *name, umode_t mode,
|
||||
struct dentry *parent, u64 *value);
|
||||
|
||||
These files support both reading and writing the given value; if a specific
|
||||
@ -67,13 +67,13 @@ file should not be written to, simply set the mode bits accordingly. The
|
||||
values in these files are in decimal; if hexadecimal is more appropriate,
|
||||
the following functions can be used instead:
|
||||
|
||||
struct dentry *debugfs_create_x8(const char *name, mode_t mode,
|
||||
struct dentry *debugfs_create_x8(const char *name, umode_t mode,
|
||||
struct dentry *parent, u8 *value);
|
||||
struct dentry *debugfs_create_x16(const char *name, mode_t mode,
|
||||
struct dentry *debugfs_create_x16(const char *name, umode_t mode,
|
||||
struct dentry *parent, u16 *value);
|
||||
struct dentry *debugfs_create_x32(const char *name, mode_t mode,
|
||||
struct dentry *debugfs_create_x32(const char *name, umode_t mode,
|
||||
struct dentry *parent, u32 *value);
|
||||
struct dentry *debugfs_create_x64(const char *name, mode_t mode,
|
||||
struct dentry *debugfs_create_x64(const char *name, umode_t mode,
|
||||
struct dentry *parent, u64 *value);
|
||||
|
||||
These functions are useful as long as the developer knows the size of the
|
||||
@ -81,7 +81,7 @@ value to be exported. Some types can have different widths on different
|
||||
architectures, though, complicating the situation somewhat. There is a
|
||||
function meant to help out in one special case:
|
||||
|
||||
struct dentry *debugfs_create_size_t(const char *name, mode_t mode,
|
||||
struct dentry *debugfs_create_size_t(const char *name, umode_t mode,
|
||||
struct dentry *parent,
|
||||
size_t *value);
|
||||
|
||||
@ -90,7 +90,7 @@ a variable of type size_t.
|
||||
|
||||
Boolean values can be placed in debugfs with:
|
||||
|
||||
struct dentry *debugfs_create_bool(const char *name, mode_t mode,
|
||||
struct dentry *debugfs_create_bool(const char *name, umode_t mode,
|
||||
struct dentry *parent, u32 *value);
|
||||
|
||||
A read on the resulting file will yield either Y (for non-zero values) or
|
||||
@ -105,7 +105,7 @@ this structure and function:
|
||||
unsigned long size;
|
||||
};
|
||||
|
||||
struct dentry *debugfs_create_blob(const char *name, mode_t mode,
|
||||
struct dentry *debugfs_create_blob(const char *name, umode_t mode,
|
||||
struct dentry *parent,
|
||||
struct debugfs_blob_wrapper *blob);
|
||||
|
||||
|
@ -70,7 +70,7 @@ An attribute definition is simply:
|
||||
struct attribute {
|
||||
char * name;
|
||||
struct module *owner;
|
||||
mode_t mode;
|
||||
umode_t mode;
|
||||
};
|
||||
|
||||
|
||||
|
@ -225,7 +225,7 @@ struct super_operations {
|
||||
void (*clear_inode) (struct inode *);
|
||||
void (*umount_begin) (struct super_block *);
|
||||
|
||||
int (*show_options)(struct seq_file *, struct vfsmount *);
|
||||
int (*show_options)(struct seq_file *, struct dentry *);
|
||||
|
||||
ssize_t (*quota_read)(struct super_block *, int, char *, size_t, loff_t);
|
||||
ssize_t (*quota_write)(struct super_block *, int, const char *, size_t, loff_t);
|
||||
@ -341,14 +341,14 @@ This describes how the VFS can manipulate an inode in your
|
||||
filesystem. As of kernel 2.6.22, the following members are defined:
|
||||
|
||||
struct inode_operations {
|
||||
int (*create) (struct inode *,struct dentry *,int, struct nameidata *);
|
||||
int (*create) (struct inode *,struct dentry *, umode_t, struct nameidata *);
|
||||
struct dentry * (*lookup) (struct inode *,struct dentry *, struct nameidata *);
|
||||
int (*link) (struct dentry *,struct inode *,struct dentry *);
|
||||
int (*unlink) (struct inode *,struct dentry *);
|
||||
int (*symlink) (struct inode *,struct dentry *,const char *);
|
||||
int (*mkdir) (struct inode *,struct dentry *,int);
|
||||
int (*mkdir) (struct inode *,struct dentry *,umode_t);
|
||||
int (*rmdir) (struct inode *,struct dentry *);
|
||||
int (*mknod) (struct inode *,struct dentry *,int,dev_t);
|
||||
int (*mknod) (struct inode *,struct dentry *,umode_t,dev_t);
|
||||
int (*rename) (struct inode *, struct dentry *,
|
||||
struct inode *, struct dentry *);
|
||||
int (*readlink) (struct dentry *, char __user *,int);
|
||||
|
@ -1,28 +1 @@
|
||||
#ifndef _ALPHA_IPCBUF_H
|
||||
#define _ALPHA_IPCBUF_H
|
||||
|
||||
/*
|
||||
* The ipc64_perm structure for alpha architecture.
|
||||
* Note extra padding because this structure is passed back and forth
|
||||
* between kernel and user space.
|
||||
*
|
||||
* Pad space is left for:
|
||||
* - 32-bit seq
|
||||
* - 2 miscellaneous 64-bit values
|
||||
*/
|
||||
|
||||
struct ipc64_perm
|
||||
{
|
||||
__kernel_key_t key;
|
||||
__kernel_uid_t uid;
|
||||
__kernel_gid_t gid;
|
||||
__kernel_uid_t cuid;
|
||||
__kernel_gid_t cgid;
|
||||
__kernel_mode_t mode;
|
||||
unsigned short seq;
|
||||
unsigned short __pad1;
|
||||
unsigned long __unused1;
|
||||
unsigned long __unused2;
|
||||
};
|
||||
|
||||
#endif /* _ALPHA_IPCBUF_H */
|
||||
#include <asm-generic/ipcbuf.h>
|
||||
|
@ -15,9 +15,4 @@
|
||||
#include <asm-generic/int-l64.h>
|
||||
#endif
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
|
||||
typedef unsigned int umode_t;
|
||||
|
||||
#endif /* __ASSEMBLY__ */
|
||||
#endif /* _ALPHA_TYPES_H */
|
||||
|
@ -1,29 +1 @@
|
||||
#ifndef __ASMARM_IPCBUF_H
|
||||
#define __ASMARM_IPCBUF_H
|
||||
|
||||
/*
|
||||
* The ipc64_perm structure for arm architecture.
|
||||
* Note extra padding because this structure is passed back and forth
|
||||
* between kernel and user space.
|
||||
*
|
||||
* Pad space is left for:
|
||||
* - 32-bit mode_t and seq
|
||||
* - 2 miscellaneous 32-bit values
|
||||
*/
|
||||
|
||||
struct ipc64_perm
|
||||
{
|
||||
__kernel_key_t key;
|
||||
__kernel_uid32_t uid;
|
||||
__kernel_gid32_t gid;
|
||||
__kernel_uid32_t cuid;
|
||||
__kernel_gid32_t cgid;
|
||||
__kernel_mode_t mode;
|
||||
unsigned short __pad1;
|
||||
unsigned short seq;
|
||||
unsigned short __pad2;
|
||||
unsigned long __unused1;
|
||||
unsigned long __unused2;
|
||||
};
|
||||
|
||||
#endif /* __ASMARM_IPCBUF_H */
|
||||
#include <asm-generic/ipcbuf.h>
|
||||
|
@ -3,12 +3,6 @@
|
||||
|
||||
#include <asm-generic/int-ll64.h>
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
|
||||
typedef unsigned short umode_t;
|
||||
|
||||
#endif /* __ASSEMBLY__ */
|
||||
|
||||
/*
|
||||
* These aren't exported outside the kernel to avoid name space clashes
|
||||
*/
|
||||
|
@ -215,7 +215,7 @@ static const struct file_operations debug_ops = {
|
||||
.llseek = default_llseek,
|
||||
};
|
||||
|
||||
static void debug_create(const char *name, mode_t mode,
|
||||
static void debug_create(const char *name, umode_t mode,
|
||||
struct dentry *dent,
|
||||
int (*fill)(char *buf, int max))
|
||||
{
|
||||
|
@ -1,29 +1 @@
|
||||
#ifndef __ASM_AVR32_IPCBUF_H
|
||||
#define __ASM_AVR32_IPCBUF_H
|
||||
|
||||
/*
|
||||
* The user_ipc_perm structure for AVR32 architecture.
|
||||
* Note extra padding because this structure is passed back and forth
|
||||
* between kernel and user space.
|
||||
*
|
||||
* Pad space is left for:
|
||||
* - 32-bit mode_t and seq
|
||||
* - 2 miscellaneous 32-bit values
|
||||
*/
|
||||
|
||||
struct ipc64_perm
|
||||
{
|
||||
__kernel_key_t key;
|
||||
__kernel_uid32_t uid;
|
||||
__kernel_gid32_t gid;
|
||||
__kernel_uid32_t cuid;
|
||||
__kernel_gid32_t cgid;
|
||||
__kernel_mode_t mode;
|
||||
unsigned short __pad1;
|
||||
unsigned short seq;
|
||||
unsigned short __pad2;
|
||||
unsigned long __unused1;
|
||||
unsigned long __unused2;
|
||||
};
|
||||
|
||||
#endif /* __ASM_AVR32_IPCBUF_H */
|
||||
#include <asm-generic/ipcbuf.h>
|
||||
|
@ -10,12 +10,6 @@
|
||||
|
||||
#include <asm-generic/int-ll64.h>
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
|
||||
typedef unsigned short umode_t;
|
||||
|
||||
#endif /* __ASSEMBLY__ */
|
||||
|
||||
/*
|
||||
* These aren't exported outside the kernel to avoid name space clashes
|
||||
*/
|
||||
|
@ -1,29 +1 @@
|
||||
#ifndef __CRIS_IPCBUF_H__
|
||||
#define __CRIS_IPCBUF_H__
|
||||
|
||||
/*
|
||||
* The user_ipc_perm structure for CRIS architecture.
|
||||
* Note extra padding because this structure is passed back and forth
|
||||
* between kernel and user space.
|
||||
*
|
||||
* Pad space is left for:
|
||||
* - 32-bit mode_t and seq
|
||||
* - 2 miscellaneous 32-bit values
|
||||
*/
|
||||
|
||||
struct ipc64_perm
|
||||
{
|
||||
__kernel_key_t key;
|
||||
__kernel_uid32_t uid;
|
||||
__kernel_gid32_t gid;
|
||||
__kernel_uid32_t cuid;
|
||||
__kernel_gid32_t cgid;
|
||||
__kernel_mode_t mode;
|
||||
unsigned short __pad1;
|
||||
unsigned short seq;
|
||||
unsigned short __pad2;
|
||||
unsigned long __unused1;
|
||||
unsigned long __unused2;
|
||||
};
|
||||
|
||||
#endif /* __CRIS_IPCBUF_H__ */
|
||||
#include <asm-generic/ipcbuf.h>
|
||||
|
@ -3,12 +3,6 @@
|
||||
|
||||
#include <asm-generic/int-ll64.h>
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
|
||||
typedef unsigned short umode_t;
|
||||
|
||||
#endif /* __ASSEMBLY__ */
|
||||
|
||||
/*
|
||||
* These aren't exported outside the kernel to avoid name space clashes
|
||||
*/
|
||||
|
@ -1,30 +1 @@
|
||||
#ifndef __ASM_IPCBUF_H__
|
||||
#define __ASM_IPCBUF_H__
|
||||
|
||||
/*
|
||||
* The user_ipc_perm structure for FR-V architecture.
|
||||
* Note extra padding because this structure is passed back and forth
|
||||
* between kernel and user space.
|
||||
*
|
||||
* Pad space is left for:
|
||||
* - 32-bit mode_t and seq
|
||||
* - 2 miscellaneous 32-bit values
|
||||
*/
|
||||
|
||||
struct ipc64_perm
|
||||
{
|
||||
__kernel_key_t key;
|
||||
__kernel_uid32_t uid;
|
||||
__kernel_gid32_t gid;
|
||||
__kernel_uid32_t cuid;
|
||||
__kernel_gid32_t cgid;
|
||||
__kernel_mode_t mode;
|
||||
unsigned short __pad1;
|
||||
unsigned short seq;
|
||||
unsigned short __pad2;
|
||||
unsigned long __unused1;
|
||||
unsigned long __unused2;
|
||||
};
|
||||
|
||||
#endif /* __ASM_IPCBUF_H__ */
|
||||
|
||||
#include <asm-generic/ipcbuf.h>
|
||||
|
@ -14,12 +14,6 @@
|
||||
|
||||
#include <asm-generic/int-ll64.h>
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
|
||||
typedef unsigned short umode_t;
|
||||
|
||||
#endif /* __ASSEMBLY__ */
|
||||
|
||||
/*
|
||||
* These aren't exported outside the kernel to avoid name space clashes
|
||||
*/
|
||||
|
@ -1,29 +1 @@
|
||||
#ifndef __H8300_IPCBUF_H__
|
||||
#define __H8300_IPCBUF_H__
|
||||
|
||||
/*
|
||||
* The user_ipc_perm structure for H8/300 architecture.
|
||||
* Note extra padding because this structure is passed back and forth
|
||||
* between kernel and user space.
|
||||
*
|
||||
* Pad space is left for:
|
||||
* - 32-bit mode_t and seq
|
||||
* - 2 miscellaneous 32-bit values
|
||||
*/
|
||||
|
||||
struct ipc64_perm
|
||||
{
|
||||
__kernel_key_t key;
|
||||
__kernel_uid32_t uid;
|
||||
__kernel_gid32_t gid;
|
||||
__kernel_uid32_t cuid;
|
||||
__kernel_gid32_t cgid;
|
||||
__kernel_mode_t mode;
|
||||
unsigned short __pad1;
|
||||
unsigned short seq;
|
||||
unsigned short __pad2;
|
||||
unsigned long __unused1;
|
||||
unsigned long __unused2;
|
||||
};
|
||||
|
||||
#endif /* __H8300_IPCBUF_H__ */
|
||||
#include <asm-generic/ipcbuf.h>
|
||||
|
@ -3,27 +3,10 @@
|
||||
|
||||
#include <asm-generic/int-ll64.h>
|
||||
|
||||
#if !defined(__ASSEMBLY__)
|
||||
|
||||
/*
|
||||
* This file is never included by application software unless
|
||||
* explicitly requested (e.g., via linux/types.h) in which case the
|
||||
* application is Linux specific so (user-) name space pollution is
|
||||
* not a major issue. However, for interoperability, libraries still
|
||||
* need to be careful to avoid a name clashes.
|
||||
*/
|
||||
|
||||
typedef unsigned short umode_t;
|
||||
|
||||
/*
|
||||
* These aren't exported outside the kernel to avoid name space clashes
|
||||
*/
|
||||
#ifdef __KERNEL__
|
||||
|
||||
#define BITS_PER_LONG 32
|
||||
|
||||
#endif /* __KERNEL__ */
|
||||
|
||||
#endif /* __ASSEMBLY__ */
|
||||
|
||||
#endif /* _H8300_TYPES_H */
|
||||
|
@ -1,28 +1 @@
|
||||
#ifndef _ASM_IA64_IPCBUF_H
|
||||
#define _ASM_IA64_IPCBUF_H
|
||||
|
||||
/*
|
||||
* The ipc64_perm structure for IA-64 architecture.
|
||||
* Note extra padding because this structure is passed back and forth
|
||||
* between kernel and user space.
|
||||
*
|
||||
* Pad space is left for:
|
||||
* - 32-bit seq
|
||||
* - 2 miscellaneous 64-bit values
|
||||
*/
|
||||
|
||||
struct ipc64_perm
|
||||
{
|
||||
__kernel_key_t key;
|
||||
__kernel_uid_t uid;
|
||||
__kernel_gid_t gid;
|
||||
__kernel_uid_t cuid;
|
||||
__kernel_gid_t cgid;
|
||||
__kernel_mode_t mode;
|
||||
unsigned short seq;
|
||||
unsigned short __pad1;
|
||||
unsigned long __unused1;
|
||||
unsigned long __unused2;
|
||||
};
|
||||
|
||||
#endif /* _ASM_IA64_IPCBUF_H */
|
||||
#include <asm-generic/ipcbuf.h>
|
||||
|
@ -28,8 +28,6 @@
|
||||
# define __IA64_UL(x) ((unsigned long)(x))
|
||||
# define __IA64_UL_CONST(x) x##UL
|
||||
|
||||
typedef unsigned int umode_t;
|
||||
|
||||
/*
|
||||
* These aren't exported outside the kernel to avoid name space clashes
|
||||
*/
|
||||
|
@ -2228,7 +2228,7 @@ pfm_alloc_file(pfm_context_t *ctx)
|
||||
/*
|
||||
* allocate a new dcache entry
|
||||
*/
|
||||
path.dentry = d_alloc(pfmfs_mnt->mnt_sb->s_root, &this);
|
||||
path.dentry = d_alloc(pfmfs_mnt->mnt_root, &this);
|
||||
if (!path.dentry) {
|
||||
iput(inode);
|
||||
return ERR_PTR(-ENOMEM);
|
||||
|
@ -1,29 +1 @@
|
||||
#ifndef _ASM_M32R_IPCBUF_H
|
||||
#define _ASM_M32R_IPCBUF_H
|
||||
|
||||
/*
|
||||
* The ipc64_perm structure for m32r architecture.
|
||||
* Note extra padding because this structure is passed back and forth
|
||||
* between kernel and user space.
|
||||
*
|
||||
* Pad space is left for:
|
||||
* - 32-bit mode_t and seq
|
||||
* - 2 miscellaneous 32-bit values
|
||||
*/
|
||||
|
||||
struct ipc64_perm
|
||||
{
|
||||
__kernel_key_t key;
|
||||
__kernel_uid32_t uid;
|
||||
__kernel_gid32_t gid;
|
||||
__kernel_uid32_t cuid;
|
||||
__kernel_gid32_t cgid;
|
||||
__kernel_mode_t mode;
|
||||
unsigned short __pad1;
|
||||
unsigned short seq;
|
||||
unsigned short __pad2;
|
||||
unsigned long __unused1;
|
||||
unsigned long __unused2;
|
||||
};
|
||||
|
||||
#endif /* _ASM_M32R_IPCBUF_H */
|
||||
#include <asm-generic/ipcbuf.h>
|
||||
|
@ -3,12 +3,6 @@
|
||||
|
||||
#include <asm-generic/int-ll64.h>
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
|
||||
typedef unsigned short umode_t;
|
||||
|
||||
#endif /* __ASSEMBLY__ */
|
||||
|
||||
/*
|
||||
* These aren't exported outside the kernel to avoid name space clashes
|
||||
*/
|
||||
|
@ -1,29 +1 @@
|
||||
#ifndef __m68k_IPCBUF_H__
|
||||
#define __m68k_IPCBUF_H__
|
||||
|
||||
/*
|
||||
* The user_ipc_perm structure for m68k architecture.
|
||||
* Note extra padding because this structure is passed back and forth
|
||||
* between kernel and user space.
|
||||
*
|
||||
* Pad space is left for:
|
||||
* - 32-bit mode_t and seq
|
||||
* - 2 miscellaneous 32-bit values
|
||||
*/
|
||||
|
||||
struct ipc64_perm
|
||||
{
|
||||
__kernel_key_t key;
|
||||
__kernel_uid32_t uid;
|
||||
__kernel_gid32_t gid;
|
||||
__kernel_uid32_t cuid;
|
||||
__kernel_gid32_t cgid;
|
||||
__kernel_mode_t mode;
|
||||
unsigned short __pad1;
|
||||
unsigned short seq;
|
||||
unsigned short __pad2;
|
||||
unsigned long __unused1;
|
||||
unsigned long __unused2;
|
||||
};
|
||||
|
||||
#endif /* __m68k_IPCBUF_H__ */
|
||||
#include <asm-generic/ipcbuf.h>
|
||||
|
@ -10,12 +10,6 @@
|
||||
*/
|
||||
#include <asm-generic/int-ll64.h>
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
|
||||
typedef unsigned short umode_t;
|
||||
|
||||
#endif /* __ASSEMBLY__ */
|
||||
|
||||
/*
|
||||
* These aren't exported outside the kernel to avoid name space clashes
|
||||
*/
|
||||
|
@ -1,28 +1 @@
|
||||
#ifndef _ASM_IPCBUF_H
|
||||
#define _ASM_IPCBUF_H
|
||||
|
||||
/*
|
||||
* The ipc64_perm structure for alpha architecture.
|
||||
* Note extra padding because this structure is passed back and forth
|
||||
* between kernel and user space.
|
||||
*
|
||||
* Pad space is left for:
|
||||
* - 32-bit seq
|
||||
* - 2 miscellaneous 64-bit values
|
||||
*/
|
||||
|
||||
struct ipc64_perm
|
||||
{
|
||||
__kernel_key_t key;
|
||||
__kernel_uid_t uid;
|
||||
__kernel_gid_t gid;
|
||||
__kernel_uid_t cuid;
|
||||
__kernel_gid_t cgid;
|
||||
__kernel_mode_t mode;
|
||||
unsigned short seq;
|
||||
unsigned short __pad1;
|
||||
unsigned long __unused1;
|
||||
unsigned long __unused2;
|
||||
};
|
||||
|
||||
#endif /* _ASM_IPCBUF_H */
|
||||
#include <asm-generic/ipcbuf.h>
|
||||
|
@ -21,12 +21,6 @@
|
||||
# include <asm-generic/int-ll64.h>
|
||||
#endif
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
|
||||
typedef unsigned short umode_t;
|
||||
|
||||
#endif /* __ASSEMBLY__ */
|
||||
|
||||
/*
|
||||
* These aren't exported outside the kernel to avoid name space clashes
|
||||
*/
|
||||
|
@ -1,29 +1 @@
|
||||
#ifndef _ASM_IPCBUF_H
|
||||
#define _ASM_IPCBUF_H
|
||||
|
||||
/*
|
||||
* The ipc64_perm structure for MN10300 architecture.
|
||||
* Note extra padding because this structure is passed back and forth
|
||||
* between kernel and user space.
|
||||
*
|
||||
* Pad space is left for:
|
||||
* - 32-bit mode_t and seq
|
||||
* - 2 miscellaneous 32-bit values
|
||||
*/
|
||||
|
||||
struct ipc64_perm
|
||||
{
|
||||
__kernel_key_t key;
|
||||
__kernel_uid32_t uid;
|
||||
__kernel_gid32_t gid;
|
||||
__kernel_uid32_t cuid;
|
||||
__kernel_gid32_t cgid;
|
||||
__kernel_mode_t mode;
|
||||
unsigned short __pad1;
|
||||
unsigned short seq;
|
||||
unsigned short __pad2;
|
||||
unsigned long __unused1;
|
||||
unsigned long __unused2;
|
||||
};
|
||||
|
||||
#endif /* _ASM_IPCBUF_H */
|
||||
#include <asm-generic/ipcbuf.h>
|
||||
|
@ -13,12 +13,6 @@
|
||||
|
||||
#include <asm-generic/int-ll64.h>
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
|
||||
typedef unsigned short umode_t;
|
||||
|
||||
#endif /* __ASSEMBLY__ */
|
||||
|
||||
/*
|
||||
* These aren't exported outside the kernel to avoid name space clashes
|
||||
*/
|
||||
|
@ -136,16 +136,9 @@ struct hpux_ustat {
|
||||
*/
|
||||
static int hpux_ustat(dev_t dev, struct hpux_ustat __user *ubuf)
|
||||
{
|
||||
struct super_block *s;
|
||||
struct hpux_ustat tmp; /* Changed to hpux_ustat */
|
||||
struct kstatfs sbuf;
|
||||
int err = -EINVAL;
|
||||
|
||||
s = user_get_super(dev);
|
||||
if (s == NULL)
|
||||
goto out;
|
||||
err = statfs_by_dentry(s->s_root, &sbuf);
|
||||
drop_super(s);
|
||||
int err = vfs_ustat(dev, &sbuf);
|
||||
if (err)
|
||||
goto out;
|
||||
|
||||
|
@ -3,10 +3,4 @@
|
||||
|
||||
#include <asm-generic/int-ll64.h>
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
|
||||
typedef unsigned short umode_t;
|
||||
|
||||
#endif /* __ASSEMBLY__ */
|
||||
|
||||
#endif
|
||||
|
@ -237,7 +237,7 @@ extern long spu_sys_callback(struct spu_syscall_block *s);
|
||||
struct file;
|
||||
struct spufs_calls {
|
||||
long (*create_thread)(const char __user *name,
|
||||
unsigned int flags, mode_t mode,
|
||||
unsigned int flags, umode_t mode,
|
||||
struct file *neighbor);
|
||||
long (*spu_run)(struct file *filp, __u32 __user *unpc,
|
||||
__u32 __user *ustatus);
|
||||
|
@ -30,12 +30,6 @@
|
||||
* 2 of the License, or (at your option) any later version.
|
||||
*/
|
||||
|
||||
#ifdef __powerpc64__
|
||||
typedef unsigned int umode_t;
|
||||
#else
|
||||
typedef unsigned short umode_t;
|
||||
#endif
|
||||
|
||||
typedef struct {
|
||||
__u32 u[4];
|
||||
} __attribute__((aligned(16))) __vector128;
|
||||
|
@ -783,7 +783,7 @@ static const struct file_operations lparcfg_fops = {
|
||||
static int __init lparcfg_init(void)
|
||||
{
|
||||
struct proc_dir_entry *ent;
|
||||
mode_t mode = S_IRUSR | S_IRGRP | S_IROTH;
|
||||
umode_t mode = S_IRUSR | S_IRGRP | S_IROTH;
|
||||
|
||||
/* Allow writing if we have FW_FEATURE_SPLPAR */
|
||||
if (firmware_has_feature(FW_FEATURE_SPLPAR) &&
|
||||
|
@ -65,8 +65,8 @@ static inline void spufs_calls_put(struct spufs_calls *calls) { }
|
||||
|
||||
#endif /* CONFIG_SPU_FS_MODULE */
|
||||
|
||||
asmlinkage long sys_spu_create(const char __user *name,
|
||||
unsigned int flags, mode_t mode, int neighbor_fd)
|
||||
SYSCALL_DEFINE4(spu_create, const char __user *, name, unsigned int, flags,
|
||||
umode_t, mode, int, neighbor_fd)
|
||||
{
|
||||
long ret;
|
||||
struct file *neighbor;
|
||||
|
@ -74,7 +74,6 @@ spufs_alloc_inode(struct super_block *sb)
|
||||
static void spufs_i_callback(struct rcu_head *head)
|
||||
{
|
||||
struct inode *inode = container_of(head, struct inode, i_rcu);
|
||||
INIT_LIST_HEAD(&inode->i_dentry);
|
||||
kmem_cache_free(spufs_inode_cache, SPUFS_I(inode));
|
||||
}
|
||||
|
||||
@ -92,7 +91,7 @@ spufs_init_once(void *p)
|
||||
}
|
||||
|
||||
static struct inode *
|
||||
spufs_new_inode(struct super_block *sb, int mode)
|
||||
spufs_new_inode(struct super_block *sb, umode_t mode)
|
||||
{
|
||||
struct inode *inode;
|
||||
|
||||
@ -124,7 +123,7 @@ spufs_setattr(struct dentry *dentry, struct iattr *attr)
|
||||
|
||||
static int
|
||||
spufs_new_file(struct super_block *sb, struct dentry *dentry,
|
||||
const struct file_operations *fops, int mode,
|
||||
const struct file_operations *fops, umode_t mode,
|
||||
size_t size, struct spu_context *ctx)
|
||||
{
|
||||
static const struct inode_operations spufs_file_iops = {
|
||||
@ -194,7 +193,7 @@ static int spufs_rmdir(struct inode *parent, struct dentry *dir)
|
||||
}
|
||||
|
||||
static int spufs_fill_dir(struct dentry *dir,
|
||||
const struct spufs_tree_descr *files, int mode,
|
||||
const struct spufs_tree_descr *files, umode_t mode,
|
||||
struct spu_context *ctx)
|
||||
{
|
||||
struct dentry *dentry, *tmp;
|
||||
@ -264,7 +263,7 @@ EXPORT_SYMBOL_GPL(spufs_context_fops);
|
||||
|
||||
static int
|
||||
spufs_mkdir(struct inode *dir, struct dentry *dentry, unsigned int flags,
|
||||
int mode)
|
||||
umode_t mode)
|
||||
{
|
||||
int ret;
|
||||
struct inode *inode;
|
||||
@ -447,7 +446,7 @@ spufs_set_affinity(unsigned int flags, struct spu_context *ctx,
|
||||
|
||||
static int
|
||||
spufs_create_context(struct inode *inode, struct dentry *dentry,
|
||||
struct vfsmount *mnt, int flags, int mode,
|
||||
struct vfsmount *mnt, int flags, umode_t mode,
|
||||
struct file *aff_filp)
|
||||
{
|
||||
int ret;
|
||||
@ -521,7 +520,7 @@ out:
|
||||
}
|
||||
|
||||
static int
|
||||
spufs_mkgang(struct inode *dir, struct dentry *dentry, int mode)
|
||||
spufs_mkgang(struct inode *dir, struct dentry *dentry, umode_t mode)
|
||||
{
|
||||
int ret;
|
||||
struct inode *inode;
|
||||
@ -584,7 +583,7 @@ out:
|
||||
|
||||
static int spufs_create_gang(struct inode *inode,
|
||||
struct dentry *dentry,
|
||||
struct vfsmount *mnt, int mode)
|
||||
struct vfsmount *mnt, umode_t mode)
|
||||
{
|
||||
int ret;
|
||||
|
||||
@ -612,7 +611,7 @@ out:
|
||||
static struct file_system_type spufs_type;
|
||||
|
||||
long spufs_create(struct path *path, struct dentry *dentry,
|
||||
unsigned int flags, mode_t mode, struct file *filp)
|
||||
unsigned int flags, umode_t mode, struct file *filp)
|
||||
{
|
||||
int ret;
|
||||
|
||||
|
@ -237,7 +237,7 @@ struct spufs_inode_info {
|
||||
struct spufs_tree_descr {
|
||||
const char *name;
|
||||
const struct file_operations *ops;
|
||||
int mode;
|
||||
umode_t mode;
|
||||
size_t size;
|
||||
};
|
||||
|
||||
@ -249,7 +249,7 @@ extern const struct spufs_tree_descr spufs_dir_debug_contents[];
|
||||
extern struct spufs_calls spufs_calls;
|
||||
long spufs_run_spu(struct spu_context *ctx, u32 *npc, u32 *status);
|
||||
long spufs_create(struct path *nd, struct dentry *dentry, unsigned int flags,
|
||||
mode_t mode, struct file *filp);
|
||||
umode_t mode, struct file *filp);
|
||||
/* ELF coredump callbacks for writing SPU ELF notes */
|
||||
extern int spufs_coredump_extra_notes_size(void);
|
||||
extern int spufs_coredump_extra_notes_write(struct file *file, loff_t *foffset);
|
||||
|
@ -60,7 +60,7 @@ out:
|
||||
}
|
||||
|
||||
static long do_spu_create(const char __user *pathname, unsigned int flags,
|
||||
mode_t mode, struct file *neighbor)
|
||||
umode_t mode, struct file *neighbor)
|
||||
{
|
||||
struct path path;
|
||||
struct dentry *dentry;
|
||||
|
@ -25,7 +25,6 @@
|
||||
|
||||
#include <linux/bio.h>
|
||||
#include <linux/blkdev.h>
|
||||
#include <linux/buffer_head.h>
|
||||
#include <linux/device.h>
|
||||
#include <linux/errno.h>
|
||||
#include <linux/fs.h>
|
||||
|
@ -97,7 +97,7 @@ static void hypfs_delete_tree(struct dentry *root)
|
||||
}
|
||||
}
|
||||
|
||||
static struct inode *hypfs_make_inode(struct super_block *sb, int mode)
|
||||
static struct inode *hypfs_make_inode(struct super_block *sb, umode_t mode)
|
||||
{
|
||||
struct inode *ret = new_inode(sb);
|
||||
|
||||
@ -107,7 +107,7 @@ static struct inode *hypfs_make_inode(struct super_block *sb, int mode)
|
||||
ret->i_uid = hypfs_info->uid;
|
||||
ret->i_gid = hypfs_info->gid;
|
||||
ret->i_atime = ret->i_mtime = ret->i_ctime = CURRENT_TIME;
|
||||
if (mode & S_IFDIR)
|
||||
if (S_ISDIR(mode))
|
||||
set_nlink(ret, 2);
|
||||
}
|
||||
return ret;
|
||||
@ -259,9 +259,9 @@ static int hypfs_parse_options(char *options, struct super_block *sb)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int hypfs_show_options(struct seq_file *s, struct vfsmount *mnt)
|
||||
static int hypfs_show_options(struct seq_file *s, struct dentry *root)
|
||||
{
|
||||
struct hypfs_sb_info *hypfs_info = mnt->mnt_sb->s_fs_info;
|
||||
struct hypfs_sb_info *hypfs_info = root->d_sb->s_fs_info;
|
||||
|
||||
seq_printf(s, ",uid=%u", hypfs_info->uid);
|
||||
seq_printf(s, ",gid=%u", hypfs_info->gid);
|
||||
@ -333,7 +333,7 @@ static void hypfs_kill_super(struct super_block *sb)
|
||||
|
||||
static struct dentry *hypfs_create_file(struct super_block *sb,
|
||||
struct dentry *parent, const char *name,
|
||||
char *data, mode_t mode)
|
||||
char *data, umode_t mode)
|
||||
{
|
||||
struct dentry *dentry;
|
||||
struct inode *inode;
|
||||
@ -350,13 +350,13 @@ static struct dentry *hypfs_create_file(struct super_block *sb,
|
||||
dentry = ERR_PTR(-ENOMEM);
|
||||
goto fail;
|
||||
}
|
||||
if (mode & S_IFREG) {
|
||||
if (S_ISREG(mode)) {
|
||||
inode->i_fop = &hypfs_file_ops;
|
||||
if (data)
|
||||
inode->i_size = strlen(data);
|
||||
else
|
||||
inode->i_size = 0;
|
||||
} else if (mode & S_IFDIR) {
|
||||
} else if (S_ISDIR(mode)) {
|
||||
inode->i_op = &simple_dir_inode_operations;
|
||||
inode->i_fop = &simple_dir_operations;
|
||||
inc_nlink(parent->d_inode);
|
||||
|
@ -73,7 +73,7 @@ typedef struct debug_info {
|
||||
struct dentry* debugfs_entries[DEBUG_MAX_VIEWS];
|
||||
struct debug_view* views[DEBUG_MAX_VIEWS];
|
||||
char name[DEBUG_MAX_NAME_LEN];
|
||||
mode_t mode;
|
||||
umode_t mode;
|
||||
} debug_info_t;
|
||||
|
||||
typedef int (debug_header_proc_t) (debug_info_t* id,
|
||||
@ -124,7 +124,7 @@ debug_info_t *debug_register(const char *name, int pages, int nr_areas,
|
||||
int buf_size);
|
||||
|
||||
debug_info_t *debug_register_mode(const char *name, int pages, int nr_areas,
|
||||
int buf_size, mode_t mode, uid_t uid,
|
||||
int buf_size, umode_t mode, uid_t uid,
|
||||
gid_t gid);
|
||||
|
||||
void debug_unregister(debug_info_t* id);
|
||||
|
@ -13,8 +13,6 @@
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
|
||||
typedef unsigned short umode_t;
|
||||
|
||||
/* A address type so that arithmetic can be done on it & it can be upgraded to
|
||||
64 bit when necessary
|
||||
*/
|
||||
|
@ -74,7 +74,7 @@ static ssize_t debug_input(struct file *file, const char __user *user_buf,
|
||||
static int debug_open(struct inode *inode, struct file *file);
|
||||
static int debug_close(struct inode *inode, struct file *file);
|
||||
static debug_info_t *debug_info_create(const char *name, int pages_per_area,
|
||||
int nr_areas, int buf_size, mode_t mode);
|
||||
int nr_areas, int buf_size, umode_t mode);
|
||||
static void debug_info_get(debug_info_t *);
|
||||
static void debug_info_put(debug_info_t *);
|
||||
static int debug_prolog_level_fn(debug_info_t * id,
|
||||
@ -330,7 +330,7 @@ debug_info_free(debug_info_t* db_info){
|
||||
|
||||
static debug_info_t*
|
||||
debug_info_create(const char *name, int pages_per_area, int nr_areas,
|
||||
int buf_size, mode_t mode)
|
||||
int buf_size, umode_t mode)
|
||||
{
|
||||
debug_info_t* rc;
|
||||
|
||||
@ -688,7 +688,7 @@ debug_close(struct inode *inode, struct file *file)
|
||||
*/
|
||||
|
||||
debug_info_t *debug_register_mode(const char *name, int pages_per_area,
|
||||
int nr_areas, int buf_size, mode_t mode,
|
||||
int nr_areas, int buf_size, umode_t mode,
|
||||
uid_t uid, gid_t gid)
|
||||
{
|
||||
debug_info_t *rc = NULL;
|
||||
@ -1090,7 +1090,7 @@ debug_register_view(debug_info_t * id, struct debug_view *view)
|
||||
int rc = 0;
|
||||
int i;
|
||||
unsigned long flags;
|
||||
mode_t mode;
|
||||
umode_t mode;
|
||||
struct dentry *pde;
|
||||
|
||||
if (!id)
|
||||
|
@ -20,7 +20,6 @@ typedef unsigned int __kernel_uid_t;
|
||||
typedef unsigned int __kernel_gid_t;
|
||||
typedef unsigned long __kernel_ino_t;
|
||||
typedef unsigned int __kernel_mode_t;
|
||||
typedef unsigned short __kernel_umode_t;
|
||||
typedef unsigned int __kernel_nlink_t;
|
||||
typedef int __kernel_daddr_t;
|
||||
typedef long __kernel_off_t;
|
||||
@ -55,7 +54,6 @@ typedef unsigned short __kernel_uid_t;
|
||||
typedef unsigned short __kernel_gid_t;
|
||||
typedef unsigned long __kernel_ino_t;
|
||||
typedef unsigned short __kernel_mode_t;
|
||||
typedef unsigned short __kernel_umode_t;
|
||||
typedef short __kernel_nlink_t;
|
||||
typedef long __kernel_daddr_t;
|
||||
typedef long __kernel_off_t;
|
||||
|
@ -12,12 +12,6 @@
|
||||
|
||||
#include <asm-generic/int-ll64.h>
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
|
||||
typedef unsigned short umode_t;
|
||||
|
||||
#endif /* __ASSEMBLY__ */
|
||||
|
||||
#endif /* defined(__sparc__) */
|
||||
|
||||
#endif /* defined(_SPARC_TYPES_H) */
|
||||
|
@ -177,7 +177,7 @@ static struct notifier_block __refdata cpuid_class_cpu_notifier =
|
||||
.notifier_call = cpuid_class_cpu_callback,
|
||||
};
|
||||
|
||||
static char *cpuid_devnode(struct device *dev, mode_t *mode)
|
||||
static char *cpuid_devnode(struct device *dev, umode_t *mode)
|
||||
{
|
||||
return kasprintf(GFP_KERNEL, "cpu/%u/cpuid", MINOR(dev->devt));
|
||||
}
|
||||
|
@ -236,7 +236,7 @@ static struct notifier_block __refdata msr_class_cpu_notifier = {
|
||||
.notifier_call = msr_class_cpu_callback,
|
||||
};
|
||||
|
||||
static char *msr_devnode(struct device *dev, mode_t *mode)
|
||||
static char *msr_devnode(struct device *dev, umode_t *mode)
|
||||
{
|
||||
return kasprintf(GFP_KERNEL, "cpu/%u/msr", MINOR(dev->devt));
|
||||
}
|
||||
|
@ -109,7 +109,7 @@ static const struct file_operations u32_array_fops = {
|
||||
.llseek = no_llseek,
|
||||
};
|
||||
|
||||
struct dentry *xen_debugfs_create_u32_array(const char *name, mode_t mode,
|
||||
struct dentry *xen_debugfs_create_u32_array(const char *name, umode_t mode,
|
||||
struct dentry *parent,
|
||||
u32 *array, unsigned elements)
|
||||
{
|
||||
|
@ -3,7 +3,7 @@
|
||||
|
||||
struct dentry * __init xen_init_debugfs(void);
|
||||
|
||||
struct dentry *xen_debugfs_create_u32_array(const char *name, mode_t mode,
|
||||
struct dentry *xen_debugfs_create_u32_array(const char *name, umode_t mode,
|
||||
struct dentry *parent,
|
||||
u32 *array, unsigned elements);
|
||||
|
||||
|
@ -23,8 +23,6 @@
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
|
||||
typedef unsigned short umode_t;
|
||||
|
||||
/*
|
||||
* These aren't exported outside the kernel to avoid name space clashes
|
||||
*/
|
||||
|
@ -99,6 +99,12 @@ config BLK_DEV_THROTTLING
|
||||
|
||||
See Documentation/cgroups/blkio-controller.txt for more information.
|
||||
|
||||
menu "Partition Types"
|
||||
|
||||
source "block/partitions/Kconfig"
|
||||
|
||||
endmenu
|
||||
|
||||
endif # BLOCK
|
||||
|
||||
config BLOCK_COMPAT
|
||||
|
@ -5,7 +5,8 @@
|
||||
obj-$(CONFIG_BLOCK) := elevator.o blk-core.o blk-tag.o blk-sysfs.o \
|
||||
blk-flush.o blk-settings.o blk-ioc.o blk-map.o \
|
||||
blk-exec.o blk-merge.o blk-softirq.o blk-timeout.o \
|
||||
blk-iopoll.o blk-lib.o ioctl.o genhd.o scsi_ioctl.o
|
||||
blk-iopoll.o blk-lib.o ioctl.o genhd.o scsi_ioctl.o \
|
||||
partition-generic.o partitions/
|
||||
|
||||
obj-$(CONFIG_BLK_DEV_BSG) += bsg.o
|
||||
obj-$(CONFIG_BLK_DEV_BSGLIB) += bsg-lib.o
|
||||
|
@ -1070,7 +1070,7 @@ EXPORT_SYMBOL_GPL(bsg_register_queue);
|
||||
|
||||
static struct cdev bsg_cdev;
|
||||
|
||||
static char *bsg_devnode(struct device *dev, mode_t *mode)
|
||||
static char *bsg_devnode(struct device *dev, umode_t *mode)
|
||||
{
|
||||
return kasprintf(GFP_KERNEL, "bsg/%s", dev_name(dev));
|
||||
}
|
||||
|
@ -15,7 +15,6 @@
|
||||
#include <linux/slab.h>
|
||||
#include <linux/kmod.h>
|
||||
#include <linux/kobj_map.h>
|
||||
#include <linux/buffer_head.h>
|
||||
#include <linux/mutex.h>
|
||||
#include <linux/idr.h>
|
||||
#include <linux/log2.h>
|
||||
@ -507,7 +506,7 @@ static int exact_lock(dev_t devt, void *data)
|
||||
return 0;
|
||||
}
|
||||
|
||||
void register_disk(struct gendisk *disk)
|
||||
static void register_disk(struct gendisk *disk)
|
||||
{
|
||||
struct device *ddev = disk_to_dev(disk);
|
||||
struct block_device *bdev;
|
||||
@ -1109,7 +1108,7 @@ struct class block_class = {
|
||||
.name = "block",
|
||||
};
|
||||
|
||||
static char *block_devnode(struct device *dev, mode_t *mode)
|
||||
static char *block_devnode(struct device *dev, umode_t *mode)
|
||||
{
|
||||
struct gendisk *disk = dev_to_disk(dev);
|
||||
|
||||
|
@ -5,7 +5,7 @@
|
||||
#include <linux/blkpg.h>
|
||||
#include <linux/hdreg.h>
|
||||
#include <linux/backing-dev.h>
|
||||
#include <linux/buffer_head.h>
|
||||
#include <linux/fs.h>
|
||||
#include <linux/blktrace_api.h>
|
||||
#include <asm/uaccess.h>
|
||||
|
||||
|
@ -1,6 +1,4 @@
|
||||
/*
|
||||
* fs/partitions/check.c
|
||||
*
|
||||
* Code extracted from drivers/block/genhd.c
|
||||
* Copyright (C) 1991-1998 Linus Torvalds
|
||||
* Re-organised Feb 1998 Russell King
|
||||
@ -9,8 +7,6 @@
|
||||
* block drivers, which allows all the partition code to
|
||||
* be grouped in one location, and it to be mostly self
|
||||
* contained.
|
||||
*
|
||||
* Added needed MAJORS for new pairs, {hdi,hdj}, {hdk,hdl}
|
||||
*/
|
||||
|
||||
#include <linux/init.h>
|
||||
@ -22,98 +18,11 @@
|
||||
#include <linux/genhd.h>
|
||||
#include <linux/blktrace_api.h>
|
||||
|
||||
#include "check.h"
|
||||
|
||||
#include "acorn.h"
|
||||
#include "amiga.h"
|
||||
#include "atari.h"
|
||||
#include "ldm.h"
|
||||
#include "mac.h"
|
||||
#include "msdos.h"
|
||||
#include "osf.h"
|
||||
#include "sgi.h"
|
||||
#include "sun.h"
|
||||
#include "ibm.h"
|
||||
#include "ultrix.h"
|
||||
#include "efi.h"
|
||||
#include "karma.h"
|
||||
#include "sysv68.h"
|
||||
#include "partitions/check.h"
|
||||
|
||||
#ifdef CONFIG_BLK_DEV_MD
|
||||
extern void md_autodetect_dev(dev_t dev);
|
||||
#endif
|
||||
|
||||
int warn_no_part = 1; /*This is ugly: should make genhd removable media aware*/
|
||||
|
||||
static int (*check_part[])(struct parsed_partitions *) = {
|
||||
/*
|
||||
* Probe partition formats with tables at disk address 0
|
||||
* that also have an ADFS boot block at 0xdc0.
|
||||
*/
|
||||
#ifdef CONFIG_ACORN_PARTITION_ICS
|
||||
adfspart_check_ICS,
|
||||
#endif
|
||||
#ifdef CONFIG_ACORN_PARTITION_POWERTEC
|
||||
adfspart_check_POWERTEC,
|
||||
#endif
|
||||
#ifdef CONFIG_ACORN_PARTITION_EESOX
|
||||
adfspart_check_EESOX,
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Now move on to formats that only have partition info at
|
||||
* disk address 0xdc0. Since these may also have stale
|
||||
* PC/BIOS partition tables, they need to come before
|
||||
* the msdos entry.
|
||||
*/
|
||||
#ifdef CONFIG_ACORN_PARTITION_CUMANA
|
||||
adfspart_check_CUMANA,
|
||||
#endif
|
||||
#ifdef CONFIG_ACORN_PARTITION_ADFS
|
||||
adfspart_check_ADFS,
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_EFI_PARTITION
|
||||
efi_partition, /* this must come before msdos */
|
||||
#endif
|
||||
#ifdef CONFIG_SGI_PARTITION
|
||||
sgi_partition,
|
||||
#endif
|
||||
#ifdef CONFIG_LDM_PARTITION
|
||||
ldm_partition, /* this must come before msdos */
|
||||
#endif
|
||||
#ifdef CONFIG_MSDOS_PARTITION
|
||||
msdos_partition,
|
||||
#endif
|
||||
#ifdef CONFIG_OSF_PARTITION
|
||||
osf_partition,
|
||||
#endif
|
||||
#ifdef CONFIG_SUN_PARTITION
|
||||
sun_partition,
|
||||
#endif
|
||||
#ifdef CONFIG_AMIGA_PARTITION
|
||||
amiga_partition,
|
||||
#endif
|
||||
#ifdef CONFIG_ATARI_PARTITION
|
||||
atari_partition,
|
||||
#endif
|
||||
#ifdef CONFIG_MAC_PARTITION
|
||||
mac_partition,
|
||||
#endif
|
||||
#ifdef CONFIG_ULTRIX_PARTITION
|
||||
ultrix_partition,
|
||||
#endif
|
||||
#ifdef CONFIG_IBM_PARTITION
|
||||
ibm_partition,
|
||||
#endif
|
||||
#ifdef CONFIG_KARMA_PARTITION
|
||||
karma_partition,
|
||||
#endif
|
||||
#ifdef CONFIG_SYSV68_PARTITION
|
||||
sysv68_partition,
|
||||
#endif
|
||||
NULL
|
||||
};
|
||||
|
||||
/*
|
||||
* disk_name() is used by partition check code and the genhd driver.
|
||||
@ -155,65 +64,6 @@ const char *__bdevname(dev_t dev, char *buffer)
|
||||
|
||||
EXPORT_SYMBOL(__bdevname);
|
||||
|
||||
static struct parsed_partitions *
|
||||
check_partition(struct gendisk *hd, struct block_device *bdev)
|
||||
{
|
||||
struct parsed_partitions *state;
|
||||
int i, res, err;
|
||||
|
||||
state = kzalloc(sizeof(struct parsed_partitions), GFP_KERNEL);
|
||||
if (!state)
|
||||
return NULL;
|
||||
state->pp_buf = (char *)__get_free_page(GFP_KERNEL);
|
||||
if (!state->pp_buf) {
|
||||
kfree(state);
|
||||
return NULL;
|
||||
}
|
||||
state->pp_buf[0] = '\0';
|
||||
|
||||
state->bdev = bdev;
|
||||
disk_name(hd, 0, state->name);
|
||||
snprintf(state->pp_buf, PAGE_SIZE, " %s:", state->name);
|
||||
if (isdigit(state->name[strlen(state->name)-1]))
|
||||
sprintf(state->name, "p");
|
||||
|
||||
state->limit = disk_max_parts(hd);
|
||||
i = res = err = 0;
|
||||
while (!res && check_part[i]) {
|
||||
memset(&state->parts, 0, sizeof(state->parts));
|
||||
res = check_part[i++](state);
|
||||
if (res < 0) {
|
||||
/* We have hit an I/O error which we don't report now.
|
||||
* But record it, and let the others do their job.
|
||||
*/
|
||||
err = res;
|
||||
res = 0;
|
||||
}
|
||||
|
||||
}
|
||||
if (res > 0) {
|
||||
printk(KERN_INFO "%s", state->pp_buf);
|
||||
|
||||
free_page((unsigned long)state->pp_buf);
|
||||
return state;
|
||||
}
|
||||
if (state->access_beyond_eod)
|
||||
err = -ENOSPC;
|
||||
if (err)
|
||||
/* The partition is unrecognized. So report I/O errors if there were any */
|
||||
res = err;
|
||||
if (!res)
|
||||
strlcat(state->pp_buf, " unknown partition table\n", PAGE_SIZE);
|
||||
else if (warn_no_part)
|
||||
strlcat(state->pp_buf, " unable to read partition table\n", PAGE_SIZE);
|
||||
|
||||
printk(KERN_INFO "%s", state->pp_buf);
|
||||
|
||||
free_page((unsigned long)state->pp_buf);
|
||||
kfree(state);
|
||||
return ERR_PTR(res);
|
||||
}
|
||||
|
||||
static ssize_t part_partition_show(struct device *dev,
|
||||
struct device_attribute *attr, char *buf)
|
||||
{
|
166
block/partitions/check.c
Normal file
166
block/partitions/check.c
Normal file
@ -0,0 +1,166 @@
|
||||
/*
|
||||
* fs/partitions/check.c
|
||||
*
|
||||
* Code extracted from drivers/block/genhd.c
|
||||
* Copyright (C) 1991-1998 Linus Torvalds
|
||||
* Re-organised Feb 1998 Russell King
|
||||
*
|
||||
* We now have independent partition support from the
|
||||
* block drivers, which allows all the partition code to
|
||||
* be grouped in one location, and it to be mostly self
|
||||
* contained.
|
||||
*
|
||||
* Added needed MAJORS for new pairs, {hdi,hdj}, {hdk,hdl}
|
||||
*/
|
||||
|
||||
#include <linux/slab.h>
|
||||
#include <linux/ctype.h>
|
||||
#include <linux/genhd.h>
|
||||
|
||||
#include "check.h"
|
||||
|
||||
#include "acorn.h"
|
||||
#include "amiga.h"
|
||||
#include "atari.h"
|
||||
#include "ldm.h"
|
||||
#include "mac.h"
|
||||
#include "msdos.h"
|
||||
#include "osf.h"
|
||||
#include "sgi.h"
|
||||
#include "sun.h"
|
||||
#include "ibm.h"
|
||||
#include "ultrix.h"
|
||||
#include "efi.h"
|
||||
#include "karma.h"
|
||||
#include "sysv68.h"
|
||||
|
||||
int warn_no_part = 1; /*This is ugly: should make genhd removable media aware*/
|
||||
|
||||
static int (*check_part[])(struct parsed_partitions *) = {
|
||||
/*
|
||||
* Probe partition formats with tables at disk address 0
|
||||
* that also have an ADFS boot block at 0xdc0.
|
||||
*/
|
||||
#ifdef CONFIG_ACORN_PARTITION_ICS
|
||||
adfspart_check_ICS,
|
||||
#endif
|
||||
#ifdef CONFIG_ACORN_PARTITION_POWERTEC
|
||||
adfspart_check_POWERTEC,
|
||||
#endif
|
||||
#ifdef CONFIG_ACORN_PARTITION_EESOX
|
||||
adfspart_check_EESOX,
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Now move on to formats that only have partition info at
|
||||
* disk address 0xdc0. Since these may also have stale
|
||||
* PC/BIOS partition tables, they need to come before
|
||||
* the msdos entry.
|
||||
*/
|
||||
#ifdef CONFIG_ACORN_PARTITION_CUMANA
|
||||
adfspart_check_CUMANA,
|
||||
#endif
|
||||
#ifdef CONFIG_ACORN_PARTITION_ADFS
|
||||
adfspart_check_ADFS,
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_EFI_PARTITION
|
||||
efi_partition, /* this must come before msdos */
|
||||
#endif
|
||||
#ifdef CONFIG_SGI_PARTITION
|
||||
sgi_partition,
|
||||
#endif
|
||||
#ifdef CONFIG_LDM_PARTITION
|
||||
ldm_partition, /* this must come before msdos */
|
||||
#endif
|
||||
#ifdef CONFIG_MSDOS_PARTITION
|
||||
msdos_partition,
|
||||
#endif
|
||||
#ifdef CONFIG_OSF_PARTITION
|
||||
osf_partition,
|
||||
#endif
|
||||
#ifdef CONFIG_SUN_PARTITION
|
||||
sun_partition,
|
||||
#endif
|
||||
#ifdef CONFIG_AMIGA_PARTITION
|
||||
amiga_partition,
|
||||
#endif
|
||||
#ifdef CONFIG_ATARI_PARTITION
|
||||
atari_partition,
|
||||
#endif
|
||||
#ifdef CONFIG_MAC_PARTITION
|
||||
mac_partition,
|
||||
#endif
|
||||
#ifdef CONFIG_ULTRIX_PARTITION
|
||||
ultrix_partition,
|
||||
#endif
|
||||
#ifdef CONFIG_IBM_PARTITION
|
||||
ibm_partition,
|
||||
#endif
|
||||
#ifdef CONFIG_KARMA_PARTITION
|
||||
karma_partition,
|
||||
#endif
|
||||
#ifdef CONFIG_SYSV68_PARTITION
|
||||
sysv68_partition,
|
||||
#endif
|
||||
NULL
|
||||
};
|
||||
|
||||
struct parsed_partitions *
|
||||
check_partition(struct gendisk *hd, struct block_device *bdev)
|
||||
{
|
||||
struct parsed_partitions *state;
|
||||
int i, res, err;
|
||||
|
||||
state = kzalloc(sizeof(struct parsed_partitions), GFP_KERNEL);
|
||||
if (!state)
|
||||
return NULL;
|
||||
state->pp_buf = (char *)__get_free_page(GFP_KERNEL);
|
||||
if (!state->pp_buf) {
|
||||
kfree(state);
|
||||
return NULL;
|
||||
}
|
||||
state->pp_buf[0] = '\0';
|
||||
|
||||
state->bdev = bdev;
|
||||
disk_name(hd, 0, state->name);
|
||||
snprintf(state->pp_buf, PAGE_SIZE, " %s:", state->name);
|
||||
if (isdigit(state->name[strlen(state->name)-1]))
|
||||
sprintf(state->name, "p");
|
||||
|
||||
state->limit = disk_max_parts(hd);
|
||||
i = res = err = 0;
|
||||
while (!res && check_part[i]) {
|
||||
memset(&state->parts, 0, sizeof(state->parts));
|
||||
res = check_part[i++](state);
|
||||
if (res < 0) {
|
||||
/* We have hit an I/O error which we don't report now.
|
||||
* But record it, and let the others do their job.
|
||||
*/
|
||||
err = res;
|
||||
res = 0;
|
||||
}
|
||||
|
||||
}
|
||||
if (res > 0) {
|
||||
printk(KERN_INFO "%s", state->pp_buf);
|
||||
|
||||
free_page((unsigned long)state->pp_buf);
|
||||
return state;
|
||||
}
|
||||
if (state->access_beyond_eod)
|
||||
err = -ENOSPC;
|
||||
if (err)
|
||||
/* The partition is unrecognized. So report I/O errors if there were any */
|
||||
res = err;
|
||||
if (!res)
|
||||
strlcat(state->pp_buf, " unknown partition table\n", PAGE_SIZE);
|
||||
else if (warn_no_part)
|
||||
strlcat(state->pp_buf, " unable to read partition table\n", PAGE_SIZE);
|
||||
|
||||
printk(KERN_INFO "%s", state->pp_buf);
|
||||
|
||||
free_page((unsigned long)state->pp_buf);
|
||||
kfree(state);
|
||||
return ERR_PTR(res);
|
||||
}
|
@ -22,6 +22,9 @@ struct parsed_partitions {
|
||||
char *pp_buf;
|
||||
};
|
||||
|
||||
struct parsed_partitions *
|
||||
check_partition(struct gendisk *, struct block_device *);
|
||||
|
||||
static inline void *read_part_sector(struct parsed_partitions *state,
|
||||
sector_t n, Sector *p)
|
||||
{
|
@ -873,7 +873,7 @@ DECLARE_FILE_FUNCTIONS(alarm);
|
||||
|
||||
static const struct battery_file {
|
||||
struct file_operations ops;
|
||||
mode_t mode;
|
||||
umode_t mode;
|
||||
const char *name;
|
||||
} acpi_battery_file[] = {
|
||||
FILE_DESCRIPTION_RO(info),
|
||||
|
@ -105,7 +105,7 @@ int acpi_ec_add_debugfs(struct acpi_ec *ec, unsigned int ec_device_count)
|
||||
{
|
||||
struct dentry *dev_dir;
|
||||
char name[64];
|
||||
mode_t mode = 0400;
|
||||
umode_t mode = 0400;
|
||||
|
||||
if (ec_device_count == 0) {
|
||||
acpi_ec_debugfs_dir = debugfs_create_dir("ec", NULL);
|
||||
|
@ -248,7 +248,7 @@ static int dev_uevent(struct kset *kset, struct kobject *kobj,
|
||||
if (MAJOR(dev->devt)) {
|
||||
const char *tmp;
|
||||
const char *name;
|
||||
mode_t mode = 0;
|
||||
umode_t mode = 0;
|
||||
|
||||
add_uevent_var(env, "MAJOR=%u", MAJOR(dev->devt));
|
||||
add_uevent_var(env, "MINOR=%u", MINOR(dev->devt));
|
||||
@ -1235,7 +1235,7 @@ static struct device *next_device(struct klist_iter *i)
|
||||
* freed by the caller.
|
||||
*/
|
||||
const char *device_get_devnode(struct device *dev,
|
||||
mode_t *mode, const char **tmp)
|
||||
umode_t *mode, const char **tmp)
|
||||
{
|
||||
char *s;
|
||||
|
||||
|
@ -40,7 +40,7 @@ static struct req {
|
||||
struct completion done;
|
||||
int err;
|
||||
const char *name;
|
||||
mode_t mode; /* 0 => delete */
|
||||
umode_t mode; /* 0 => delete */
|
||||
struct device *dev;
|
||||
} *requests;
|
||||
|
||||
@ -142,7 +142,7 @@ int devtmpfs_delete_node(struct device *dev)
|
||||
return req.err;
|
||||
}
|
||||
|
||||
static int dev_mkdir(const char *name, mode_t mode)
|
||||
static int dev_mkdir(const char *name, umode_t mode)
|
||||
{
|
||||
struct dentry *dentry;
|
||||
struct path path;
|
||||
@ -189,7 +189,7 @@ static int create_path(const char *nodepath)
|
||||
return err;
|
||||
}
|
||||
|
||||
static int handle_create(const char *nodename, mode_t mode, struct device *dev)
|
||||
static int handle_create(const char *nodename, umode_t mode, struct device *dev)
|
||||
{
|
||||
struct dentry *dentry;
|
||||
struct path path;
|
||||
@ -378,7 +378,7 @@ int devtmpfs_mount(const char *mntdir)
|
||||
|
||||
static DECLARE_COMPLETION(setup_done);
|
||||
|
||||
static int handle(const char *name, mode_t mode, struct device *dev)
|
||||
static int handle(const char *name, umode_t mode, struct device *dev)
|
||||
{
|
||||
if (mode)
|
||||
return handle_create(name, mode, dev);
|
||||
|
@ -63,7 +63,7 @@
|
||||
#include <linux/mutex.h>
|
||||
#include <linux/amifdreg.h>
|
||||
#include <linux/amifd.h>
|
||||
#include <linux/buffer_head.h>
|
||||
#include <linux/fs.h>
|
||||
#include <linux/blkdev.h>
|
||||
#include <linux/elevator.h>
|
||||
#include <linux/interrupt.h>
|
||||
|
@ -270,7 +270,7 @@ static const struct file_operations aoe_fops = {
|
||||
.llseek = noop_llseek,
|
||||
};
|
||||
|
||||
static char *aoe_devnode(struct device *dev, mode_t *mode)
|
||||
static char *aoe_devnode(struct device *dev, umode_t *mode)
|
||||
{
|
||||
return kasprintf(GFP_KERNEL, "etherd/%s", dev_name(dev));
|
||||
}
|
||||
|
@ -17,7 +17,7 @@
|
||||
#include <linux/highmem.h>
|
||||
#include <linux/mutex.h>
|
||||
#include <linux/radix-tree.h>
|
||||
#include <linux/buffer_head.h> /* invalidate_bh_lrus() */
|
||||
#include <linux/fs.h>
|
||||
#include <linux/slab.h>
|
||||
|
||||
#include <asm/uaccess.h>
|
||||
@ -402,14 +402,13 @@ static int brd_ioctl(struct block_device *bdev, fmode_t mode,
|
||||
error = -EBUSY;
|
||||
if (bdev->bd_openers <= 1) {
|
||||
/*
|
||||
* Invalidate the cache first, so it isn't written
|
||||
* back to the device.
|
||||
* Kill the cache first, so it isn't written back to the
|
||||
* device.
|
||||
*
|
||||
* Another thread might instantiate more buffercache here,
|
||||
* but there is not much we can do to close that race.
|
||||
*/
|
||||
invalidate_bh_lrus();
|
||||
truncate_inode_pages(bdev->bd_inode->i_mapping, 0);
|
||||
kill_bdev(bdev);
|
||||
brd_free_pages(brd);
|
||||
error = 0;
|
||||
}
|
||||
|
@ -188,7 +188,6 @@ static int print_unex = 1;
|
||||
#include <linux/init.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/mod_devicetable.h>
|
||||
#include <linux/buffer_head.h> /* for invalidate_buffers() */
|
||||
#include <linux/mutex.h>
|
||||
#include <linux/io.h>
|
||||
#include <linux/uaccess.h>
|
||||
|
@ -69,7 +69,6 @@
|
||||
#include <linux/freezer.h>
|
||||
#include <linux/mutex.h>
|
||||
#include <linux/writeback.h>
|
||||
#include <linux/buffer_head.h> /* for invalidate_bdev() */
|
||||
#include <linux/completion.h>
|
||||
#include <linux/highmem.h>
|
||||
#include <linux/kthread.h>
|
||||
|
@ -2817,7 +2817,7 @@ static const struct block_device_operations pktcdvd_ops = {
|
||||
.check_events = pkt_check_events,
|
||||
};
|
||||
|
||||
static char *pktcdvd_devnode(struct gendisk *gd, mode_t *mode)
|
||||
static char *pktcdvd_devnode(struct gendisk *gd, umode_t *mode)
|
||||
{
|
||||
return kasprintf(GFP_KERNEL, "pktcdvd/%s", gd->disk_name);
|
||||
}
|
||||
|
@ -267,7 +267,6 @@
|
||||
|
||||
#include <linux/module.h>
|
||||
#include <linux/fs.h>
|
||||
#include <linux/buffer_head.h>
|
||||
#include <linux/major.h>
|
||||
#include <linux/types.h>
|
||||
#include <linux/errno.h>
|
||||
|
@ -847,7 +847,7 @@ static const struct file_operations kmsg_fops = {
|
||||
|
||||
static const struct memdev {
|
||||
const char *name;
|
||||
mode_t mode;
|
||||
umode_t mode;
|
||||
const struct file_operations *fops;
|
||||
struct backing_dev_info *dev_info;
|
||||
} devlist[] = {
|
||||
@ -901,7 +901,7 @@ static const struct file_operations memory_fops = {
|
||||
.llseek = noop_llseek,
|
||||
};
|
||||
|
||||
static char *mem_devnode(struct device *dev, mode_t *mode)
|
||||
static char *mem_devnode(struct device *dev, umode_t *mode)
|
||||
{
|
||||
if (mode && devlist[MINOR(dev->devt)].mode)
|
||||
*mode = devlist[MINOR(dev->devt)].mode;
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user