1
0
Fork 0

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 *
  ...
hifive-unleashed-5.1
Linus Torvalds 2012-01-08 12:19:57 -08:00
commit 972b2c7199
476 changed files with 2587 additions and 2878 deletions

View File

@ -37,15 +37,15 @@ d_manage: no no yes (ref-walk) maybe
--------------------------- inode_operations --------------------------- --------------------------- inode_operations ---------------------------
prototypes: 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 struct dentry * (*lookup) (struct inode *,struct dentry *, struct nameid
ata *); ata *);
int (*link) (struct dentry *,struct inode *,struct dentry *); int (*link) (struct dentry *,struct inode *,struct dentry *);
int (*unlink) (struct inode *,struct dentry *); int (*unlink) (struct inode *,struct dentry *);
int (*symlink) (struct inode *,struct dentry *,const char *); 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 (*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 *, int (*rename) (struct inode *, struct dentry *,
struct inode *, struct dentry *); struct inode *, struct dentry *);
int (*readlink) (struct dentry *, char __user *,int); int (*readlink) (struct dentry *, char __user *,int);
@ -117,7 +117,7 @@ prototypes:
int (*statfs) (struct dentry *, struct kstatfs *); int (*statfs) (struct dentry *, struct kstatfs *);
int (*remount_fs) (struct super_block *, int *, char *); int (*remount_fs) (struct super_block *, int *, char *);
void (*umount_begin) (struct super_block *); 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_read)(struct super_block *, int, char *, size_t, loff_t);
ssize_t (*quota_write)(struct super_block *, int, const 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); int (*bdev_try_to_free_page)(struct super_block*, struct page*, gfp_t);

View File

@ -192,7 +192,7 @@ attribute value uses the store_attribute() method.
struct configfs_attribute { struct configfs_attribute {
char *ca_name; char *ca_name;
struct module *ca_owner; 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 When a config_item wants an attribute to appear as a file in the item's

View File

@ -35,7 +35,7 @@ described below will work.
The most general way to create a file within a debugfs directory is with: 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, struct dentry *parent, void *data,
const struct file_operations *fops); 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 for simple situations. Files containing a single integer value can be
created with any of: 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 *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 *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 *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); struct dentry *parent, u64 *value);
These files support both reading and writing the given value; if a specific 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, values in these files are in decimal; if hexadecimal is more appropriate,
the following functions can be used instead: 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 *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 *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 *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); struct dentry *parent, u64 *value);
These functions are useful as long as the developer knows the size of the 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 architectures, though, complicating the situation somewhat. There is a
function meant to help out in one special case: 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, struct dentry *parent,
size_t *value); size_t *value);
@ -90,7 +90,7 @@ a variable of type size_t.
Boolean values can be placed in debugfs with: 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); struct dentry *parent, u32 *value);
A read on the resulting file will yield either Y (for non-zero values) or 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; 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 dentry *parent,
struct debugfs_blob_wrapper *blob); struct debugfs_blob_wrapper *blob);

View File

@ -70,7 +70,7 @@ An attribute definition is simply:
struct attribute { struct attribute {
char * name; char * name;
struct module *owner; struct module *owner;
mode_t mode; umode_t mode;
}; };

View File

