summaryrefslogtreecommitdiff
path: root/include/linux
diff options
context:
space:
mode:
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/aio.h6
-rw-r--r--include/linux/amigaffs.h2
-rw-r--r--include/linux/backing-dev.h12
-rw-r--r--include/linux/bio.h1
-rw-r--r--include/linux/device.h1
-rw-r--r--include/linux/ext3_fs.h1
-rw-r--r--include/linux/file.h3
-rw-r--r--include/linux/fs.h5
-rw-r--r--include/linux/i2c.h5
-rw-r--r--include/linux/list.h1
-rw-r--r--include/linux/nfsd/export.h7
-rw-r--r--include/linux/pci.h11
-rw-r--r--include/linux/pci_ids.h1
-rw-r--r--include/linux/raid/md.h8
-rw-r--r--include/linux/raid/md_k.h36
-rw-r--r--include/linux/raid/md_p.h53
-rw-r--r--include/linux/raid/multipath.h1
-rw-r--r--include/linux/raid/raid1.h2
-rw-r--r--include/linux/raid/raid5.h2
-rw-r--r--include/linux/security.h72
-rw-r--r--include/linux/serial_core.h14
-rw-r--r--include/linux/sunrpc/cache.h1
-rw-r--r--include/linux/thread_info.h2
-rw-r--r--include/linux/writeback.h1
24 files changed, 175 insertions, 73 deletions
diff --git a/include/linux/aio.h b/include/linux/aio.h
index c03d92d84e39..6b106ebe99e8 100644
--- a/include/linux/aio.h
+++ b/include/linux/aio.h
@@ -37,9 +37,9 @@ struct kioctx;
#define kiocbSetKicked(iocb) set_bit(KIF_KICKED, &(iocb)->ki_flags)
#define kiocbSetCancelled(iocb) set_bit(KIF_CANCELLED, &(iocb)->ki_flags)
-#define kiocbClearLocked(iocb) set_bit(KIF_LOCKED, &(iocb)->ki_flags)
-#define kiocbClearKicked(iocb) set_bit(KIF_KICKED, &(iocb)->ki_flags)
-#define kiocbClearCancelled(iocb) set_bit(KIF_CANCELLED, &(iocb)->ki_flags)
+#define kiocbClearLocked(iocb) clear_bit(KIF_LOCKED, &(iocb)->ki_flags)
+#define kiocbClearKicked(iocb) clear_bit(KIF_KICKED, &(iocb)->ki_flags)
+#define kiocbClearCancelled(iocb) clear_bit(KIF_CANCELLED, &(iocb)->ki_flags)
#define kiocbIsLocked(iocb) test_bit(0, &(iocb)->ki_flags)
#define kiocbIsKicked(iocb) test_bit(1, &(iocb)->ki_flags)
diff --git a/include/linux/amigaffs.h b/include/linux/amigaffs.h
index bde160f417fd..6fb6bb5c6696 100644
--- a/include/linux/amigaffs.h
+++ b/include/linux/amigaffs.h
@@ -73,7 +73,7 @@ static inline void
affs_brelse(struct buffer_head *bh)
{
if (bh)
- pr_debug("affs_brelse: %ld\n", bh->b_blocknr);
+ pr_debug("affs_brelse: %lld\n", (long long) bh->b_blocknr);
brelse(bh);
}
diff --git a/include/linux/backing-dev.h b/include/linux/backing-dev.h
index 55218964e7ef..94c93c9c5f66 100644
--- a/include/linux/backing-dev.h
+++ b/include/linux/backing-dev.h
@@ -17,8 +17,6 @@ enum bdi_state {
BDI_pdflush, /* A pdflush thread is working this device */
BDI_write_congested, /* The write queue is getting full */
BDI_read_congested, /* The read queue is getting full */
- BDI_write_active, /* There are one or more queued writes */
- BDI_read_active, /* There are one or more queued reads */
BDI_unused, /* Available bits start here */
};
@@ -44,14 +42,4 @@ static inline int bdi_write_congested(struct backing_dev_info *bdi)
return test_bit(BDI_write_congested, &bdi->state);
}
-static inline int bdi_read_active(struct backing_dev_info *bdi)
-{
- return test_bit(BDI_read_active, &bdi->state);
-}
-
-static inline int bdi_write_active(struct backing_dev_info *bdi)
-{
- return test_bit(BDI_write_active, &bdi->state);
-}
-
#endif /* _LINUX_BACKING_DEV_H */
diff --git a/include/linux/bio.h b/include/linux/bio.h
index ca324808509f..4eb82c8b33fb 100644
--- a/include/linux/bio.h
+++ b/include/linux/bio.h
@@ -239,7 +239,6 @@ extern inline char *bio_kmap_irq(struct bio *bio, unsigned long *flags)
* balancing is a lot nicer this way
*/
local_save_flags(*flags);
- local_irq_disable();
addr = (unsigned long) kmap_atomic(bio_page(bio), KM_BIO_SRC_IRQ);
if (addr & ~PAGE_MASK)
diff --git a/include/linux/device.h b/include/linux/device.h
index e27039ec2222..908d6b708fb7 100644
--- a/include/linux/device.h
+++ b/include/linux/device.h
@@ -366,6 +366,7 @@ extern int platform_device_register(struct platform_device *);
extern void platform_device_unregister(struct platform_device *);
extern struct bus_type platform_bus_type;
+extern struct device legacy_bus;
/* drivers/base/power.c */
extern int device_suspend(u32 state, u32 level);
diff --git a/include/linux/ext3_fs.h b/include/linux/ext3_fs.h
index 0612ce8e8274..b3da32479e13 100644
--- a/include/linux/ext3_fs.h
+++ b/include/linux/ext3_fs.h
@@ -730,6 +730,7 @@ extern void ext3_discard_prealloc (struct inode *);
extern void ext3_dirty_inode(struct inode *);
extern int ext3_change_inode_journal_flag(struct inode *, int);
extern void ext3_truncate (struct inode *);
+extern void ext3_set_inode_flags(struct inode *);
/* ioctl.c */
extern int ext3_ioctl (struct inode *, struct file *, unsigned int,
diff --git a/include/linux/file.h b/include/linux/file.h
index e5c90a88ba71..0bfe318d873b 100644
--- a/include/linux/file.h
+++ b/include/linux/file.h
@@ -40,6 +40,9 @@ extern void FASTCALL(set_close_on_exec(unsigned int fd, int flag));
extern void put_filp(struct file *);
extern int get_unused_fd(void);
extern void FASTCALL(put_unused_fd(unsigned int fd));
+struct kmem_cache_s;
+extern void filp_ctor(void * objp, struct kmem_cache_s *cachep, unsigned long cflags);
+extern void filp_dtor(void * objp, struct kmem_cache_s *cachep, unsigned long dflags);
extern struct file ** alloc_fd_array(int);
extern int expand_fd_array(struct files_struct *, int nr);
diff --git a/include/linux/fs.h b/include/linux/fs.h
index 14bd953f6a64..d6741ac40fb4 100644
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
@@ -456,7 +456,10 @@ extern spinlock_t files_lock;
#define get_file(x) atomic_inc(&(x)->f_count)
#define file_count(x) atomic_read(&(x)->f_count)
-extern int init_private_file(struct file *, struct dentry *, int);
+/* Initialize and open a private file and allocate its security structure. */
+extern int open_private_file(struct file *, struct dentry *, int);
+/* Release a private file and free its security structure. */
+extern void close_private_file(struct file *file);
#define MAX_NON_LFS ((1UL<<31) - 1)
diff --git a/include/linux/i2c.h b/include/linux/i2c.h
index 0b293a405341..a8f482b94ba4 100644
--- a/include/linux/i2c.h
+++ b/include/linux/i2c.h
@@ -34,6 +34,7 @@
#include <linux/module.h>
#include <linux/types.h>
#include <linux/i2c-id.h>
+#include <linux/device.h> /* for struct device */
#include <asm/semaphore.h>
/* --- General options ------------------------------------------------ */
@@ -144,6 +145,8 @@ struct i2c_driver {
int (*command)(struct i2c_client *client,unsigned int cmd, void *arg);
};
+extern struct bus_type i2c_bus_type;
+
/*
* i2c_client identifies a single device (i.e. chip) that is connected to an
* i2c bus. The behaviour is defined by the routines of the driver. This
@@ -228,12 +231,14 @@ struct i2c_adapter {
int timeout;
int retries;
+ struct device dev; /* the adapter device */
#ifdef CONFIG_PROC_FS
/* No need to set this when you initialize the adapter */
int inode;
#endif /* def CONFIG_PROC_FS */
};
+#define to_i2c_adapter(d) container_of(d, struct i2c_adapter, dev)
/*flags for the driver struct: */
#define I2C_DF_NOTIFY 0x01 /* notify on bus (de/a)ttaches */
diff --git a/include/linux/list.h b/include/linux/list.h
index 3cd4d3bd1ebb..f082a59aa3c8 100644
--- a/include/linux/list.h
+++ b/include/linux/list.h
@@ -5,7 +5,6 @@
#include <linux/stddef.h>
#include <linux/prefetch.h>
-#include <linux/stddef.h>
#include <asm/system.h>
/*
diff --git a/include/linux/nfsd/export.h b/include/linux/nfsd/export.h
index 864e3b801f0f..48860ac34dae 100644
--- a/include/linux/nfsd/export.h
+++ b/include/linux/nfsd/export.h
@@ -35,12 +35,13 @@
#define NFSEXP_UIDMAP 0x0040
#define NFSEXP_KERBEROS 0x0080 /* not available */
#define NFSEXP_SUNSECURE 0x0100
-#define NFSEXP_CROSSMNT 0x0200
+#define NFSEXP_NOHIDE 0x0200
#define NFSEXP_NOSUBTREECHECK 0x0400
#define NFSEXP_NOAUTHNLM 0x0800 /* Don't authenticate NLM requests - just trust */
#define NFSEXP_MSNFS 0x1000 /* do silly things that MS clients expect */
#define NFSEXP_FSID 0x2000
-#define NFSEXP_ALLFLAGS 0x3FFF
+#define NFSEXP_CROSSMNT 0x4000
+#define NFSEXP_ALLFLAGS 0x7FFF
#ifdef __KERNEL__
@@ -73,7 +74,7 @@ struct svc_expkey {
#define EX_SECURE(exp) (!((exp)->ex_flags & NFSEXP_INSECURE_PORT))
#define EX_ISSYNC(exp) (!((exp)->ex_flags & NFSEXP_ASYNC))
#define EX_RDONLY(exp) ((exp)->ex_flags & NFSEXP_READONLY)
-#define EX_CROSSMNT(exp) ((exp)->ex_flags & NFSEXP_CROSSMNT)
+#define EX_NOHIDE(exp) ((exp)->ex_flags & NFSEXP_NOHIDE)
#define EX_SUNSECURE(exp) ((exp)->ex_flags & NFSEXP_SUNSECURE)
#define EX_WGATHER(exp) ((exp)->ex_flags & NFSEXP_GATHERED_WRITES)
diff --git a/include/linux/pci.h b/include/linux/pci.h
index 393417af2f89..f87c44ae0689 100644
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
@@ -485,11 +485,9 @@ struct pci_ops {
int (*write)(struct pci_bus *bus, unsigned int devfn, int where, int size, u32 val);
};
-struct pbus_set_ranges_data
-{
- unsigned long io_start, io_end;
- unsigned long mem_start, mem_end;
- unsigned long prefetch_start, prefetch_end;
+struct pci_bus_region {
+ unsigned long start;
+ unsigned long end;
};
struct pci_driver {
@@ -531,10 +529,7 @@ char *pcibios_setup (char *str);
/* Used only when drivers/pci/setup.c is used */
void pcibios_align_resource(void *, struct resource *,
unsigned long, unsigned long);
-void pcibios_update_resource(struct pci_dev *, struct resource *,
- struct resource *, int);
void pcibios_update_irq(struct pci_dev *, int irq);
-void pcibios_fixup_pbus_ranges(struct pci_bus *, struct pbus_set_ranges_data *);
/* Generic PCI functions used internally */
diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h
index e2e9b9f1c2c9..ba94052020f0 100644
--- a/include/linux/pci_ids.h
+++ b/include/linux/pci_ids.h
@@ -1235,6 +1235,7 @@
#define PCI_VENDOR_ID_XIRCOM 0x115d
#define PCI_DEVICE_ID_XIRCOM_X3201_ETH 0x0003
+#define PCI_DEVICE_ID_XIRCOM_RBM56G 0x0101
#define PCI_DEVICE_ID_XIRCOM_X3201_MDM 0x0103
#define PCI_VENDOR_ID_RENDITION 0x1163
diff --git a/include/linux/raid/md.h b/include/linux/raid/md.h
index d7834b08cc88..3d4faa9f7171 100644
--- a/include/linux/raid/md.h
+++ b/include/linux/raid/md.h
@@ -27,6 +27,7 @@
#include <linux/module.h>
#include <linux/hdreg.h>
#include <linux/proc_fs.h>
+#include <linux/seq_file.h>
#include <linux/smp_lock.h>
#include <linux/delay.h>
#include <net/checksum.h>
@@ -68,13 +69,14 @@ extern inline char * bdev_partition_name (struct block_device *bdev)
}
extern int register_md_personality (int p_num, mdk_personality_t *p);
extern int unregister_md_personality (int p_num);
-extern mdk_thread_t * md_register_thread (void (*run) (void *data),
- void *data, const char *name);
+extern mdk_thread_t * md_register_thread (void (*run) (mddev_t *mddev),
+ mddev_t *mddev, const char *name);
extern void md_unregister_thread (mdk_thread_t *thread);
extern void md_wakeup_thread(mdk_thread_t *thread);
+extern void md_check_recovery(mddev_t *mddev);
extern void md_interrupt_thread (mdk_thread_t *thread);
extern void md_write_start(mddev_t *mddev);
-extern void md_write_end(mddev_t *mddev, mdk_thread_t *thread);
+extern void md_write_end(mddev_t *mddev);
extern void md_handle_safemode(mddev_t *mddev);
extern void md_done_sync(mddev_t *mddev, int blocks, int ok);
extern void md_sync_acct(mdk_rdev_t *rdev, unsigned long nr_sectors);
diff --git a/include/linux/raid/md_k.h b/include/linux/raid/md_k.h
index 6426a2c3fe8f..02bdf9db2ae2 100644
--- a/include/linux/raid/md_k.h
+++ b/include/linux/raid/md_k.h
@@ -155,6 +155,7 @@ struct mdk_rdev_s
struct page *sb_page;
int sb_loaded;
+ sector_t data_offset; /* start of data in array */
sector_t sb_offset;
int preferred_minor; /* autorun support */
@@ -206,22 +207,31 @@ struct mddev_s
char uuid[16];
+ struct mdk_thread_s *thread; /* management thread */
struct mdk_thread_s *sync_thread; /* doing resync or reconstruct */
unsigned long curr_resync; /* blocks scheduled */
unsigned long resync_mark; /* a recent timestamp */
unsigned long resync_mark_cnt;/* blocks written at resync_mark */
- /* recovery_running is 0 for no recovery/resync,
- * 1 for active recovery
- * 2 for active resync
- * -error for an error (e.g. -EINTR)
- * it can only be set > 0 under reconfig_sem
+
+ /* recovery/resync flags
+ * NEEDED: we might need to start a resync/recover
+ * RUNNING: a thread is running, or about to be started
+ * SYNC: actually doing a resync, not a recovery
+ * ERR: and IO error was detected - abort the resync/recovery
+ * INTR: someone requested a (clean) early abort.
+ * DONE: thread is done and is waiting to be reaped
*/
- int recovery_running;
- int recovery_error; /* error from recovery write */
+#define MD_RECOVERY_RUNNING 0
+#define MD_RECOVERY_SYNC 1
+#define MD_RECOVERY_ERR 2
+#define MD_RECOVERY_INTR 3
+#define MD_RECOVERY_DONE 4
+#define MD_RECOVERY_NEEDED 5
+ unsigned long recovery;
+
int in_sync; /* know to not need resync */
struct semaphore reconfig_sem;
atomic_t active;
- int spares;
int degraded; /* whether md should consider
* adding a spare
@@ -230,9 +240,11 @@ struct mddev_s
atomic_t recovery_active; /* blocks scheduled, but not written */
wait_queue_head_t recovery_wait;
sector_t recovery_cp;
- int safemode; /* if set, update "clean" superblock
+ unsigned int safemode; /* if set, update "clean" superblock
* when no writes pending.
*/
+ unsigned int safemode_delay;
+ struct timer_list safemode_timer;
atomic_t writes_pending;
request_queue_t queue; /* for plugging ... */
@@ -245,7 +257,7 @@ struct mdk_personality_s
int (*make_request)(request_queue_t *q, struct bio *bio);
int (*run)(mddev_t *mddev);
int (*stop)(mddev_t *mddev);
- int (*status)(char *page, mddev_t *mddev);
+ void (*status)(struct seq_file *seq, mddev_t *mddev);
/* error_handler must set ->faulty and clear ->in_sync
* if appropriate, and should abort recovery if needed
*/
@@ -292,8 +304,8 @@ extern mdk_rdev_t * find_rdev_nr(mddev_t *mddev, int nr);
ITERATE_RDEV_GENERIC(pending_raid_disks,rdev,tmp)
typedef struct mdk_thread_s {
- void (*run) (void *data);
- void *data;
+ void (*run) (mddev_t *mddev);
+ mddev_t *mddev;
wait_queue_head_t wqueue;
unsigned long flags;
struct completion *event;
diff --git a/include/linux/raid/md_p.h b/include/linux/raid/md_p.h
index cb002ba3556f..022b607bf9d8 100644
--- a/include/linux/raid/md_p.h
+++ b/include/linux/raid/md_p.h
@@ -173,5 +173,58 @@ static inline __u64 md_event(mdp_super_t *sb) {
return (ev<<32)| sb->events_lo;
}
+/*
+ * The version-1 superblock :
+ * All numeric fields are little-endian.
+ *
+ * total size: 256 bytes plus 2 per device.
+ * 1K allows 384 devices.
+ */
+struct mdp_superblock_1 {
+ /* constant array information - 128 bytes */
+ __u32 magic; /* MD_SB_MAGIC: 0xa92b4efc - little endian */
+ __u32 major_version; /* 1 */
+ __u32 feature_map; /* 0 for now */
+ __u32 pad0; /* always set to 0 when writing */
+
+ __u8 set_uuid[16]; /* user-space generated. */
+ char set_name[32]; /* set and interpreted by user-space */
+
+ __u64 ctime; /* lo 40 bits are seconds, top 24 are microseconds or 0*/
+ __u32 level; /* -4 (multipath), -1 (linear), 0,1,4,5 */
+ __u32 layout; /* only for raid5 currently */
+ __u64 size; /* used size of component devices, in 512byte sectors */
+
+ __u32 chunksize; /* in 512byte sectors */
+ __u32 raid_disks;
+ __u8 pad1[128-92]; /* set to 0 when written */
+
+ /* constant this-device information - 64 bytes */
+ __u64 data_offset; /* sector start of data, often 0 */
+ __u64 data_size; /* sectors in this device that can be used for data */
+ __u64 super_offset; /* sector start of this superblock */
+ __u64 recovery_offset;/* sectors before this offset (from data_offset) have been recovered */
+ __u32 dev_number; /* permanent identifier of this device - not role in raid */
+ __u32 cnt_corrected_read; /* number of read errors that were corrected by re-writing */
+ __u8 device_uuid[16]; /* user-space setable, ignored by kernel */
+ __u8 pad2[64-56]; /* set to 0 when writing */
+
+ /* array state information - 64 bytes */
+ __u64 utime; /* 40 bits second, 24 btes microseconds */
+ __u64 events; /* incremented when superblock updated */
+ __u64 resync_offset; /* data before this offset (from data_offset) known to be in sync */
+ __u32 sb_csum; /* checksum upto devs[max_dev] */
+ __u32 max_dev; /* size of devs[] array to consider */
+ __u8 pad3[64-40]; /* set to 0 when writing */
+
+ /* device state information. Indexed by dev_number.
+ * 2 bytes per device
+ * Note there are no per-device state flags. State information is rolled
+ * into the 'roles' value. If a device is spare or faulty, then it doesn't
+ * have a meaningful role.
+ */
+ __u16 dev_roles[0]; /* role in array, or 0xffff for a spare, or 0xfffe for faulty */
+};
+
#endif
diff --git a/include/linux/raid/multipath.h b/include/linux/raid/multipath.h
index 50db7f3c8c57..42d040ea63df 100644
--- a/include/linux/raid/multipath.h
+++ b/include/linux/raid/multipath.h
@@ -13,7 +13,6 @@ struct multipath_private_data {
struct multipath_info multipaths[MD_SB_DISKS];
int raid_disks;
int working_disks;
- mdk_thread_t *thread;
spinlock_t device_lock;
mempool_t *pool;
diff --git a/include/linux/raid/raid1.h b/include/linux/raid/raid1.h
index 9ed30f4d0748..cc7aa899a613 100644
--- a/include/linux/raid/raid1.h
+++ b/include/linux/raid/raid1.h
@@ -19,7 +19,6 @@ struct r1_private_data_s {
int working_disks;
int last_used;
sector_t next_seq_sect;
- mdk_thread_t *thread;
spinlock_t device_lock;
/* for use when syncing mirrors: */
@@ -34,7 +33,6 @@ struct r1_private_data_s {
mempool_t *r1bio_pool;
mempool_t *r1buf_pool;
- char thread_name[MD_THREAD_NAME_MAX];
};
typedef struct r1_private_data_s conf_t;
diff --git a/include/linux/raid/raid5.h b/include/linux/raid/raid5.h
index 636e10b84502..c9eea7c884d0 100644
--- a/include/linux/raid/raid5.h
+++ b/include/linux/raid/raid5.h
@@ -203,7 +203,6 @@ struct disk_info {
struct raid5_private_data {
struct stripe_head **stripe_hashtbl;
mddev_t *mddev;
- mdk_thread_t *thread;
struct disk_info disks[MD_SB_DISKS];
struct disk_info *spare;
int chunk_size, level, algorithm;
@@ -226,7 +225,6 @@ struct raid5_private_data {
* waiting for 25% to be free
*/
spinlock_t device_lock;
- char thread_name[MD_THREAD_NAME_MAX];
};
typedef struct raid5_private_data raid5_conf_t;
diff --git a/include/linux/security.h b/include/linux/security.h
index d2873ec35117..6a98cb692bf8 100644
--- a/include/linux/security.h
+++ b/include/linux/security.h
@@ -48,6 +48,7 @@ extern void cap_bprm_compute_creds (struct linux_binprm *bprm);
extern int cap_task_post_setuid (uid_t old_ruid, uid_t old_euid, uid_t old_suid, int flags);
extern void cap_task_kmod_set_label (void);
extern void cap_task_reparent_to_init (struct task_struct *p);
+extern int cap_syslog (int type);
static inline int cap_netlink_send (struct sk_buff *skb)
{
@@ -62,7 +63,6 @@ static inline int cap_netlink_recv (struct sk_buff *skb)
return 0;
}
-
/*
* Values used in the task_security_ops calls
*/
@@ -351,10 +351,6 @@ struct swap_info_struct;
* @mnt is the vfsmount where the dentry was looked up
* @dentry contains the dentry structure for the file.
* Return 0 if permission is granted.
- * @inode_post_lookup:
- * Set the security attributes for a file after it has been looked up.
- * @inode contains the inode structure for parent directory.
- * @d contains the dentry structure for the file.
* @inode_delete:
* @inode contains the inode structure for deleted inode.
* This hook is called when a deleted inode is released (i.e. an inode
@@ -926,11 +922,23 @@ struct swap_info_struct;
* is NULL.
* @file contains the file structure for the accounting file (may be NULL).
* Return 0 if permission is granted.
+ * @sysctl:
+ * Check permission before accessing the @table sysctl variable in the
+ * manner specified by @op.
+ * @table contains the ctl_table structure for the sysctl variable.
+ * @op contains the operation (001 = search, 002 = write, 004 = read).
+ * Return 0 if permission is granted.
* @capable:
* Check whether the @tsk process has the @cap capability.
* @tsk contains the task_struct for the process.
* @cap contains the capability <include/linux/capability.h>.
* Return 0 if the capability is granted for @tsk.
+ * @syslog:
+ * Check permission before accessing the kernel message ring or changing
+ * logging to the console.
+ * See the syslog(2) manual page for an explanation of the @type values.
+ * @type contains the type of action.
+ * Return 0 if permission is granted.
*
* @register_security:
* allow module stacking.
@@ -957,9 +965,11 @@ struct security_operations {
kernel_cap_t * inheritable,
kernel_cap_t * permitted);
int (*acct) (struct file * file);
+ int (*sysctl) (ctl_table * table, int op);
int (*capable) (struct task_struct * tsk, int cap);
int (*quotactl) (int cmds, int type, int id, struct super_block * sb);
int (*quota_on) (struct file * f);
+ int (*syslog) (int type);
int (*bprm_alloc_security) (struct linux_binprm * bprm);
void (*bprm_free_security) (struct linux_binprm * bprm);
@@ -969,6 +979,7 @@ struct security_operations {
int (*sb_alloc_security) (struct super_block * sb);
void (*sb_free_security) (struct super_block * sb);
+ int (*sb_kern_mount) (struct super_block *sb);
int (*sb_statfs) (struct super_block * sb);
int (*sb_mount) (char *dev_name, struct nameidata * nd,
char *type, unsigned long flags, void *data);
@@ -1022,7 +1033,6 @@ struct security_operations {
int (*inode_permission_lite) (struct inode *inode, int mask);
int (*inode_setattr) (struct dentry *dentry, struct iattr *attr);
int (*inode_getattr) (struct vfsmount *mnt, struct dentry *dentry);
- void (*inode_post_lookup) (struct inode *inode, struct dentry *d);
void (*inode_delete) (struct inode *inode);
int (*inode_setxattr) (struct dentry *dentry, char *name, void *value,
size_t size, int flags);
@@ -1111,6 +1121,8 @@ struct security_operations {
int (*unregister_security) (const char *name,
struct security_operations *ops);
+ void (*d_instantiate) (struct dentry *dentry, struct inode *inode);
+
#ifdef CONFIG_SECURITY_NETWORK
int (*unix_stream_connect) (struct socket * sock,
struct socket * other, struct sock * newsk);
@@ -1178,6 +1190,11 @@ static inline int security_acct (struct file *file)
return security_ops->acct (file);
}
+static inline int security_sysctl(ctl_table * table, int op)
+{
+ return security_ops->sysctl(table, op);
+}
+
static inline int security_quotactl (int cmds, int type, int id,
struct super_block *sb)
{
@@ -1189,6 +1206,11 @@ static inline int security_quota_on (struct file * file)
return security_ops->quota_on (file);
}
+static inline int security_syslog(int type)
+{
+ return security_ops->syslog(type);
+}
+
static inline int security_bprm_alloc (struct linux_binprm *bprm)
{
return security_ops->bprm_alloc_security (bprm);
@@ -1220,6 +1242,11 @@ static inline void security_sb_free (struct super_block *sb)
security_ops->sb_free_security (sb);
}
+static inline int security_sb_kern_mount (struct super_block *sb)
+{
+ return security_ops->sb_kern_mount (sb);
+}
+
static inline int security_sb_statfs (struct super_block *sb)
{
return security_ops->sb_statfs (sb);
@@ -1426,12 +1453,6 @@ static inline int security_inode_getattr (struct vfsmount *mnt,
return security_ops->inode_getattr (mnt, dentry);
}
-static inline void security_inode_post_lookup (struct inode *inode,
- struct dentry *dentry)
-{
- security_ops->inode_post_lookup (inode, dentry);
-}
-
static inline void security_inode_delete (struct inode *inode)
{
security_ops->inode_delete (inode);
@@ -1729,6 +1750,11 @@ static inline int security_sem_semop (struct sem_array * sma,
return security_ops->sem_semop(sma, sops, nsops, alter);
}
+static inline void security_d_instantiate (struct dentry *dentry, struct inode *inode)
+{
+ security_ops->d_instantiate (dentry, inode);
+}
+
static inline int security_netlink_send(struct sk_buff * skb)
{
return security_ops->netlink_send(skb);
@@ -1793,6 +1819,11 @@ static inline int security_acct (struct file *file)
return 0;
}
+static inline int security_sysctl(ctl_table * table, int op)
+{
+ return 0;
+}
+
static inline int security_quotactl (int cmds, int type, int id,
struct super_block * sb)
{
@@ -1804,6 +1835,11 @@ static inline int security_quota_on (struct file * file)
return 0;
}
+static inline int security_syslog(int type)
+{
+ return cap_syslog(type);
+}
+
static inline int security_bprm_alloc (struct linux_binprm *bprm)
{
return 0;
@@ -1835,6 +1871,11 @@ static inline int security_sb_alloc (struct super_block *sb)
static inline void security_sb_free (struct super_block *sb)
{ }
+static inline int security_sb_kern_mount (struct super_block *sb)
+{
+ return 0;
+}
+
static inline int security_sb_statfs (struct super_block *sb)
{
return 0;
@@ -2013,10 +2054,6 @@ static inline int security_inode_getattr (struct vfsmount *mnt,
return 0;
}
-static inline void security_inode_post_lookup (struct inode *inode,
- struct dentry *dentry)
-{ }
-
static inline void security_inode_delete (struct inode *inode)
{ }
@@ -2300,6 +2337,9 @@ static inline int security_sem_semop (struct sem_array * sma,
return 0;
}
+static inline void security_d_instantiate (struct dentry *dentry, struct inode *inode)
+{ }
+
/*
* The netlink capability defaults need to be used inline by default
* (rather than hooking into the capability module) to reduce overhead
diff --git a/include/linux/serial_core.h b/include/linux/serial_core.h
index 3412f8b7f2ce..80ba519dda77 100644
--- a/include/linux/serial_core.h
+++ b/include/linux/serial_core.h
@@ -208,12 +208,11 @@ struct uart_state {
#define USF_CLOSING_WAIT_NONE (65535)
int count;
+ int pm_state;
struct uart_info *info;
struct uart_port *port;
-#ifdef CONFIG_PM
- struct pm_dev *pm;
-#endif
+ struct semaphore sem;
};
#define UART_XMIT_SIZE 1024
@@ -224,8 +223,6 @@ struct uart_state {
* stuff here.
*/
struct uart_info {
- struct uart_port *port;
- struct uart_state *state;
struct tty_struct *tty;
struct circ_buf xmit;
unsigned int flags;
@@ -237,7 +234,6 @@ struct uart_info {
*/
#define UIF_CHECK_CD (1 << 25)
#define UIF_CTS_FLOW (1 << 26)
-#define UIF_CLOSING (1 << 27)
#define UIF_NORMAL_ACTIVE (1 << 29)
#define UIF_INITIALIZED (1 << 31)
@@ -307,6 +303,12 @@ int uart_register_port(struct uart_driver *reg, struct uart_port *port);
int uart_add_one_port(struct uart_driver *reg, struct uart_port *port);
int uart_remove_one_port(struct uart_driver *reg, struct uart_port *port);
+/*
+ * Power Management
+ */
+int uart_suspend_port(struct uart_driver *reg, struct uart_port *port, u32 level);
+int uart_resume_port(struct uart_driver *reg, struct uart_port *port, u32 level);
+
#define uart_circ_empty(circ) ((circ)->head == (circ)->tail)
#define uart_circ_clear(circ) ((circ)->head = (circ)->tail = 0)
diff --git a/include/linux/sunrpc/cache.h b/include/linux/sunrpc/cache.h
index a3cdc080dd85..1d3bccefe959 100644
--- a/include/linux/sunrpc/cache.h
+++ b/include/linux/sunrpc/cache.h
@@ -190,6 +190,7 @@ RTN *FNAME ARGS \
else read_unlock(&(DETAIL)->hash_lock); \
if (set) \
cache_fresh(DETAIL, &tmp->MEMBER, item->MEMBER.expiry_time); \
+ if (set==1 && new) cache_fresh(DETAIL, &new->MEMBER, 0); \
if (new) (DETAIL)->cache_put(&new->MEMBER, DETAIL); \
return tmp; \
} \
diff --git a/include/linux/thread_info.h b/include/linux/thread_info.h
index 8bacba8ed989..d252f45a0f9b 100644
--- a/include/linux/thread_info.h
+++ b/include/linux/thread_info.h
@@ -12,7 +12,7 @@
*/
struct restart_block {
long (*fn)(struct restart_block *);
- unsigned long arg0, arg1, arg2;
+ unsigned long arg0, arg1, arg2, arg3;
};
extern long do_no_restart_syscall(struct restart_block *parm);
diff --git a/include/linux/writeback.h b/include/linux/writeback.h
index 620f18f5ceeb..f316169bb1f7 100644
--- a/include/linux/writeback.h
+++ b/include/linux/writeback.h
@@ -79,6 +79,7 @@ extern int dirty_writeback_centisecs;
extern int dirty_expire_centisecs;
+void page_writeback_init(void);
void balance_dirty_pages(struct address_space *mapping);
void balance_dirty_pages_ratelimited(struct address_space *mapping);
int pdflush_operation(void (*fn)(unsigned long), unsigned long arg0);