@ -225,7 +225,7 @@ struct super_operations {
void (*clear_inode) (struct inode *); void (*clear_inode) (struct inode *);
void (*umount_begin) (struct super_block *); 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_read)(struct super_block *, int, char *, size_t, loff_t);
ssize_t (*quota_write)(struct super_block *, int, const 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: filesystem. As of kernel 2.6.22, the following members are defined:
struct inode_operations { 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 *); struct dentry * (*lookup) (struct inode *,struct dentry *, struct nameidata *);
int (*link) (struct dentry *,struct inode *,struct dentry *); int (*link) (struct dentry *,struct inode *,struct dentry *);
int (*unlink) (struct inode *,struct dentry *); int (*unlink) (struct inode *,struct dentry *);
int (*symlink) (struct inode *,struct dentry *,const char *); 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 (*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 *, int (*rename) (struct inode *, struct dentry *,
struct inode *, struct dentry *); struct inode *, struct dentry *);
int (*readlink) (struct dentry *, char __user *,int); int (*readlink) (struct dentry *, char __user *,int);

View File

@ -1,28 +1 @@
#ifndef _ALPHA_IPCBUF_H #include <asm-generic/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 */

View File

@ -15,9 +15,4 @@
#include <asm-generic/int-l64.h> #include <asm-generic/int-l64.h>
#endif #endif
#ifndef __ASSEMBLY__
typedef unsigned int umode_t;
#endif /* __ASSEMBLY__ */
#endif /* _ALPHA_TYPES_H */ #endif /* _ALPHA_TYPES_H */

View File

@ -1,29 +1 @@
#ifndef __ASMARM_IPCBUF_H #include <asm-generic/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 */

View File

@ -3,12 +3,6 @@
#include <asm-generic/int-ll64.h> #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 * These aren't exported outside the kernel to avoid name space clashes
*/ */

View File

@ -215,7 +215,7 @@ static const struct file_operations debug_ops = {
.llseek = default_llseek, .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, struct dentry *dent,
int (*fill)(char *buf, int max)) int (*fill)(char *buf, int max))
{ {

View File

@ -1,29 +1 @@
#ifndef __ASM_AVR32_IPCBUF_H #include <asm-generic/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 */

View File

@ -10,12 +10,6 @@
#include <asm-generic/int-ll64.h> #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 * These aren't exported outside the kernel to avoid name space clashes
*/ */

View File

@ -1,29 +1 @@
#ifndef __CRIS_IPCBUF_H__ #include <asm-generic/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__ */

View File

@ -3,12 +3,6 @@
#include <asm-generic/int-ll64.h> #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 * These aren't exported outside the kernel to avoid name space clashes
*/ */

View File

@ -1,30 +1 @@
#ifndef __ASM_IPCBUF_H__ #include <asm-generic/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__ */

View File

@ -14,12 +14,6 @@
#include <asm-generic/int-ll64.h> #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 * These aren't exported outside the kernel to avoid name space clashes
*/ */

View File

@ -1,29 +1 @@
#ifndef __H8300_IPCBUF_H__ #include <asm-generic/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__ */

View File

@ -3,27 +3,10 @@
#include <asm-generic/int-ll64.h> #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__ #ifdef __KERNEL__
#define BITS_PER_LONG 32 #define BITS_PER_LONG 32
#endif /* __KERNEL__ */ #endif /* __KERNEL__ */
#endif /* __ASSEMBLY__ */
#endif /* _H8300_TYPES_H */ #endif /* _H8300_TYPES_H */

View File

@ -1,28 +1 @@
#ifndef _ASM_IA64_IPCBUF_H #include <asm-generic/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 */

View File

@ -28,8 +28,6 @@
# define __IA64_UL(x) ((unsigned long)(x)) # define __IA64_UL(x) ((unsigned long)(x))
# define __IA64_UL_CONST(x) x##UL # define __IA64_UL_CONST(x) x##UL
typedef unsigned int umode_t;
/* /*
* These aren't exported outside the kernel to avoid name space clashes * These aren't exported outside the kernel to avoid name space clashes
*/ */

View File

@ -2228,7 +2228,7 @@ pfm_alloc_file(pfm_context_t *ctx)
/* /*
* allocate a new dcache entry * 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) { if (!path.dentry) {
iput(inode); iput(inode);
return ERR_PTR(-ENOMEM); return ERR_PTR(-ENOMEM);

View File

@ -1,29 +1 @@
#ifndef _ASM_M32R_IPCBUF_H #include <asm-generic/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 */

View File

@ -3,12 +3,6 @@
#include <asm-generic/int-ll64.h> #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 * These aren't exported outside the kernel to avoid name space clashes
*/ */

View File

@ -1,29 +1 @@
#ifndef __m68k_IPCBUF_H__ #include <asm-generic/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__ */

View File

@ -10,12 +10,6 @@
*/ */
#include <asm-generic/int-ll64.h> #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 * These aren't exported outside the kernel to avoid name space clashes
*/ */

View File

@ -1,28 +1 @@
#ifndef _ASM_IPCBUF_H #include <asm-generic/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 */

View File

@ -21,12 +21,6 @@
# include <asm-generic/int-ll64.h> # include <asm-generic/int-ll64.h>
#endif #endif
#ifndef __ASSEMBLY__
typedef unsigned short umode_t;
#endif /* __ASSEMBLY__ */
/* /*
* These aren't exported outside the kernel to avoid name space clashes * These aren't exported outside the kernel to avoid name space clashes
*/ */

View File

@ -1,29 +1 @@
#ifndef _ASM_IPCBUF_H #include <asm-generic/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 */

View File

@ -13,12 +13,6 @@
#include <asm-generic/int-ll64.h> #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 * These aren't exported outside the kernel to avoid name space clashes
*/ */

View File

@ -136,16 +136,9 @@ struct hpux_ustat {
*/ */
static int hpux_ustat(dev_t dev, struct hpux_ustat __user *ubuf) 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 hpux_ustat tmp; /* Changed to hpux_ustat */
struct kstatfs sbuf; struct kstatfs sbuf;
int err = -EINVAL; int err = vfs_ustat(dev, &sbuf);
s = user_get_super(dev);
if (s == NULL)
goto out;
err = statfs_by_dentry(s->s_root, &sbuf);
drop_super(s);
if (err) if (err)
goto out; goto out;

View File

@ -3,10 +3,4 @@
#include <asm-generic/int-ll64.h> #include <asm-generic/int-ll64.h>
#ifndef __ASSEMBLY__
typedef unsigned short umode_t;
#endif /* __ASSEMBLY__ */
#endif #endif

View File

@ -237,7 +237,7 @@ extern long spu_sys_callback(struct spu_syscall_block *s);
struct file; struct file;
struct spufs_calls { struct spufs_calls {
long (*create_thread)(const char __user *name, long (*create_thread)(const char __user *name,
unsigned int flags, mode_t mode, unsigned int flags, umode_t mode,
struct file *neighbor); struct file *neighbor);
long (*spu_run)(struct file *filp, __u32 __user *unpc, long (*spu_run)(struct file *filp, __u32 __user *unpc,
__u32 __user *ustatus); __u32 __user *ustatus);

View File

@ -30,12 +30,6 @@
* 2 of the License, or (at your option) any later version. * 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 { typedef struct {
__u32 u[4]; __u32 u[4];
} __attribute__((aligned(16))) __vector128; } __attribute__((aligned(16))) __vector128;

View File

@ -783,7 +783,7 @@ static const struct file_operations lparcfg_fops = {
static int __init lparcfg_init(void) static int __init lparcfg_init(void)
{ {
struct proc_dir_entry *ent; 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 */ /* Allow writing if we have FW_FEATURE_SPLPAR */
if (firmware_has_feature(FW_FEATURE_SPLPAR) && if (firmware_has_feature(FW_FEATURE_SPLPAR) &&

View File

@ -65,8 +65,8 @@ static inline void spufs_calls_put(struct spufs_calls *calls) { }
#endif /* CONFIG_SPU_FS_MODULE */ #endif /* CONFIG_SPU_FS_MODULE */
asmlinkage long sys_spu_create(const char __user *name, SYSCALL_DEFINE4(spu_create, const char __user *, name, unsigned int, flags,
unsigned int flags, mode_t mode, int neighbor_fd) umode_t, mode, int, neighbor_fd)
{ {
long ret; long ret;
struct file *neighbor; struct file *neighbor;

View File

@ -74,7 +74,6 @@ spufs_alloc_inode(struct super_block *sb)
static void spufs_i_callback(struct rcu_head *head) static void spufs_i_callback(struct rcu_head *head)
{ {
struct inode *inode = container_of(head, struct inode, i_rcu); 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)); kmem_cache_free(spufs_inode_cache, SPUFS_I(inode));
} }
@ -92,7 +91,7 @@ spufs_init_once(void *p)
} }
static struct inode * 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; struct inode *inode;
@ -124,7 +123,7 @@ spufs_setattr(struct dentry *dentry, struct iattr *attr)
static int static int
spufs_new_file(struct super_block *sb, struct dentry *dentry, 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) size_t size, struct spu_context *ctx)
{ {
static const struct inode_operations spufs_file_iops = { 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, 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 spu_context *ctx)
{ {
struct dentry *dentry, *tmp; struct dentry *dentry, *tmp;
@ -264,7 +263,7 @@ EXPORT_SYMBOL_GPL(spufs_context_fops);
static int static int
spufs_mkdir(struct inode *dir, struct dentry *dentry, unsigned int flags, spufs_mkdir(struct inode *dir, struct dentry *dentry, unsigned int flags,
int mode) umode_t mode)
{ {
int ret; int ret;
struct inode *inode; struct inode *inode;
@ -447,7 +446,7 @@ spufs_set_affinity(unsigned int flags, struct spu_context *ctx,
static int static int
spufs_create_context(struct inode *inode, struct dentry *dentry, 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) struct file *aff_filp)
{ {
int ret; int ret;
@ -521,7 +520,7 @@ out:
} }
static int 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; int ret;
struct inode *inode; struct inode *inode;
@ -584,7 +583,7 @@ out:
static int spufs_create_gang(struct inode *inode, static int spufs_create_gang(struct inode *inode,
struct dentry *dentry, struct dentry *dentry,
struct vfsmount *mnt, int mode) struct vfsmount *mnt, umode_t mode)
{ {
int ret; int ret;
@ -612,7 +611,7 @@ out:
static struct file_system_type spufs_type; static struct file_system_type spufs_type;
long spufs_create(struct path *path, struct dentry *dentry, 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; int ret;

View File

@ -237,7 +237,7 @@ struct spufs_inode_info {
struct spufs_tree_descr { struct spufs_tree_descr {
const char *name; const char *name;
const struct file_operations *ops; const struct file_operations *ops;
int mode; umode_t mode;
size_t size; size_t size;
}; };
@ -249,7 +249,7 @@ extern const struct spufs_tree_descr spufs_dir_debug_contents[];
extern struct spufs_calls spufs_calls; extern struct spufs_calls spufs_calls;
long spufs_run_spu(struct spu_context *ctx, u32 *npc, u32 *status); long spufs_run_spu(struct spu_context *ctx, u32 *npc, u32 *status);
long spufs_create(struct path *nd, struct dentry *dentry, unsigned int flags, 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 */ /* ELF coredump callbacks for writing SPU ELF notes */
extern int spufs_coredump_extra_notes_size(void); extern int spufs_coredump_extra_notes_size(void);
extern int spufs_coredump_extra_notes_write(struct file *file, loff_t *foffset); extern int spufs_coredump_extra_notes_write(struct file *file, loff_t *foffset);

View File

@ -60,7 +60,7 @@ out:
} }
static long do_spu_create(const char __user *pathname, unsigned int flags, 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 path path;
struct dentry *dentry; struct dentry *dentry;

View File

@ -25,7 +25,6 @@
#include <linux/bio.h> #include <linux/bio.h>
#include <linux/blkdev.h> #include <linux/blkdev.h>
#include <linux/buffer_head.h>
#include <linux/device.h> #include <linux/device.h>
#include <linux/errno.h> #include <linux/errno.h>
#include <linux/fs.h> #include <linux/fs.h>

View File

@ -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); 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_uid = hypfs_info->uid;
ret->i_gid = hypfs_info->gid; ret->i_gid = hypfs_info->gid;
ret->i_atime = ret->i_mtime = ret->i_ctime = CURRENT_TIME; ret->i_atime = ret->i_mtime = ret->i_ctime = CURRENT_TIME;
if (mode & S_IFDIR) if (S_ISDIR(mode))
set_nlink(ret, 2); set_nlink(ret, 2);
} }
return ret; return ret;
@ -259,9 +259,9 @@ static int hypfs_parse_options(char *options, struct super_block *sb)
return 0; 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, ",uid=%u", hypfs_info->uid);
seq_printf(s, ",gid=%u", hypfs_info->gid); 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, static struct dentry *hypfs_create_file(struct super_block *sb,
struct dentry *parent, const char *name, struct dentry *parent, const char *name,
char *data, mode_t mode) char *data, umode_t mode)
{ {
struct dentry *dentry; struct dentry *dentry;
struct inode *inode; struct inode *inode;
@ -350,13 +350,13 @@ static struct dentry *hypfs_create_file(struct super_block *sb,
dentry = ERR_PTR(-ENOMEM); dentry = ERR_PTR(-ENOMEM);
goto fail; goto fail;
} }
if (mode & S_IFREG) { if (S_ISREG(mode)) {
inode->i_fop = &hypfs_file_ops; inode->i_fop = &hypfs_file_ops;
if (data) if (data)
inode->i_size = strlen(data); inode->i_size = strlen(data);
else else
inode->i_size = 0; inode->i_size = 0;
} else if (mode & S_IFDIR) { } else if (S_ISDIR(mode)) {
inode->i_op = &simple_dir_inode_operations; inode->i_op = &simple_dir_inode_operations;
inode->i_fop = &simple_dir_operations; inode->i_fop = &simple_dir_operations;
inc_nlink(parent->d_inode); inc_nlink(parent->d_inode);

View File

@ -73,7 +73,7 @@ typedef struct debug_info {
struct dentry* debugfs_entries[DEBUG_MAX_VIEWS]; struct dentry* debugfs_entries[DEBUG_MAX_VIEWS];
struct debug_view* views[DEBUG_MAX_VIEWS]; struct debug_view* views[DEBUG_MAX_VIEWS];
char name[DEBUG_MAX_NAME_LEN]; char name[DEBUG_MAX_NAME_LEN];
mode_t mode; umode_t mode;
} debug_info_t; } debug_info_t;
typedef int (debug_header_proc_t) (debug_info_t* id, 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); int buf_size);
debug_info_t *debug_register_mode(const char *name, int pages, int nr_areas, 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); gid_t gid);
void debug_unregister(debug_info_t* id); void debug_unregister(debug_info_t* id);

View File

@ -13,8 +13,6 @@
#ifndef __ASSEMBLY__ #ifndef __ASSEMBLY__
typedef unsigned short umode_t;
/* A address type so that arithmetic can be done on it & it can be upgraded to /* A address type so that arithmetic can be done on it & it can be upgraded to
64 bit when necessary 64 bit when necessary
*/ */

View File

@ -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_open(struct inode *inode, struct file *file);
static int debug_close(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, 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_get(debug_info_t *);
static void debug_info_put(debug_info_t *); static void debug_info_put(debug_info_t *);
static int debug_prolog_level_fn(debug_info_t * id, 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* static debug_info_t*
debug_info_create(const char *name, int pages_per_area, int nr_areas, 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; 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, 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) uid_t uid, gid_t gid)
{ {
debug_info_t *rc = NULL; debug_info_t *rc = NULL;
@ -1090,7 +1090,7 @@ debug_register_view(debug_info_t * id, struct debug_view *view)
int rc = 0; int rc = 0;
int i; int i;
unsigned long flags; unsigned long flags;
mode_t mode; umode_t mode;
struct dentry *pde; struct dentry *pde;
if (!id) if (!id)

View File

@ -20,7 +20,6 @@ typedef unsigned int __kernel_uid_t;
typedef unsigned int __kernel_gid_t; typedef unsigned int __kernel_gid_t;
typedef unsigned long __kernel_ino_t; typedef unsigned long __kernel_ino_t;
typedef unsigned int __kernel_mode_t; typedef unsigned int __kernel_mode_t;
typedef unsigned short __kernel_umode_t;
typedef unsigned int __kernel_nlink_t; typedef unsigned int __kernel_nlink_t;
typedef int __kernel_daddr_t; typedef int __kernel_daddr_t;
typedef long __kernel_off_t; typedef long __kernel_off_t;
@ -55,7 +54,6 @@ typedef unsigned short __kernel_uid_t;
typedef unsigned short __kernel_gid_t; typedef unsigned short __kernel_gid_t;
typedef unsigned long __kernel_ino_t; typedef unsigned long __kernel_ino_t;
typedef unsigned short __kernel_mode_t; typedef unsigned short __kernel_mode_t;
typedef unsigned short __kernel_umode_t;
typedef short __kernel_nlink_t; typedef short __kernel_nlink_t;
typedef long __kernel_daddr_t; typedef long __kernel_daddr_t;
typedef long __kernel_off_t; typedef long __kernel_off_t;

View File

@ -12,12 +12,6 @@
#include <asm-generic/int-ll64.h> #include <asm-generic/int-ll64.h>
#ifndef __ASSEMBLY__
typedef unsigned short umode_t;
#endif /* __ASSEMBLY__ */
#endif /* defined(__sparc__) */ #endif /* defined(__sparc__) */
#endif /* defined(_SPARC_TYPES_H) */ #endif /* defined(_SPARC_TYPES_H) */

View File

@ -177,7 +177,7 @@ static struct notifier_block __refdata cpuid_class_cpu_notifier =
.notifier_call = cpuid_class_cpu_callback, .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)); return kasprintf(GFP_KERNEL, "cpu/%u/cpuid", MINOR(dev->devt));
} }

View File

@ -236,7 +236,7 @@ static struct notifier_block __refdata msr_class_cpu_notifier = {
.notifier_call = msr_class_cpu_callback, .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)); return kasprintf(GFP_KERNEL, "cpu/%u/msr", MINOR(dev->devt));
} }

View File

@ -109,7 +109,7 @@ static const struct file_operations u32_array_fops = {
.llseek = no_llseek, .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, struct dentry *parent,
u32 *array, unsigned elements) u32 *array, unsigned elements)
{ {

View File

@ -3,7 +3,7 @@
struct dentry * __init xen_init_debugfs(void); 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, struct dentry *parent,
u32 *array, unsigned elements); u32 *array, unsigned elements);

View File

@ -23,8 +23,6 @@
#ifndef __ASSEMBLY__ #ifndef __ASSEMBLY__
typedef unsigned short umode_t;
/* /*
* These aren't exported outside the kernel to avoid name space clashes * These aren't exported outside the kernel to avoid name space clashes
*/ */

View File

@ -99,6 +99,12 @@ config BLK_DEV_THROTTLING
See Documentation/cgroups/blkio-controller.txt for more information. See Documentation/cgroups/blkio-controller.txt for more information.
menu "Partition Types"
source "block/partitions/Kconfig"
endmenu
endif # BLOCK endif # BLOCK
config BLOCK_COMPAT config BLOCK_COMPAT

View File

@ -5,7 +5,8 @@
obj-$(CONFIG_BLOCK) := elevator.o blk-core.o blk-tag.o blk-sysfs.o \ 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-flush.o blk-settings.o blk-ioc.o blk-map.o \
blk-exec.o blk-merge.o blk-softirq.o blk-timeout.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_BSG) += bsg.o
obj-$(CONFIG_BLK_DEV_BSGLIB) += bsg-lib.o obj-$(CONFIG_BLK_DEV_BSGLIB) += bsg-lib.o

View File

@ -1070,7 +1070,7 @@ EXPORT_SYMBOL_GPL(bsg_register_queue);
static struct cdev bsg_cdev; 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)); return kasprintf(GFP_KERNEL, "bsg/%s", dev_name(dev));
} }

View File

@ -15,7 +15,6 @@
#include <linux/slab.h> #include <linux/slab.h>
#include <linux/kmod.h> #include <linux/kmod.h>
#include <linux/kobj_map.h> #include <linux/kobj_map.h>
#include <linux/buffer_head.h>
#include <linux/mutex.h> #include <linux/mutex.h>
#include <linux/idr.h> #include <linux/idr.h>
#include <linux/log2.h> #include <linux/log2.h>
@ -507,7 +506,7 @@ static int exact_lock(dev_t devt, void *data)
return 0; return 0;
} }
void register_disk(struct gendisk *disk) static void register_disk(struct gendisk *disk)
{ {
struct device *ddev = disk_to_dev(disk); struct device *ddev = disk_to_dev(disk);
struct block_device *bdev; struct block_device *bdev;
@ -1109,7 +1108,7 @@ struct class block_class = {
.name = "block", .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); struct gendisk *disk = dev_to_disk(dev);

View File

@ -5,7 +5,7 @@
#include <linux/blkpg.h> #include <linux/blkpg.h>
#include <linux/hdreg.h> #include <linux/hdreg.h>
#include <linux/backing-dev.h> #include <linux/backing-dev.h>
#include <linux/buffer_head.h> #include <linux/fs.h>
#include <linux/blktrace_api.h> #include <linux/blktrace_api.h>
#include <asm/uaccess.h> #include <asm/uaccess.h>

View File

@ -1,6 +1,4 @@
/* /*
* fs/partitions/check.c
*
* Code extracted from drivers/block/genhd.c * Code extracted from drivers/block/genhd.c
* Copyright (C) 1991-1998 Linus Torvalds * Copyright (C) 1991-1998 Linus Torvalds
* Re-organised Feb 1998 Russell King * Re-organised Feb 1998 Russell King
@ -9,8 +7,6 @@
* block drivers, which allows all the partition code to * block drivers, which allows all the partition code to
* be grouped in one location, and it to be mostly self * be grouped in one location, and it to be mostly self
* contained. * contained.
*
* Added needed MAJORS for new pairs, {hdi,hdj}, {hdk,hdl}
*/ */
#include <linux/init.h> #include <linux/init.h>
@ -22,98 +18,11 @@
#include <linux/genhd.h> #include <linux/genhd.h>
#include <linux/blktrace_api.h> #include <linux/blktrace_api.h>
#include "check.h" #include "partitions/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"
#ifdef CONFIG_BLK_DEV_MD #ifdef CONFIG_BLK_DEV_MD
extern void md_autodetect_dev(dev_t dev); extern void md_autodetect_dev(dev_t dev);
#endif #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. * 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); 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, static ssize_t part_partition_show(struct device *dev,
struct device_attribute *attr, char *buf) struct device_attribute *attr, char *buf)
{ {

View 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);
}

View File

@ -22,6 +22,9 @@ struct parsed_partitions {
char *pp_buf; char *pp_buf;
}; };
struct parsed_partitions *
check_partition(struct gendisk *, struct block_device *);
static inline void *read_part_sector(struct parsed_partitions *state, static inline void *read_part_sector(struct parsed_partitions *state,
sector_t n, Sector *p) sector_t n, Sector *p)
{ {

View File

@ -873,7 +873,7 @@ DECLARE_FILE_FUNCTIONS(alarm);
static const struct battery_file { static const struct battery_file {
struct file_operations ops; struct file_operations ops;
mode_t mode; umode_t mode;
const char *name; const char *name;
} acpi_battery_file[] = { } acpi_battery_file[] = {
FILE_DESCRIPTION_RO(info), FILE_DESCRIPTION_RO(info),

View File

@ -105,7 +105,7 @@ int acpi_ec_add_debugfs(struct acpi_ec *ec, unsigned int ec_device_count)
{ {
struct dentry *dev_dir; struct dentry *dev_dir;
char name[64]; char name[64];
mode_t mode = 0400; umode_t mode = 0400;
if (ec_device_count == 0) { if (ec_device_count == 0) {
acpi_ec_debugfs_dir = debugfs_create_dir("ec", NULL); acpi_ec_debugfs_dir = debugfs_create_dir("ec", NULL);

View File

@ -248,7 +248,7 @@ static int dev_uevent(struct kset *kset, struct kobject *kobj,
if (MAJOR(dev->devt)) { if (MAJOR(dev->devt)) {
const char *tmp; const char *tmp;
const char *name; const char *name;
mode_t mode = 0; umode_t mode = 0;
add_uevent_var(env, "MAJOR=%u", MAJOR(dev->devt)); add_uevent_var(env, "MAJOR=%u", MAJOR(dev->devt));
add_uevent_var(env, "MINOR=%u", MINOR(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. * freed by the caller.
*/ */
const char *device_get_devnode(struct device *dev, const char *device_get_devnode(struct device *dev,
mode_t *mode, const char **tmp) umode_t *mode, const char **tmp)
{ {
char *s; char *s;

View File

@ -40,7 +40,7 @@ static struct req {
struct completion done; struct completion done;
int err; int err;
const char *name; const char *name;
mode_t mode; /* 0 => delete */ umode_t mode; /* 0 => delete */
struct device *dev; struct device *dev;
} *requests; } *requests;
@ -142,7 +142,7 @@ int devtmpfs_delete_node(struct device *dev)
return req.err; 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 dentry *dentry;
struct path path; struct path path;
@ -189,7 +189,7 @@ static int create_path(const char *nodepath)
return err; 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 dentry *dentry;
struct path path; struct path path;
@ -378,7 +378,7 @@ int devtmpfs_mount(const char *mntdir)
static DECLARE_COMPLETION(setup_done); 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) if (mode)
return handle_create(name, mode, dev); return handle_create(name, mode, dev);

View File

@ -63,7 +63,7 @@
#include <linux/mutex.h> #include <linux/mutex.h>
#include <linux/amifdreg.h> #include <linux/amifdreg.h>
#include <linux/amifd.h> #include <linux/amifd.h>
#include <linux/buffer_head.h> #include <linux/fs.h>
#include <linux/blkdev.h> #include <linux/blkdev.h>
#include <linux/elevator.h> #include <linux/elevator.h>
#include <linux/interrupt.h> #include <linux/interrupt.h>

View File

@ -270,7 +270,7 @@ static const struct file_operations aoe_fops = {
.llseek = noop_llseek, .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)); return kasprintf(GFP_KERNEL, "etherd/%s", dev_name(dev));
} }

View File

@ -17,7 +17,7 @@
#include <linux/highmem.h> #include <linux/highmem.h>
#include <linux/mutex.h> #include <linux/mutex.h>
#include <linux/radix-tree.h> #include <linux/radix-tree.h>
#include <linux/buffer_head.h> /* invalidate_bh_lrus() */ #include <linux/fs.h>
#include <linux/slab.h> #include <linux/slab.h>
#include <asm/uaccess.h> #include <asm/uaccess.h>
@ -402,14 +402,13 @@ static int brd_ioctl(struct block_device *bdev, fmode_t mode,
error = -EBUSY; error = -EBUSY;
if (bdev->bd_openers <= 1) { if (bdev->bd_openers <= 1) {
/* /*
* Invalidate the cache first, so it isn't written * Kill the cache first, so it isn't written back to the
* back to the device. * device.
* *
* Another thread might instantiate more buffercache here, * Another thread might instantiate more buffercache here,
* but there is not much we can do to close that race. * but there is not much we can do to close that race.
*/ */
invalidate_bh_lrus(); kill_bdev(bdev);
truncate_inode_pages(bdev->bd_inode->i_mapping, 0);
brd_free_pages(brd); brd_free_pages(brd);
error = 0; error = 0;
} }

View File

@ -188,7 +188,6 @@ static int print_unex = 1;
#include <linux/init.h> #include <linux/init.h>
#include <linux/platform_device.h> #include <linux/platform_device.h>
#include <linux/mod_devicetable.h> #include <linux/mod_devicetable.h>
#include <linux/buffer_head.h> /* for invalidate_buffers() */
#include <linux/mutex.h> #include <linux/mutex.h>
#include <linux/io.h> #include <linux/io.h>
#include <linux/uaccess.h> #include <linux/uaccess.h>

View File

@ -69,7 +69,6 @@
#include <linux/freezer.h> #include <linux/freezer.h>
#include <linux/mutex.h> #include <linux/mutex.h>
#include <linux/writeback.h> #include <linux/writeback.h>
#include <linux/buffer_head.h> /* for invalidate_bdev() */
#include <linux/completion.h> #include <linux/completion.h>
#include <linux/highmem.h> #include <linux/highmem.h>
#include <linux/kthread.h> #include <linux/kthread.h>

View File

@ -2817,7 +2817,7 @@ static const struct block_device_operations pktcdvd_ops = {
.check_events = pkt_check_events, .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); return kasprintf(GFP_KERNEL, "pktcdvd/%s", gd->disk_name);
} }

View File

@ -267,7 +267,6 @@
#include <linux/module.h> #include <linux/module.h>
#include <linux/fs.h> #include <linux/fs.h>
#include <linux/buffer_head.h>
#include <linux/major.h> #include <linux/major.h>
#include <linux/types.h> #include <linux/types.h>
#include <linux/errno.h> #include <linux/errno.h>

View File

@ -847,7 +847,7 @@ static const struct file_operations kmsg_fops = {
static const struct memdev { static const struct memdev {
const char *name; const char *name;
mode_t mode; umode_t mode;
const struct file_operations *fops; const struct file_operations *fops;
struct backing_dev_info *dev_info; struct backing_dev_info *dev_info;
} devlist[] = { } devlist[] = {
@ -901,7 +901,7 @@ static const struct file_operations memory_fops = {
.llseek = noop_llseek, .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) if (mode && devlist[MINOR(dev->devt)].mode)
*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