diff options
author | Ingo Molnar <mingo@elte.hu> | 2009-10-13 03:31:28 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2009-10-13 03:31:34 -0400 |
commit | 9dbdd6c41c12fb42ee7188eafa7e1917b192af3a (patch) | |
tree | 06a9eb894bc976c5c20e84ccd74fd82b9b71aed4 /include | |
parent | 7a693d3f0d10f978ebdf3082c41404ab97106567 (diff) | |
parent | 161291396e76e0832c08f617eb9bd364d1648148 (diff) |
Merge commit 'v2.6.32-rc4' into perf/core
Merge reason: we were on an -rc1 base, merge up to -rc4.
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'include')
53 files changed, 508 insertions, 158 deletions
diff --git a/include/asm-generic/gpio.h b/include/asm-generic/gpio.h index 9cca3785cab8..66d6106a2067 100644 --- a/include/asm-generic/gpio.h +++ b/include/asm-generic/gpio.h | |||
@@ -1,6 +1,7 @@ | |||
1 | #ifndef _ASM_GENERIC_GPIO_H | 1 | #ifndef _ASM_GENERIC_GPIO_H |
2 | #define _ASM_GENERIC_GPIO_H | 2 | #define _ASM_GENERIC_GPIO_H |
3 | 3 | ||
4 | #include <linux/kernel.h> | ||
4 | #include <linux/types.h> | 5 | #include <linux/types.h> |
5 | #include <linux/errno.h> | 6 | #include <linux/errno.h> |
6 | 7 | ||
diff --git a/include/asm-generic/hardirq.h b/include/asm-generic/hardirq.h index 23bb4dad4962..62f59080e5cc 100644 --- a/include/asm-generic/hardirq.h +++ b/include/asm-generic/hardirq.h | |||
@@ -6,7 +6,7 @@ | |||
6 | #include <linux/irq.h> | 6 | #include <linux/irq.h> |
7 | 7 | ||
8 | typedef struct { | 8 | typedef struct { |
9 | unsigned long __softirq_pending; | 9 | unsigned int __softirq_pending; |
10 | } ____cacheline_aligned irq_cpustat_t; | 10 | } ____cacheline_aligned irq_cpustat_t; |
11 | 11 | ||
12 | #include <linux/irq_cpustat.h> /* Standard mappings for irq_cpustat_t above */ | 12 | #include <linux/irq_cpustat.h> /* Standard mappings for irq_cpustat_t above */ |
diff --git a/include/drm/drm_crtc.h b/include/drm/drm_crtc.h index ae1e9e166959..b69347b8904f 100644 --- a/include/drm/drm_crtc.h +++ b/include/drm/drm_crtc.h | |||
@@ -387,6 +387,7 @@ struct drm_crtc { | |||
387 | * @get_modes: get mode list for this connector | 387 | * @get_modes: get mode list for this connector |
388 | * @set_property: property for this connector may need update | 388 | * @set_property: property for this connector may need update |
389 | * @destroy: make object go away | 389 | * @destroy: make object go away |
390 | * @force: notify the driver the connector is forced on | ||
390 | * | 391 | * |
391 | * Each CRTC may have one or more connectors attached to it. The functions | 392 | * Each CRTC may have one or more connectors attached to it. The functions |
392 | * below allow the core DRM code to control connectors, enumerate available modes, | 393 | * below allow the core DRM code to control connectors, enumerate available modes, |
@@ -401,6 +402,7 @@ struct drm_connector_funcs { | |||
401 | int (*set_property)(struct drm_connector *connector, struct drm_property *property, | 402 | int (*set_property)(struct drm_connector *connector, struct drm_property *property, |
402 | uint64_t val); | 403 | uint64_t val); |
403 | void (*destroy)(struct drm_connector *connector); | 404 | void (*destroy)(struct drm_connector *connector); |
405 | void (*force)(struct drm_connector *connector); | ||
404 | }; | 406 | }; |
405 | 407 | ||
406 | struct drm_encoder_funcs { | 408 | struct drm_encoder_funcs { |
@@ -429,6 +431,13 @@ struct drm_encoder { | |||
429 | void *helper_private; | 431 | void *helper_private; |
430 | }; | 432 | }; |
431 | 433 | ||
434 | enum drm_connector_force { | ||
435 | DRM_FORCE_UNSPECIFIED, | ||
436 | DRM_FORCE_OFF, | ||
437 | DRM_FORCE_ON, /* force on analog part normally */ | ||
438 | DRM_FORCE_ON_DIGITAL, /* for DVI-I use digital connector */ | ||
439 | }; | ||
440 | |||
432 | /** | 441 | /** |
433 | * drm_connector - central DRM connector control structure | 442 | * drm_connector - central DRM connector control structure |
434 | * @crtc: CRTC this connector is currently connected to, NULL if none | 443 | * @crtc: CRTC this connector is currently connected to, NULL if none |
@@ -478,9 +487,12 @@ struct drm_connector { | |||
478 | 487 | ||
479 | void *helper_private; | 488 | void *helper_private; |
480 | 489 | ||
490 | /* forced on connector */ | ||
491 | enum drm_connector_force force; | ||
481 | uint32_t encoder_ids[DRM_CONNECTOR_MAX_ENCODER]; | 492 | uint32_t encoder_ids[DRM_CONNECTOR_MAX_ENCODER]; |
482 | uint32_t force_encoder_id; | 493 | uint32_t force_encoder_id; |
483 | struct drm_encoder *encoder; /* currently active encoder */ | 494 | struct drm_encoder *encoder; /* currently active encoder */ |
495 | void *fb_helper_private; | ||
484 | }; | 496 | }; |
485 | 497 | ||
486 | /** | 498 | /** |
@@ -746,7 +758,7 @@ extern int drm_mode_gamma_set_ioctl(struct drm_device *dev, | |||
746 | extern bool drm_detect_hdmi_monitor(struct edid *edid); | 758 | extern bool drm_detect_hdmi_monitor(struct edid *edid); |
747 | extern struct drm_display_mode *drm_cvt_mode(struct drm_device *dev, | 759 | extern struct drm_display_mode *drm_cvt_mode(struct drm_device *dev, |
748 | int hdisplay, int vdisplay, int vrefresh, | 760 | int hdisplay, int vdisplay, int vrefresh, |
749 | bool reduced, bool interlaced); | 761 | bool reduced, bool interlaced, bool margins); |
750 | extern struct drm_display_mode *drm_gtf_mode(struct drm_device *dev, | 762 | extern struct drm_display_mode *drm_gtf_mode(struct drm_device *dev, |
751 | int hdisplay, int vdisplay, int vrefresh, | 763 | int hdisplay, int vdisplay, int vrefresh, |
752 | bool interlaced, int margins); | 764 | bool interlaced, int margins); |
diff --git a/include/drm/drm_crtc_helper.h b/include/drm/drm_crtc_helper.h index 4c8dacaf4f58..b29e20168b5f 100644 --- a/include/drm/drm_crtc_helper.h +++ b/include/drm/drm_crtc_helper.h | |||
@@ -39,6 +39,7 @@ | |||
39 | 39 | ||
40 | #include <linux/fb.h> | 40 | #include <linux/fb.h> |
41 | 41 | ||
42 | #include "drm_fb_helper.h" | ||
42 | struct drm_crtc_helper_funcs { | 43 | struct drm_crtc_helper_funcs { |
43 | /* | 44 | /* |
44 | * Control power levels on the CRTC. If the mode passed in is | 45 | * Control power levels on the CRTC. If the mode passed in is |
@@ -60,6 +61,9 @@ struct drm_crtc_helper_funcs { | |||
60 | /* Move the crtc on the current fb to the given position *optional* */ | 61 | /* Move the crtc on the current fb to the given position *optional* */ |
61 | int (*mode_set_base)(struct drm_crtc *crtc, int x, int y, | 62 | int (*mode_set_base)(struct drm_crtc *crtc, int x, int y, |
62 | struct drm_framebuffer *old_fb); | 63 | struct drm_framebuffer *old_fb); |
64 | |||
65 | /* reload the current crtc LUT */ | ||
66 | void (*load_lut)(struct drm_crtc *crtc); | ||
63 | }; | 67 | }; |
64 | 68 | ||
65 | struct drm_encoder_helper_funcs { | 69 | struct drm_encoder_helper_funcs { |
@@ -119,10 +123,11 @@ static inline void drm_encoder_helper_add(struct drm_encoder *encoder, | |||
119 | encoder->helper_private = (void *)funcs; | 123 | encoder->helper_private = (void *)funcs; |
120 | } | 124 | } |
121 | 125 | ||
122 | static inline void drm_connector_helper_add(struct drm_connector *connector, | 126 | static inline int drm_connector_helper_add(struct drm_connector *connector, |
123 | const struct drm_connector_helper_funcs *funcs) | 127 | const struct drm_connector_helper_funcs *funcs) |
124 | { | 128 | { |
125 | connector->helper_private = (void *)funcs; | 129 | connector->helper_private = (void *)funcs; |
130 | return drm_fb_helper_add_connector(connector); | ||
126 | } | 131 | } |
127 | 132 | ||
128 | extern int drm_helper_resume_force_mode(struct drm_device *dev); | 133 | extern int drm_helper_resume_force_mode(struct drm_device *dev); |
diff --git a/include/drm/drm_fb_helper.h b/include/drm/drm_fb_helper.h index 88fffbdfa26f..58c892a2cbfa 100644 --- a/include/drm/drm_fb_helper.h +++ b/include/drm/drm_fb_helper.h | |||
@@ -35,9 +35,30 @@ struct drm_fb_helper_crtc { | |||
35 | struct drm_mode_set mode_set; | 35 | struct drm_mode_set mode_set; |
36 | }; | 36 | }; |
37 | 37 | ||
38 | |||
38 | struct drm_fb_helper_funcs { | 39 | struct drm_fb_helper_funcs { |
39 | void (*gamma_set)(struct drm_crtc *crtc, u16 red, u16 green, | 40 | void (*gamma_set)(struct drm_crtc *crtc, u16 red, u16 green, |
40 | u16 blue, int regno); | 41 | u16 blue, int regno); |
42 | void (*gamma_get)(struct drm_crtc *crtc, u16 *red, u16 *green, | ||
43 | u16 *blue, int regno); | ||
44 | }; | ||
45 | |||
46 | /* mode specified on the command line */ | ||
47 | struct drm_fb_helper_cmdline_mode { | ||
48 | bool specified; | ||
49 | bool refresh_specified; | ||
50 | bool bpp_specified; | ||
51 | int xres, yres; | ||
52 | int bpp; | ||
53 | int refresh; | ||
54 | bool rb; | ||
55 | bool interlace; | ||
56 | bool cvt; | ||
57 | bool margins; | ||
58 | }; | ||
59 | |||
60 | struct drm_fb_helper_connector { | ||
61 | struct drm_fb_helper_cmdline_mode cmdline_mode; | ||
41 | }; | 62 | }; |
42 | 63 | ||
43 | struct drm_fb_helper { | 64 | struct drm_fb_helper { |
@@ -52,11 +73,14 @@ struct drm_fb_helper { | |||
52 | }; | 73 | }; |
53 | 74 | ||
54 | int drm_fb_helper_single_fb_probe(struct drm_device *dev, | 75 | int drm_fb_helper_single_fb_probe(struct drm_device *dev, |
76 | int preferred_bpp, | ||
55 | int (*fb_create)(struct drm_device *dev, | 77 | int (*fb_create)(struct drm_device *dev, |
56 | uint32_t fb_width, | 78 | uint32_t fb_width, |
57 | uint32_t fb_height, | 79 | uint32_t fb_height, |
58 | uint32_t surface_width, | 80 | uint32_t surface_width, |
59 | uint32_t surface_height, | 81 | uint32_t surface_height, |
82 | uint32_t surface_depth, | ||
83 | uint32_t surface_bpp, | ||
60 | struct drm_framebuffer **fb_ptr)); | 84 | struct drm_framebuffer **fb_ptr)); |
61 | int drm_fb_helper_init_crtc_count(struct drm_fb_helper *helper, int crtc_count, | 85 | int drm_fb_helper_init_crtc_count(struct drm_fb_helper *helper, int crtc_count, |
62 | int max_conn); | 86 | int max_conn); |
@@ -77,6 +101,11 @@ int drm_fb_helper_setcolreg(unsigned regno, | |||
77 | void drm_fb_helper_restore(void); | 101 | void drm_fb_helper_restore(void); |
78 | void drm_fb_helper_fill_var(struct fb_info *info, struct drm_framebuffer *fb, | 102 | void drm_fb_helper_fill_var(struct fb_info *info, struct drm_framebuffer *fb, |
79 | uint32_t fb_width, uint32_t fb_height); | 103 | uint32_t fb_width, uint32_t fb_height); |
80 | void drm_fb_helper_fill_fix(struct fb_info *info, uint32_t pitch); | 104 | void drm_fb_helper_fill_fix(struct fb_info *info, uint32_t pitch, |
105 | uint32_t depth); | ||
106 | |||
107 | int drm_fb_helper_add_connector(struct drm_connector *connector); | ||
108 | int drm_fb_helper_parse_command_line(struct drm_device *dev); | ||
109 | int drm_fb_helper_setcmap(struct fb_cmap *cmap, struct fb_info *info); | ||
81 | 110 | ||
82 | #endif | 111 | #endif |
diff --git a/include/drm/drm_pciids.h b/include/drm/drm_pciids.h index 3f6e545609be..e6f3b120f51a 100644 --- a/include/drm/drm_pciids.h +++ b/include/drm/drm_pciids.h | |||
@@ -80,7 +80,7 @@ | |||
80 | {0x1002, 0x5158, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV200}, \ | 80 | {0x1002, 0x5158, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV200}, \ |
81 | {0x1002, 0x5159, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV100}, \ | 81 | {0x1002, 0x5159, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV100}, \ |
82 | {0x1002, 0x515A, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV100}, \ | 82 | {0x1002, 0x515A, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV100}, \ |
83 | {0x1002, 0x515E, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV100}, \ | 83 | {0x1002, 0x515E, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV100|RADEON_SINGLE_CRTC}, \ |
84 | {0x1002, 0x5460, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV380|RADEON_IS_MOBILITY}, \ | 84 | {0x1002, 0x5460, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV380|RADEON_IS_MOBILITY}, \ |
85 | {0x1002, 0x5462, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV380|RADEON_IS_MOBILITY}, \ | 85 | {0x1002, 0x5462, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV380|RADEON_IS_MOBILITY}, \ |
86 | {0x1002, 0x5464, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV380|RADEON_IS_MOBILITY}, \ | 86 | {0x1002, 0x5464, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV380|RADEON_IS_MOBILITY}, \ |
@@ -113,7 +113,7 @@ | |||
113 | {0x1002, 0x5962, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV280}, \ | 113 | {0x1002, 0x5962, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV280}, \ |
114 | {0x1002, 0x5964, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV280}, \ | 114 | {0x1002, 0x5964, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV280}, \ |
115 | {0x1002, 0x5965, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV280}, \ | 115 | {0x1002, 0x5965, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV280}, \ |
116 | {0x1002, 0x5969, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV100}, \ | 116 | {0x1002, 0x5969, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV100|RADEON_SINGLE_CRTC}, \ |
117 | {0x1002, 0x5a41, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RS400|RADEON_IS_IGP|RADEON_IS_IGPGART}, \ | 117 | {0x1002, 0x5a41, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RS400|RADEON_IS_IGP|RADEON_IS_IGPGART}, \ |
118 | {0x1002, 0x5a42, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RS400|RADEON_IS_IGP|RADEON_IS_MOBILITY|RADEON_IS_IGPGART}, \ | 118 | {0x1002, 0x5a42, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RS400|RADEON_IS_IGP|RADEON_IS_MOBILITY|RADEON_IS_IGPGART}, \ |
119 | {0x1002, 0x5a61, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RS400|RADEON_IS_IGP|RADEON_IS_IGPGART}, \ | 119 | {0x1002, 0x5a61, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RS400|RADEON_IS_IGP|RADEON_IS_IGPGART}, \ |
diff --git a/include/linux/ata.h b/include/linux/ata.h index 6299a259ed19..4fb357312b3b 100644 --- a/include/linux/ata.h +++ b/include/linux/ata.h | |||
@@ -334,9 +334,12 @@ enum { | |||
334 | SETFEATURES_SATA_DISABLE = 0x90, /* Disable use of SATA feature */ | 334 | SETFEATURES_SATA_DISABLE = 0x90, /* Disable use of SATA feature */ |
335 | 335 | ||
336 | /* SETFEATURE Sector counts for SATA features */ | 336 | /* SETFEATURE Sector counts for SATA features */ |
337 | SATA_AN = 0x05, /* Asynchronous Notification */ | 337 | SATA_FPDMA_OFFSET = 0x01, /* FPDMA non-zero buffer offsets */ |
338 | SATA_DIPM = 0x03, /* Device Initiated Power Management */ | 338 | SATA_FPDMA_AA = 0x02, /* FPDMA Setup FIS Auto-Activate */ |
339 | SATA_FPDMA_AA = 0x02, /* DMA Setup FIS Auto-Activate */ | 339 | SATA_DIPM = 0x03, /* Device Initiated Power Management */ |
340 | SATA_FPDMA_IN_ORDER = 0x04, /* FPDMA in-order data delivery */ | ||
341 | SATA_AN = 0x05, /* Asynchronous Notification */ | ||
342 | SATA_SSP = 0x06, /* Software Settings Preservation */ | ||
340 | 343 | ||
341 | /* feature values for SET_MAX */ | 344 | /* feature values for SET_MAX */ |
342 | ATA_SET_MAX_ADDR = 0x00, | 345 | ATA_SET_MAX_ADDR = 0x00, |
diff --git a/include/linux/atmdev.h b/include/linux/atmdev.h index 086e5c362d3a..817b23705c91 100644 --- a/include/linux/atmdev.h +++ b/include/linux/atmdev.h | |||
@@ -397,7 +397,7 @@ struct atmdev_ops { /* only send is required */ | |||
397 | int (*getsockopt)(struct atm_vcc *vcc,int level,int optname, | 397 | int (*getsockopt)(struct atm_vcc *vcc,int level,int optname, |
398 | void __user *optval,int optlen); | 398 | void __user *optval,int optlen); |
399 | int (*setsockopt)(struct atm_vcc *vcc,int level,int optname, | 399 | int (*setsockopt)(struct atm_vcc *vcc,int level,int optname, |
400 | void __user *optval,int optlen); | 400 | void __user *optval,unsigned int optlen); |
401 | int (*send)(struct atm_vcc *vcc,struct sk_buff *skb); | 401 | int (*send)(struct atm_vcc *vcc,struct sk_buff *skb); |
402 | int (*send_oam)(struct atm_vcc *vcc,void *cell,int flags); | 402 | int (*send_oam)(struct atm_vcc *vcc,void *cell,int flags); |
403 | void (*phy_put)(struct atm_dev *dev,unsigned char value, | 403 | void (*phy_put)(struct atm_dev *dev,unsigned char value, |
diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h index e23a86cae5ac..25119041e034 100644 --- a/include/linux/blkdev.h +++ b/include/linux/blkdev.h | |||
@@ -82,7 +82,6 @@ enum rq_cmd_type_bits { | |||
82 | enum { | 82 | enum { |
83 | REQ_LB_OP_EJECT = 0x40, /* eject request */ | 83 | REQ_LB_OP_EJECT = 0x40, /* eject request */ |
84 | REQ_LB_OP_FLUSH = 0x41, /* flush request */ | 84 | REQ_LB_OP_FLUSH = 0x41, /* flush request */ |
85 | REQ_LB_OP_DISCARD = 0x42, /* discard sectors */ | ||
86 | }; | 85 | }; |
87 | 86 | ||
88 | /* | 87 | /* |
@@ -261,7 +260,6 @@ typedef void (request_fn_proc) (struct request_queue *q); | |||
261 | typedef int (make_request_fn) (struct request_queue *q, struct bio *bio); | 260 | typedef int (make_request_fn) (struct request_queue *q, struct bio *bio); |
262 | typedef int (prep_rq_fn) (struct request_queue *, struct request *); | 261 | typedef int (prep_rq_fn) (struct request_queue *, struct request *); |
263 | typedef void (unplug_fn) (struct request_queue *); | 262 | typedef void (unplug_fn) (struct request_queue *); |
264 | typedef int (prepare_discard_fn) (struct request_queue *, struct request *); | ||
265 | 263 | ||
266 | struct bio_vec; | 264 | struct bio_vec; |
267 | struct bvec_merge_data { | 265 | struct bvec_merge_data { |
@@ -313,6 +311,7 @@ struct queue_limits { | |||
313 | unsigned int alignment_offset; | 311 | unsigned int alignment_offset; |
314 | unsigned int io_min; | 312 | unsigned int io_min; |
315 | unsigned int io_opt; | 313 | unsigned int io_opt; |
314 | unsigned int max_discard_sectors; | ||
316 | 315 | ||
317 | unsigned short logical_block_size; | 316 | unsigned short logical_block_size; |
318 | unsigned short max_hw_segments; | 317 | unsigned short max_hw_segments; |
@@ -340,7 +339,6 @@ struct request_queue | |||
340 | make_request_fn *make_request_fn; | 339 | make_request_fn *make_request_fn; |
341 | prep_rq_fn *prep_rq_fn; | 340 | prep_rq_fn *prep_rq_fn; |
342 | unplug_fn *unplug_fn; | 341 | unplug_fn *unplug_fn; |
343 | prepare_discard_fn *prepare_discard_fn; | ||
344 | merge_bvec_fn *merge_bvec_fn; | 342 | merge_bvec_fn *merge_bvec_fn; |
345 | prepare_flush_fn *prepare_flush_fn; | 343 | prepare_flush_fn *prepare_flush_fn; |
346 | softirq_done_fn *softirq_done_fn; | 344 | softirq_done_fn *softirq_done_fn; |
@@ -460,6 +458,7 @@ struct request_queue | |||
460 | #define QUEUE_FLAG_VIRT QUEUE_FLAG_NONROT /* paravirt device */ | 458 | #define QUEUE_FLAG_VIRT QUEUE_FLAG_NONROT /* paravirt device */ |
461 | #define QUEUE_FLAG_IO_STAT 15 /* do IO stats */ | 459 | #define QUEUE_FLAG_IO_STAT 15 /* do IO stats */ |
462 | #define QUEUE_FLAG_CQ 16 /* hardware does queuing */ | 460 | #define QUEUE_FLAG_CQ 16 /* hardware does queuing */ |
461 | #define QUEUE_FLAG_DISCARD 17 /* supports DISCARD */ | ||
463 | 462 | ||
464 | #define QUEUE_FLAG_DEFAULT ((1 << QUEUE_FLAG_IO_STAT) | \ | 463 | #define QUEUE_FLAG_DEFAULT ((1 << QUEUE_FLAG_IO_STAT) | \ |
465 | (1 << QUEUE_FLAG_CLUSTER) | \ | 464 | (1 << QUEUE_FLAG_CLUSTER) | \ |
@@ -591,6 +590,7 @@ enum { | |||
591 | #define blk_queue_flushing(q) ((q)->ordseq) | 590 | #define blk_queue_flushing(q) ((q)->ordseq) |
592 | #define blk_queue_stackable(q) \ | 591 | #define blk_queue_stackable(q) \ |
593 | test_bit(QUEUE_FLAG_STACKABLE, &(q)->queue_flags) | 592 | test_bit(QUEUE_FLAG_STACKABLE, &(q)->queue_flags) |
593 | #define blk_queue_discard(q) test_bit(QUEUE_FLAG_DISCARD, &(q)->queue_flags) | ||
594 | 594 | ||
595 | #define blk_fs_request(rq) ((rq)->cmd_type == REQ_TYPE_FS) | 595 | #define blk_fs_request(rq) ((rq)->cmd_type == REQ_TYPE_FS) |
596 | #define blk_pc_request(rq) ((rq)->cmd_type == REQ_TYPE_BLOCK_PC) | 596 | #define blk_pc_request(rq) ((rq)->cmd_type == REQ_TYPE_BLOCK_PC) |
@@ -929,6 +929,8 @@ extern void blk_queue_max_hw_sectors(struct request_queue *, unsigned int); | |||
929 | extern void blk_queue_max_phys_segments(struct request_queue *, unsigned short); | 929 | extern void blk_queue_max_phys_segments(struct request_queue *, unsigned short); |
930 | extern void blk_queue_max_hw_segments(struct request_queue *, unsigned short); | 930 | extern void blk_queue_max_hw_segments(struct request_queue *, unsigned short); |
931 | extern void blk_queue_max_segment_size(struct request_queue *, unsigned int); | 931 | extern void blk_queue_max_segment_size(struct request_queue *, unsigned int); |
932 | extern void blk_queue_max_discard_sectors(struct request_queue *q, | ||
933 | unsigned int max_discard_sectors); | ||
932 | extern void blk_queue_logical_block_size(struct request_queue *, unsigned short); | 934 | extern void blk_queue_logical_block_size(struct request_queue *, unsigned short); |
933 | extern void blk_queue_physical_block_size(struct request_queue *, unsigned short); | 935 | extern void blk_queue_physical_block_size(struct request_queue *, unsigned short); |
934 | extern void blk_queue_alignment_offset(struct request_queue *q, | 936 | extern void blk_queue_alignment_offset(struct request_queue *q, |
@@ -955,7 +957,6 @@ extern void blk_queue_merge_bvec(struct request_queue *, merge_bvec_fn *); | |||
955 | extern void blk_queue_dma_alignment(struct request_queue *, int); | 957 | extern void blk_queue_dma_alignment(struct request_queue *, int); |
956 | extern void blk_queue_update_dma_alignment(struct request_queue *, int); | 958 | extern void blk_queue_update_dma_alignment(struct request_queue *, int); |
957 | extern void blk_queue_softirq_done(struct request_queue *, softirq_done_fn *); | 959 | extern void blk_queue_softirq_done(struct request_queue *, softirq_done_fn *); |
958 | extern void blk_queue_set_discard(struct request_queue *, prepare_discard_fn *); | ||
959 | extern void blk_queue_rq_timed_out(struct request_queue *, rq_timed_out_fn *); | 960 | extern void blk_queue_rq_timed_out(struct request_queue *, rq_timed_out_fn *); |
960 | extern void blk_queue_rq_timeout(struct request_queue *, unsigned int); | 961 | extern void blk_queue_rq_timeout(struct request_queue *, unsigned int); |
961 | extern struct backing_dev_info *blk_get_backing_dev_info(struct block_device *bdev); | 962 | extern struct backing_dev_info *blk_get_backing_dev_info(struct block_device *bdev); |
@@ -1080,25 +1081,37 @@ static inline unsigned int queue_physical_block_size(struct request_queue *q) | |||
1080 | return q->limits.physical_block_size; | 1081 | return q->limits.physical_block_size; |
1081 | } | 1082 | } |
1082 | 1083 | ||
1084 | static inline int bdev_physical_block_size(struct block_device *bdev) | ||
1085 | { | ||
1086 | return queue_physical_block_size(bdev_get_queue(bdev)); | ||
1087 | } | ||
1088 | |||
1083 | static inline unsigned int queue_io_min(struct request_queue *q) | 1089 | static inline unsigned int queue_io_min(struct request_queue *q) |
1084 | { | 1090 | { |
1085 | return q->limits.io_min; | 1091 | return q->limits.io_min; |
1086 | } | 1092 | } |
1087 | 1093 | ||
1094 | static inline int bdev_io_min(struct block_device *bdev) | ||
1095 | { | ||
1096 | return queue_io_min(bdev_get_queue(bdev)); | ||
1097 | } | ||
1098 | |||
1088 | static inline unsigned int queue_io_opt(struct request_queue *q) | 1099 | static inline unsigned int queue_io_opt(struct request_queue *q) |
1089 | { | 1100 | { |
1090 | return q->limits.io_opt; | 1101 | return q->limits.io_opt; |
1091 | } | 1102 | } |
1092 | 1103 | ||
1104 | static inline int bdev_io_opt(struct block_device *bdev) | ||
1105 | { | ||
1106 | return queue_io_opt(bdev_get_queue(bdev)); | ||
1107 | } | ||
1108 | |||
1093 | static inline int queue_alignment_offset(struct request_queue *q) | 1109 | static inline int queue_alignment_offset(struct request_queue *q) |
1094 | { | 1110 | { |
1095 | if (q && q->limits.misaligned) | 1111 | if (q->limits.misaligned) |
1096 | return -1; | 1112 | return -1; |
1097 | 1113 | ||
1098 | if (q && q->limits.alignment_offset) | 1114 | return q->limits.alignment_offset; |
1099 | return q->limits.alignment_offset; | ||
1100 | |||
1101 | return 0; | ||
1102 | } | 1115 | } |
1103 | 1116 | ||
1104 | static inline int queue_sector_alignment_offset(struct request_queue *q, | 1117 | static inline int queue_sector_alignment_offset(struct request_queue *q, |
@@ -1108,6 +1121,19 @@ static inline int queue_sector_alignment_offset(struct request_queue *q, | |||
1108 | & (q->limits.io_min - 1); | 1121 | & (q->limits.io_min - 1); |
1109 | } | 1122 | } |
1110 | 1123 | ||
1124 | static inline int bdev_alignment_offset(struct block_device *bdev) | ||
1125 | { | ||
1126 | struct request_queue *q = bdev_get_queue(bdev); | ||
1127 | |||
1128 | if (q->limits.misaligned) | ||
1129 | return -1; | ||
1130 | |||
1131 | if (bdev != bdev->bd_contains) | ||
1132 | return bdev->bd_part->alignment_offset; | ||
1133 | |||
1134 | return q->limits.alignment_offset; | ||
1135 | } | ||
1136 | |||
1111 | static inline int queue_dma_alignment(struct request_queue *q) | 1137 | static inline int queue_dma_alignment(struct request_queue *q) |
1112 | { | 1138 | { |
1113 | return q ? q->dma_alignment : 511; | 1139 | return q ? q->dma_alignment : 511; |
@@ -1146,7 +1172,11 @@ static inline void put_dev_sector(Sector p) | |||
1146 | } | 1172 | } |
1147 | 1173 | ||
1148 | struct work_struct; | 1174 | struct work_struct; |
1175 | struct delayed_work; | ||
1149 | int kblockd_schedule_work(struct request_queue *q, struct work_struct *work); | 1176 | int kblockd_schedule_work(struct request_queue *q, struct work_struct *work); |
1177 | int kblockd_schedule_delayed_work(struct request_queue *q, | ||
1178 | struct delayed_work *work, | ||
1179 | unsigned long delay); | ||
1150 | 1180 | ||
1151 | #define MODULE_ALIAS_BLOCKDEV(major,minor) \ | 1181 | #define MODULE_ALIAS_BLOCKDEV(major,minor) \ |
1152 | MODULE_ALIAS("block-major-" __stringify(major) "-" __stringify(minor)) | 1182 | MODULE_ALIAS("block-major-" __stringify(major) "-" __stringify(minor)) |
diff --git a/include/linux/blktrace_api.h b/include/linux/blktrace_api.h index 7e4350ece0f8..3b73b9992b26 100644 --- a/include/linux/blktrace_api.h +++ b/include/linux/blktrace_api.h | |||
@@ -198,6 +198,7 @@ extern int blk_trace_setup(struct request_queue *q, char *name, dev_t dev, | |||
198 | char __user *arg); | 198 | char __user *arg); |
199 | extern int blk_trace_startstop(struct request_queue *q, int start); | 199 | extern int blk_trace_startstop(struct request_queue *q, int start); |
200 | extern int blk_trace_remove(struct request_queue *q); | 200 | extern int blk_trace_remove(struct request_queue *q); |
201 | extern void blk_trace_remove_sysfs(struct device *dev); | ||
201 | extern int blk_trace_init_sysfs(struct device *dev); | 202 | extern int blk_trace_init_sysfs(struct device *dev); |
202 | 203 | ||
203 | extern struct attribute_group blk_trace_attr_group; | 204 | extern struct attribute_group blk_trace_attr_group; |
@@ -211,6 +212,7 @@ extern struct attribute_group blk_trace_attr_group; | |||
211 | # define blk_trace_startstop(q, start) (-ENOTTY) | 212 | # define blk_trace_startstop(q, start) (-ENOTTY) |
212 | # define blk_trace_remove(q) (-ENOTTY) | 213 | # define blk_trace_remove(q) (-ENOTTY) |
213 | # define blk_add_trace_msg(q, fmt, ...) do { } while (0) | 214 | # define blk_add_trace_msg(q, fmt, ...) do { } while (0) |
215 | # define blk_trace_remove_sysfs(dev) do { } while (0) | ||
214 | static inline int blk_trace_init_sysfs(struct device *dev) | 216 | static inline int blk_trace_init_sysfs(struct device *dev) |
215 | { | 217 | { |
216 | return 0; | 218 | return 0; |
diff --git a/include/linux/cgroup.h b/include/linux/cgroup.h index b62bb9294d0c..0008dee66514 100644 --- a/include/linux/cgroup.h +++ b/include/linux/cgroup.h | |||
@@ -37,7 +37,7 @@ extern void cgroup_exit(struct task_struct *p, int run_callbacks); | |||
37 | extern int cgroupstats_build(struct cgroupstats *stats, | 37 | extern int cgroupstats_build(struct cgroupstats *stats, |
38 | struct dentry *dentry); | 38 | struct dentry *dentry); |
39 | 39 | ||
40 | extern struct file_operations proc_cgroup_operations; | 40 | extern const struct file_operations proc_cgroup_operations; |
41 | 41 | ||
42 | /* Define the enumeration of all cgroup subsystems */ | 42 | /* Define the enumeration of all cgroup subsystems */ |
43 | #define SUBSYS(_x) _x ## _subsys_id, | 43 | #define SUBSYS(_x) _x ## _subsys_id, |
diff --git a/include/linux/connector.h b/include/linux/connector.h index 47ebf416f512..3a14615fd35c 100644 --- a/include/linux/connector.h +++ b/include/linux/connector.h | |||
@@ -132,11 +132,8 @@ struct cn_callback_id { | |||
132 | }; | 132 | }; |
133 | 133 | ||
134 | struct cn_callback_data { | 134 | struct cn_callback_data { |
135 | void (*destruct_data) (void *); | 135 | struct sk_buff *skb; |
136 | void *ddata; | 136 | void (*callback) (struct cn_msg *, struct netlink_skb_parms *); |
137 | |||
138 | void *callback_priv; | ||
139 | void (*callback) (struct cn_msg *); | ||
140 | 137 | ||
141 | void *free; | 138 | void *free; |
142 | }; | 139 | }; |
@@ -167,11 +164,11 @@ struct cn_dev { | |||
167 | struct cn_queue_dev *cbdev; | 164 | struct cn_queue_dev *cbdev; |
168 | }; | 165 | }; |
169 | 166 | ||
170 | int cn_add_callback(struct cb_id *, char *, void (*callback) (struct cn_msg *)); | 167 | int cn_add_callback(struct cb_id *, char *, void (*callback) (struct cn_msg *, struct netlink_skb_parms *)); |
171 | void cn_del_callback(struct cb_id *); | 168 | void cn_del_callback(struct cb_id *); |
172 | int cn_netlink_send(struct cn_msg *, u32, gfp_t); | 169 | int cn_netlink_send(struct cn_msg *, u32, gfp_t); |
173 | 170 | ||
174 | int cn_queue_add_callback(struct cn_queue_dev *dev, char *name, struct cb_id *id, void (*callback)(struct cn_msg *)); | 171 | int cn_queue_add_callback(struct cn_queue_dev *dev, char *name, struct cb_id *id, void (*callback)(struct cn_msg *, struct netlink_skb_parms *)); |
175 | void cn_queue_del_callback(struct cn_queue_dev *dev, struct cb_id *id); | 172 | void cn_queue_del_callback(struct cn_queue_dev *dev, struct cb_id *id); |
176 | 173 | ||
177 | int queue_cn_work(struct cn_callback_entry *cbq, struct work_struct *work); | 174 | int queue_cn_work(struct cn_callback_entry *cbq, struct work_struct *work); |
diff --git a/include/linux/elf.h b/include/linux/elf.h index 45a937be6d38..90a4ed0ea0e5 100644 --- a/include/linux/elf.h +++ b/include/linux/elf.h | |||
@@ -361,6 +361,7 @@ typedef struct elf64_shdr { | |||
361 | #define NT_PPC_VSX 0x102 /* PowerPC VSX registers */ | 361 | #define NT_PPC_VSX 0x102 /* PowerPC VSX registers */ |
362 | #define NT_386_TLS 0x200 /* i386 TLS slots (struct user_desc) */ | 362 | #define NT_386_TLS 0x200 /* i386 TLS slots (struct user_desc) */ |
363 | #define NT_386_IOPERM 0x201 /* x86 io permission bitmap (1=deny) */ | 363 | #define NT_386_IOPERM 0x201 /* x86 io permission bitmap (1=deny) */ |
364 | #define NT_PRXSTATUS 0x300 /* s390 upper register halves */ | ||
364 | 365 | ||
365 | 366 | ||
366 | /* Note header in a PT_NOTE section */ | 367 | /* Note header in a PT_NOTE section */ |
diff --git a/include/linux/fs.h b/include/linux/fs.h index 2adaa2529f18..2620a8c63571 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h | |||
@@ -300,6 +300,10 @@ struct inodes_stat_t { | |||
300 | #define BLKTRACESTOP _IO(0x12,117) | 300 | #define BLKTRACESTOP _IO(0x12,117) |
301 | #define BLKTRACETEARDOWN _IO(0x12,118) | 301 | #define BLKTRACETEARDOWN _IO(0x12,118) |
302 | #define BLKDISCARD _IO(0x12,119) | 302 | #define BLKDISCARD _IO(0x12,119) |
303 | #define BLKIOMIN _IO(0x12,120) | ||
304 | #define BLKIOOPT _IO(0x12,121) | ||
305 | #define BLKALIGNOFF _IO(0x12,122) | ||
306 | #define BLKPBSZGET _IO(0x12,123) | ||
303 | 307 | ||
304 | #define BMAP_IOCTL 1 /* obsolete - kept for compatibility */ | 308 | #define BMAP_IOCTL 1 /* obsolete - kept for compatibility */ |
305 | #define FIBMAP _IO(0x00,1) /* bmap access */ | 309 | #define FIBMAP _IO(0x00,1) /* bmap access */ |
@@ -2446,7 +2450,7 @@ static int __fops ## _open(struct inode *inode, struct file *file) \ | |||
2446 | __simple_attr_check_format(__fmt, 0ull); \ | 2450 | __simple_attr_check_format(__fmt, 0ull); \ |
2447 | return simple_attr_open(inode, file, __get, __set, __fmt); \ | 2451 | return simple_attr_open(inode, file, __get, __set, __fmt); \ |
2448 | } \ | 2452 | } \ |
2449 | static struct file_operations __fops = { \ | 2453 | static const struct file_operations __fops = { \ |
2450 | .owner = THIS_MODULE, \ | 2454 | .owner = THIS_MODULE, \ |
2451 | .open = __fops ## _open, \ | 2455 | .open = __fops ## _open, \ |
2452 | .release = simple_attr_release, \ | 2456 | .release = simple_attr_release, \ |
diff --git a/include/linux/ftrace.h b/include/linux/ftrace.h index cd3d2abaf30a..0b4f97d24d7f 100644 --- a/include/linux/ftrace.h +++ b/include/linux/ftrace.h | |||
@@ -241,7 +241,7 @@ extern void ftrace_enable_daemon(void); | |||
241 | # define ftrace_set_filter(buf, len, reset) do { } while (0) | 241 | # define ftrace_set_filter(buf, len, reset) do { } while (0) |
242 | # define ftrace_disable_daemon() do { } while (0) | 242 | # define ftrace_disable_daemon() do { } while (0) |
243 | # define ftrace_enable_daemon() do { } while (0) | 243 | # define ftrace_enable_daemon() do { } while (0) |
244 | static inline void ftrace_release(void *start, unsigned long size) { } | 244 | static inline void ftrace_release_mod(struct module *mod) {} |
245 | static inline int register_ftrace_command(struct ftrace_func_command *cmd) | 245 | static inline int register_ftrace_command(struct ftrace_func_command *cmd) |
246 | { | 246 | { |
247 | return -EINVAL; | 247 | return -EINVAL; |
diff --git a/include/linux/futex.h b/include/linux/futex.h index 8ec17997d94f..1e5a26d79232 100644 --- a/include/linux/futex.h +++ b/include/linux/futex.h | |||
@@ -33,8 +33,8 @@ | |||
33 | #define FUTEX_LOCK_PI_PRIVATE (FUTEX_LOCK_PI | FUTEX_PRIVATE_FLAG) | 33 | #define FUTEX_LOCK_PI_PRIVATE (FUTEX_LOCK_PI | FUTEX_PRIVATE_FLAG) |
34 | #define FUTEX_UNLOCK_PI_PRIVATE (FUTEX_UNLOCK_PI | FUTEX_PRIVATE_FLAG) | 34 | #define FUTEX_UNLOCK_PI_PRIVATE (FUTEX_UNLOCK_PI | FUTEX_PRIVATE_FLAG) |
35 | #define FUTEX_TRYLOCK_PI_PRIVATE (FUTEX_TRYLOCK_PI | FUTEX_PRIVATE_FLAG) | 35 | #define FUTEX_TRYLOCK_PI_PRIVATE (FUTEX_TRYLOCK_PI | FUTEX_PRIVATE_FLAG) |
36 | #define FUTEX_WAIT_BITSET_PRIVATE (FUTEX_WAIT_BITS | FUTEX_PRIVATE_FLAG) | 36 | #define FUTEX_WAIT_BITSET_PRIVATE (FUTEX_WAIT_BITSET | FUTEX_PRIVATE_FLAG) |
37 | #define FUTEX_WAKE_BITSET_PRIVATE (FUTEX_WAKE_BITS | FUTEX_PRIVATE_FLAG) | 37 | #define FUTEX_WAKE_BITSET_PRIVATE (FUTEX_WAKE_BITSET | FUTEX_PRIVATE_FLAG) |
38 | #define FUTEX_WAIT_REQUEUE_PI_PRIVATE (FUTEX_WAIT_REQUEUE_PI | \ | 38 | #define FUTEX_WAIT_REQUEUE_PI_PRIVATE (FUTEX_WAIT_REQUEUE_PI | \ |
39 | FUTEX_PRIVATE_FLAG) | 39 | FUTEX_PRIVATE_FLAG) |
40 | #define FUTEX_CMP_REQUEUE_PI_PRIVATE (FUTEX_CMP_REQUEUE_PI | \ | 40 | #define FUTEX_CMP_REQUEUE_PI_PRIVATE (FUTEX_CMP_REQUEUE_PI | \ |
diff --git a/include/linux/genhd.h b/include/linux/genhd.h index 297df45ffd0a..7beaa21b3880 100644 --- a/include/linux/genhd.h +++ b/include/linux/genhd.h | |||
@@ -98,7 +98,7 @@ struct hd_struct { | |||
98 | int make_it_fail; | 98 | int make_it_fail; |
99 | #endif | 99 | #endif |
100 | unsigned long stamp; | 100 | unsigned long stamp; |
101 | int in_flight[2]; | 101 | int in_flight; |
102 | #ifdef CONFIG_SMP | 102 | #ifdef CONFIG_SMP |
103 | struct disk_stats *dkstats; | 103 | struct disk_stats *dkstats; |
104 | #else | 104 | #else |
@@ -322,23 +322,18 @@ static inline void free_part_stats(struct hd_struct *part) | |||
322 | #define part_stat_sub(cpu, gendiskp, field, subnd) \ | 322 | #define part_stat_sub(cpu, gendiskp, field, subnd) \ |
323 | part_stat_add(cpu, gendiskp, field, -subnd) | 323 | part_stat_add(cpu, gendiskp, field, -subnd) |
324 | 324 | ||
325 | static inline void part_inc_in_flight(struct hd_struct *part, int rw) | 325 | static inline void part_inc_in_flight(struct hd_struct *part) |
326 | { | 326 | { |
327 | part->in_flight[rw]++; | 327 | part->in_flight++; |
328 | if (part->partno) | 328 | if (part->partno) |
329 | part_to_disk(part)->part0.in_flight[rw]++; | 329 | part_to_disk(part)->part0.in_flight++; |
330 | } | 330 | } |
331 | 331 | ||
332 | static inline void part_dec_in_flight(struct hd_struct *part, int rw) | 332 | static inline void part_dec_in_flight(struct hd_struct *part) |
333 | { | 333 | { |
334 | part->in_flight[rw]--; | 334 | part->in_flight--; |
335 | if (part->partno) | 335 | if (part->partno) |
336 | part_to_disk(part)->part0.in_flight[rw]--; | 336 | part_to_disk(part)->part0.in_flight--; |
337 | } | ||
338 | |||
339 | static inline int part_in_flight(struct hd_struct *part) | ||
340 | { | ||
341 | return part->in_flight[0] + part->in_flight[1]; | ||
342 | } | 337 | } |
343 | 338 | ||
344 | /* block/blk-core.c */ | 339 | /* block/blk-core.c */ |
@@ -551,8 +546,6 @@ extern ssize_t part_size_show(struct device *dev, | |||
551 | struct device_attribute *attr, char *buf); | 546 | struct device_attribute *attr, char *buf); |
552 | extern ssize_t part_stat_show(struct device *dev, | 547 | extern ssize_t part_stat_show(struct device *dev, |
553 | struct device_attribute *attr, char *buf); | 548 | struct device_attribute *attr, char *buf); |
554 | extern ssize_t part_inflight_show(struct device *dev, | ||
555 | struct device_attribute *attr, char *buf); | ||
556 | #ifdef CONFIG_FAIL_MAKE_REQUEST | 549 | #ifdef CONFIG_FAIL_MAKE_REQUEST |
557 | extern ssize_t part_fail_show(struct device *dev, | 550 | extern ssize_t part_fail_show(struct device *dev, |
558 | struct device_attribute *attr, char *buf); | 551 | struct device_attribute *attr, char *buf); |
diff --git a/include/linux/i2c/twl4030.h b/include/linux/i2c/twl4030.h index 2d02dfd7076c..508824ee35e6 100644 --- a/include/linux/i2c/twl4030.h +++ b/include/linux/i2c/twl4030.h | |||
@@ -349,11 +349,11 @@ struct twl4030_madc_platform_data { | |||
349 | int irq_line; | 349 | int irq_line; |
350 | }; | 350 | }; |
351 | 351 | ||
352 | /* Boards have uniqe mappings of {col, row} --> keycode. | 352 | /* Boards have uniqe mappings of {row, col} --> keycode. |
353 | * Column and row are 4 bits, but range only from 0..7. | 353 | * Column and row are 8 bits each, but range only from 0..7. |
354 | * a PERSISTENT_KEY is "always on" and never reported. | 354 | * a PERSISTENT_KEY is "always on" and never reported. |
355 | */ | 355 | */ |
356 | #define PERSISTENT_KEY(c, r) KEY((c), (r), KEY_RESERVED) | 356 | #define PERSISTENT_KEY(r, c) KEY((r), (c), KEY_RESERVED) |
357 | 357 | ||
358 | struct twl4030_keypad_data { | 358 | struct twl4030_keypad_data { |
359 | const struct matrix_keymap_data *keymap_data; | 359 | const struct matrix_keymap_data *keymap_data; |
diff --git a/include/linux/if_tunnel.h b/include/linux/if_tunnel.h index 5eb9b0f857e0..5a9aae4adb44 100644 --- a/include/linux/if_tunnel.h +++ b/include/linux/if_tunnel.h | |||
@@ -44,7 +44,7 @@ struct ip_tunnel_prl { | |||
44 | __u16 flags; | 44 | __u16 flags; |
45 | __u16 __reserved; | 45 | __u16 __reserved; |
46 | __u32 datalen; | 46 | __u32 datalen; |
47 | __u32 rs_delay; | 47 | __u32 __reserved2; |
48 | /* data follows */ | 48 | /* data follows */ |
49 | }; | 49 | }; |
50 | 50 | ||
diff --git a/include/linux/init.h b/include/linux/init.h index 400adbb45414..ff8bde520d03 100644 --- a/include/linux/init.h +++ b/include/linux/init.h | |||
@@ -271,6 +271,7 @@ void __init parse_early_options(char *cmdline); | |||
271 | #else /* MODULE */ | 271 | #else /* MODULE */ |
272 | 272 | ||
273 | /* Don't use these in modules, but some people do... */ | 273 | /* Don't use these in modules, but some people do... */ |
274 | #define early_initcall(fn) module_init(fn) | ||
274 | #define core_initcall(fn) module_init(fn) | 275 | #define core_initcall(fn) module_init(fn) |
275 | #define postcore_initcall(fn) module_init(fn) | 276 | #define postcore_initcall(fn) module_init(fn) |
276 | #define arch_initcall(fn) module_init(fn) | 277 | #define arch_initcall(fn) module_init(fn) |
diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h index b78cf8194957..7ca72b74eec7 100644 --- a/include/linux/interrupt.h +++ b/include/linux/interrupt.h | |||
@@ -10,7 +10,6 @@ | |||
10 | #include <linux/irqreturn.h> | 10 | #include <linux/irqreturn.h> |
11 | #include <linux/irqnr.h> | 11 | #include <linux/irqnr.h> |
12 | #include <linux/hardirq.h> | 12 | #include <linux/hardirq.h> |
13 | #include <linux/sched.h> | ||
14 | #include <linux/irqflags.h> | 13 | #include <linux/irqflags.h> |
15 | #include <linux/smp.h> | 14 | #include <linux/smp.h> |
16 | #include <linux/percpu.h> | 15 | #include <linux/percpu.h> |
@@ -610,6 +609,7 @@ extern void debug_poll_all_shared_irqs(void); | |||
610 | static inline void debug_poll_all_shared_irqs(void) { } | 609 | static inline void debug_poll_all_shared_irqs(void) { } |
611 | #endif | 610 | #endif |
612 | 611 | ||
612 | struct seq_file; | ||
613 | int show_interrupts(struct seq_file *p, void *v); | 613 | int show_interrupts(struct seq_file *p, void *v); |
614 | 614 | ||
615 | struct irq_desc; | 615 | struct irq_desc; |
diff --git a/include/linux/jbd2.h b/include/linux/jbd2.h index 52695d3dfd0b..f1011f7f3d41 100644 --- a/include/linux/jbd2.h +++ b/include/linux/jbd2.h | |||
@@ -464,9 +464,9 @@ struct handle_s | |||
464 | */ | 464 | */ |
465 | struct transaction_chp_stats_s { | 465 | struct transaction_chp_stats_s { |
466 | unsigned long cs_chp_time; | 466 | unsigned long cs_chp_time; |
467 | unsigned long cs_forced_to_close; | 467 | __u32 cs_forced_to_close; |
468 | unsigned long cs_written; | 468 | __u32 cs_written; |
469 | unsigned long cs_dropped; | 469 | __u32 cs_dropped; |
470 | }; | 470 | }; |
471 | 471 | ||
472 | /* The transaction_t type is the guts of the journaling mechanism. It | 472 | /* The transaction_t type is the guts of the journaling mechanism. It |
@@ -668,23 +668,16 @@ struct transaction_run_stats_s { | |||
668 | unsigned long rs_flushing; | 668 | unsigned long rs_flushing; |
669 | unsigned long rs_logging; | 669 | unsigned long rs_logging; |
670 | 670 | ||
671 | unsigned long rs_handle_count; | 671 | __u32 rs_handle_count; |
672 | unsigned long rs_blocks; | 672 | __u32 rs_blocks; |
673 | unsigned long rs_blocks_logged; | 673 | __u32 rs_blocks_logged; |
674 | }; | 674 | }; |
675 | 675 | ||
676 | struct transaction_stats_s { | 676 | struct transaction_stats_s { |
677 | int ts_type; | ||
678 | unsigned long ts_tid; | 677 | unsigned long ts_tid; |
679 | union { | 678 | struct transaction_run_stats_s run; |
680 | struct transaction_run_stats_s run; | ||
681 | struct transaction_chp_stats_s chp; | ||
682 | } u; | ||
683 | }; | 679 | }; |
684 | 680 | ||
685 | #define JBD2_STATS_RUN 1 | ||
686 | #define JBD2_STATS_CHECKPOINT 2 | ||
687 | |||
688 | static inline unsigned long | 681 | static inline unsigned long |
689 | jbd2_time_diff(unsigned long start, unsigned long end) | 682 | jbd2_time_diff(unsigned long start, unsigned long end) |
690 | { | 683 | { |
@@ -988,12 +981,6 @@ struct journal_s | |||
988 | /* | 981 | /* |
989 | * Journal statistics | 982 | * Journal statistics |
990 | */ | 983 | */ |
991 | struct transaction_stats_s *j_history; | ||
992 | int j_history_max; | ||
993 | int j_history_cur; | ||
994 | /* | ||
995 | * Protect the transactions statistics history | ||
996 | */ | ||
997 | spinlock_t j_history_lock; | 984 | spinlock_t j_history_lock; |
998 | struct proc_dir_entry *j_proc_entry; | 985 | struct proc_dir_entry *j_proc_entry; |
999 | struct transaction_stats_s j_stats; | 986 | struct transaction_stats_s j_stats; |
diff --git a/include/linux/libata.h b/include/linux/libata.h index 76319bf03e37..87698640c091 100644 --- a/include/linux/libata.h +++ b/include/linux/libata.h | |||
@@ -418,6 +418,17 @@ enum { | |||
418 | ATA_TIMING_ACTIVE | ATA_TIMING_RECOVER | | 418 | ATA_TIMING_ACTIVE | ATA_TIMING_RECOVER | |
419 | ATA_TIMING_DMACK_HOLD | ATA_TIMING_CYCLE | | 419 | ATA_TIMING_DMACK_HOLD | ATA_TIMING_CYCLE | |
420 | ATA_TIMING_UDMA, | 420 | ATA_TIMING_UDMA, |
421 | |||
422 | /* ACPI constants */ | ||
423 | ATA_ACPI_FILTER_SETXFER = 1 << 0, | ||
424 | ATA_ACPI_FILTER_LOCK = 1 << 1, | ||
425 | ATA_ACPI_FILTER_DIPM = 1 << 2, | ||
426 | ATA_ACPI_FILTER_FPDMA_OFFSET = 1 << 3, /* FPDMA non-zero offset */ | ||
427 | ATA_ACPI_FILTER_FPDMA_AA = 1 << 4, /* FPDMA auto activate */ | ||
428 | |||
429 | ATA_ACPI_FILTER_DEFAULT = ATA_ACPI_FILTER_SETXFER | | ||
430 | ATA_ACPI_FILTER_LOCK | | ||
431 | ATA_ACPI_FILTER_DIPM, | ||
421 | }; | 432 | }; |
422 | 433 | ||
423 | enum ata_xfer_mask { | 434 | enum ata_xfer_mask { |
@@ -587,6 +598,7 @@ struct ata_device { | |||
587 | #ifdef CONFIG_ATA_ACPI | 598 | #ifdef CONFIG_ATA_ACPI |
588 | acpi_handle acpi_handle; | 599 | acpi_handle acpi_handle; |
589 | union acpi_object *gtf_cache; | 600 | union acpi_object *gtf_cache; |
601 | unsigned int gtf_filter; | ||
590 | #endif | 602 | #endif |
591 | /* n_sector is CLEAR_BEGIN, read comment above CLEAR_BEGIN */ | 603 | /* n_sector is CLEAR_BEGIN, read comment above CLEAR_BEGIN */ |
592 | u64 n_sectors; /* size of device, if ATA */ | 604 | u64 n_sectors; /* size of device, if ATA */ |
diff --git a/include/linux/mmc/host.h b/include/linux/mmc/host.h index 81bb42358595..eaf36364b7d4 100644 --- a/include/linux/mmc/host.h +++ b/include/linux/mmc/host.h | |||
@@ -11,6 +11,7 @@ | |||
11 | #define LINUX_MMC_HOST_H | 11 | #define LINUX_MMC_HOST_H |
12 | 12 | ||
13 | #include <linux/leds.h> | 13 | #include <linux/leds.h> |
14 | #include <linux/sched.h> | ||
14 | 15 | ||
15 | #include <linux/mmc/core.h> | 16 | #include <linux/mmc/core.h> |
16 | 17 | ||
diff --git a/include/linux/mroute.h b/include/linux/mroute.h index 0d45b4e8d367..08bc776d05e2 100644 --- a/include/linux/mroute.h +++ b/include/linux/mroute.h | |||
@@ -145,14 +145,14 @@ static inline int ip_mroute_opt(int opt) | |||
145 | #endif | 145 | #endif |
146 | 146 | ||
147 | #ifdef CONFIG_IP_MROUTE | 147 | #ifdef CONFIG_IP_MROUTE |
148 | extern int ip_mroute_setsockopt(struct sock *, int, char __user *, int); | 148 | extern int ip_mroute_setsockopt(struct sock *, int, char __user *, unsigned int); |
149 | extern int ip_mroute_getsockopt(struct sock *, int, char __user *, int __user *); | 149 | extern int ip_mroute_getsockopt(struct sock *, int, char __user *, int __user *); |
150 | extern int ipmr_ioctl(struct sock *sk, int cmd, void __user *arg); | 150 | extern int ipmr_ioctl(struct sock *sk, int cmd, void __user *arg); |
151 | extern int ip_mr_init(void); | 151 | extern int ip_mr_init(void); |
152 | #else | 152 | #else |
153 | static inline | 153 | static inline |
154 | int ip_mroute_setsockopt(struct sock *sock, | 154 | int ip_mroute_setsockopt(struct sock *sock, |
155 | int optname, char __user *optval, int optlen) | 155 | int optname, char __user *optval, unsigned int optlen) |
156 | { | 156 | { |
157 | return -ENOPROTOOPT; | 157 | return -ENOPROTOOPT; |
158 | } | 158 | } |
diff --git a/include/linux/mroute6.h b/include/linux/mroute6.h index 43dc97e32183..b191865a6ca3 100644 --- a/include/linux/mroute6.h +++ b/include/linux/mroute6.h | |||
@@ -134,7 +134,7 @@ static inline int ip6_mroute_opt(int opt) | |||
134 | struct sock; | 134 | struct sock; |
135 | 135 | ||
136 | #ifdef CONFIG_IPV6_MROUTE | 136 | #ifdef CONFIG_IPV6_MROUTE |
137 | extern int ip6_mroute_setsockopt(struct sock *, int, char __user *, int); | 137 | extern int ip6_mroute_setsockopt(struct sock *, int, char __user *, unsigned int); |
138 | extern int ip6_mroute_getsockopt(struct sock *, int, char __user *, int __user *); | 138 | extern int ip6_mroute_getsockopt(struct sock *, int, char __user *, int __user *); |
139 | extern int ip6_mr_input(struct sk_buff *skb); | 139 | extern int ip6_mr_input(struct sk_buff *skb); |
140 | extern int ip6mr_ioctl(struct sock *sk, int cmd, void __user *arg); | 140 | extern int ip6mr_ioctl(struct sock *sk, int cmd, void __user *arg); |
@@ -143,7 +143,7 @@ extern void ip6_mr_cleanup(void); | |||
143 | #else | 143 | #else |
144 | static inline | 144 | static inline |
145 | int ip6_mroute_setsockopt(struct sock *sock, | 145 | int ip6_mroute_setsockopt(struct sock *sock, |
146 | int optname, char __user *optval, int optlen) | 146 | int optname, char __user *optval, unsigned int optlen) |
147 | { | 147 | { |
148 | return -ENOPROTOOPT; | 148 | return -ENOPROTOOPT; |
149 | } | 149 | } |
diff --git a/include/linux/net.h b/include/linux/net.h index 9040a10584f7..529a0931711d 100644 --- a/include/linux/net.h +++ b/include/linux/net.h | |||
@@ -178,11 +178,11 @@ struct proto_ops { | |||
178 | int (*listen) (struct socket *sock, int len); | 178 | int (*listen) (struct socket *sock, int len); |
179 | int (*shutdown) (struct socket *sock, int flags); | 179 | int (*shutdown) (struct socket *sock, int flags); |
180 | int (*setsockopt)(struct socket *sock, int level, | 180 | int (*setsockopt)(struct socket *sock, int level, |
181 | int optname, char __user *optval, int optlen); | 181 | int optname, char __user *optval, unsigned int optlen); |
182 | int (*getsockopt)(struct socket *sock, int level, | 182 | int (*getsockopt)(struct socket *sock, int level, |
183 | int optname, char __user *optval, int __user *optlen); | 183 | int optname, char __user *optval, int __user *optlen); |
184 | int (*compat_setsockopt)(struct socket *sock, int level, | 184 | int (*compat_setsockopt)(struct socket *sock, int level, |
185 | int optname, char __user *optval, int optlen); | 185 | int optname, char __user *optval, unsigned int optlen); |
186 | int (*compat_getsockopt)(struct socket *sock, int level, | 186 | int (*compat_getsockopt)(struct socket *sock, int level, |
187 | int optname, char __user *optval, int __user *optlen); | 187 | int optname, char __user *optval, int __user *optlen); |
188 | int (*sendmsg) (struct kiocb *iocb, struct socket *sock, | 188 | int (*sendmsg) (struct kiocb *iocb, struct socket *sock, |
@@ -256,7 +256,7 @@ extern int kernel_getpeername(struct socket *sock, struct sockaddr *addr, | |||
256 | extern int kernel_getsockopt(struct socket *sock, int level, int optname, | 256 | extern int kernel_getsockopt(struct socket *sock, int level, int optname, |
257 | char *optval, int *optlen); | 257 | char *optval, int *optlen); |
258 | extern int kernel_setsockopt(struct socket *sock, int level, int optname, | 258 | extern int kernel_setsockopt(struct socket *sock, int level, int optname, |
259 | char *optval, int optlen); | 259 | char *optval, unsigned int optlen); |
260 | extern int kernel_sendpage(struct socket *sock, struct page *page, int offset, | 260 | extern int kernel_sendpage(struct socket *sock, struct page *page, int offset, |
261 | size_t size, int flags); | 261 | size_t size, int flags); |
262 | extern int kernel_sock_ioctl(struct socket *sock, int cmd, unsigned long arg); | 262 | extern int kernel_sock_ioctl(struct socket *sock, int cmd, unsigned long arg); |
@@ -313,7 +313,7 @@ SOCKCALL_WRAP(name, compat_ioctl, (struct socket *sock, unsigned int cmd, \ | |||
313 | SOCKCALL_WRAP(name, listen, (struct socket *sock, int len), (sock, len)) \ | 313 | SOCKCALL_WRAP(name, listen, (struct socket *sock, int len), (sock, len)) \ |
314 | SOCKCALL_WRAP(name, shutdown, (struct socket *sock, int flags), (sock, flags)) \ | 314 | SOCKCALL_WRAP(name, shutdown, (struct socket *sock, int flags), (sock, flags)) \ |
315 | SOCKCALL_WRAP(name, setsockopt, (struct socket *sock, int level, int optname, \ | 315 | SOCKCALL_WRAP(name, setsockopt, (struct socket *sock, int level, int optname, \ |
316 | char __user *optval, int optlen), (sock, level, optname, optval, optlen)) \ | 316 | char __user *optval, unsigned int optlen), (sock, level, optname, optval, optlen)) \ |
317 | SOCKCALL_WRAP(name, getsockopt, (struct socket *sock, int level, int optname, \ | 317 | SOCKCALL_WRAP(name, getsockopt, (struct socket *sock, int level, int optname, \ |
318 | char __user *optval, int __user *optlen), (sock, level, optname, optval, optlen)) \ | 318 | char __user *optval, int __user *optlen), (sock, level, optname, optval, optlen)) \ |
319 | SOCKCALL_WRAP(name, sendmsg, (struct kiocb *iocb, struct socket *sock, struct msghdr *m, size_t len), \ | 319 | SOCKCALL_WRAP(name, sendmsg, (struct kiocb *iocb, struct socket *sock, struct msghdr *m, size_t len), \ |
diff --git a/include/linux/netfilter.h b/include/linux/netfilter.h index 48cfe51bfddc..6132b5e6d9d3 100644 --- a/include/linux/netfilter.h +++ b/include/linux/netfilter.h | |||
@@ -221,12 +221,12 @@ __ret;}) | |||
221 | 221 | ||
222 | /* Call setsockopt() */ | 222 | /* Call setsockopt() */ |
223 | int nf_setsockopt(struct sock *sk, u_int8_t pf, int optval, char __user *opt, | 223 | int nf_setsockopt(struct sock *sk, u_int8_t pf, int optval, char __user *opt, |
224 | int len); | 224 | unsigned int len); |
225 | int nf_getsockopt(struct sock *sk, u_int8_t pf, int optval, char __user *opt, | 225 | int nf_getsockopt(struct sock *sk, u_int8_t pf, int optval, char __user *opt, |
226 | int *len); | 226 | int *len); |
227 | 227 | ||
228 | int compat_nf_setsockopt(struct sock *sk, u_int8_t pf, int optval, | 228 | int compat_nf_setsockopt(struct sock *sk, u_int8_t pf, int optval, |
229 | char __user *opt, int len); | 229 | char __user *opt, unsigned int len); |
230 | int compat_nf_getsockopt(struct sock *sk, u_int8_t pf, int optval, | 230 | int compat_nf_getsockopt(struct sock *sk, u_int8_t pf, int optval, |
231 | char __user *opt, int *len); | 231 | char __user *opt, int *len); |
232 | 232 | ||
diff --git a/include/linux/poll.h b/include/linux/poll.h index fa287f25138d..6673743946f7 100644 --- a/include/linux/poll.h +++ b/include/linux/poll.h | |||
@@ -6,10 +6,10 @@ | |||
6 | #ifdef __KERNEL__ | 6 | #ifdef __KERNEL__ |
7 | 7 | ||
8 | #include <linux/compiler.h> | 8 | #include <linux/compiler.h> |
9 | #include <linux/ktime.h> | ||
9 | #include <linux/wait.h> | 10 | #include <linux/wait.h> |
10 | #include <linux/string.h> | 11 | #include <linux/string.h> |
11 | #include <linux/fs.h> | 12 | #include <linux/fs.h> |
12 | #include <linux/sched.h> | ||
13 | #include <asm/uaccess.h> | 13 | #include <asm/uaccess.h> |
14 | 14 | ||
15 | /* ~832 bytes of stack space used max in sys_select/sys_poll before allocating | 15 | /* ~832 bytes of stack space used max in sys_select/sys_poll before allocating |
diff --git a/include/linux/rcupdate.h b/include/linux/rcupdate.h index 6fe0363724e9..3ebd0b7bcb08 100644 --- a/include/linux/rcupdate.h +++ b/include/linux/rcupdate.h | |||
@@ -77,7 +77,7 @@ extern int rcu_scheduler_active; | |||
77 | #error "Unknown RCU implementation specified to kernel configuration" | 77 | #error "Unknown RCU implementation specified to kernel configuration" |
78 | #endif | 78 | #endif |
79 | 79 | ||
80 | #define RCU_HEAD_INIT { .next = NULL, .func = NULL } | 80 | #define RCU_HEAD_INIT { .next = NULL, .func = NULL } |
81 | #define RCU_HEAD(head) struct rcu_head head = RCU_HEAD_INIT | 81 | #define RCU_HEAD(head) struct rcu_head head = RCU_HEAD_INIT |
82 | #define INIT_RCU_HEAD(ptr) do { \ | 82 | #define INIT_RCU_HEAD(ptr) do { \ |
83 | (ptr)->next = NULL; (ptr)->func = NULL; \ | 83 | (ptr)->next = NULL; (ptr)->func = NULL; \ |
@@ -129,12 +129,6 @@ static inline void rcu_read_lock(void) | |||
129 | rcu_read_acquire(); | 129 | rcu_read_acquire(); |
130 | } | 130 | } |
131 | 131 | ||
132 | /** | ||
133 | * rcu_read_unlock - marks the end of an RCU read-side critical section. | ||
134 | * | ||
135 | * See rcu_read_lock() for more information. | ||
136 | */ | ||
137 | |||
138 | /* | 132 | /* |
139 | * So where is rcu_write_lock()? It does not exist, as there is no | 133 | * So where is rcu_write_lock()? It does not exist, as there is no |
140 | * way for writers to lock out RCU readers. This is a feature, not | 134 | * way for writers to lock out RCU readers. This is a feature, not |
@@ -144,6 +138,12 @@ static inline void rcu_read_lock(void) | |||
144 | * used as well. RCU does not care how the writers keep out of each | 138 | * used as well. RCU does not care how the writers keep out of each |
145 | * others' way, as long as they do so. | 139 | * others' way, as long as they do so. |
146 | */ | 140 | */ |
141 | |||
142 | /** | ||
143 | * rcu_read_unlock - marks the end of an RCU read-side critical section. | ||
144 | * | ||
145 | * See rcu_read_lock() for more information. | ||
146 | */ | ||
147 | static inline void rcu_read_unlock(void) | 147 | static inline void rcu_read_unlock(void) |
148 | { | 148 | { |
149 | rcu_read_release(); | 149 | rcu_read_release(); |
@@ -196,6 +196,8 @@ static inline void rcu_read_lock_sched(void) | |||
196 | __acquire(RCU_SCHED); | 196 | __acquire(RCU_SCHED); |
197 | rcu_read_acquire(); | 197 | rcu_read_acquire(); |
198 | } | 198 | } |
199 | |||
200 | /* Used by lockdep and tracing: cannot be traced, cannot call lockdep. */ | ||
199 | static inline notrace void rcu_read_lock_sched_notrace(void) | 201 | static inline notrace void rcu_read_lock_sched_notrace(void) |
200 | { | 202 | { |
201 | preempt_disable_notrace(); | 203 | preempt_disable_notrace(); |
@@ -213,6 +215,8 @@ static inline void rcu_read_unlock_sched(void) | |||
213 | __release(RCU_SCHED); | 215 | __release(RCU_SCHED); |
214 | preempt_enable(); | 216 | preempt_enable(); |
215 | } | 217 | } |
218 | |||
219 | /* Used by lockdep and tracing: cannot be traced, cannot call lockdep. */ | ||
216 | static inline notrace void rcu_read_unlock_sched_notrace(void) | 220 | static inline notrace void rcu_read_unlock_sched_notrace(void) |
217 | { | 221 | { |
218 | __release(RCU_SCHED); | 222 | __release(RCU_SCHED); |
diff --git a/include/linux/rcutree.h b/include/linux/rcutree.h index 37682770e9d2..46e9ab3ee6e1 100644 --- a/include/linux/rcutree.h +++ b/include/linux/rcutree.h | |||
@@ -30,10 +30,14 @@ | |||
30 | #ifndef __LINUX_RCUTREE_H | 30 | #ifndef __LINUX_RCUTREE_H |
31 | #define __LINUX_RCUTREE_H | 31 | #define __LINUX_RCUTREE_H |
32 | 32 | ||
33 | struct notifier_block; | ||
34 | |||
33 | extern void rcu_sched_qs(int cpu); | 35 | extern void rcu_sched_qs(int cpu); |
34 | extern void rcu_bh_qs(int cpu); | 36 | extern void rcu_bh_qs(int cpu); |
35 | 37 | extern int rcu_cpu_notify(struct notifier_block *self, | |
38 | unsigned long action, void *hcpu); | ||
36 | extern int rcu_needs_cpu(int cpu); | 39 | extern int rcu_needs_cpu(int cpu); |
40 | extern int rcu_expedited_torture_stats(char *page); | ||
37 | 41 | ||
38 | #ifdef CONFIG_TREE_PREEMPT_RCU | 42 | #ifdef CONFIG_TREE_PREEMPT_RCU |
39 | 43 | ||
@@ -85,16 +89,11 @@ static inline void synchronize_rcu_bh_expedited(void) | |||
85 | 89 | ||
86 | extern void __rcu_init(void); | 90 | extern void __rcu_init(void); |
87 | extern void rcu_check_callbacks(int cpu, int user); | 91 | extern void rcu_check_callbacks(int cpu, int user); |
88 | extern void rcu_restart_cpu(int cpu); | ||
89 | 92 | ||
90 | extern long rcu_batches_completed(void); | 93 | extern long rcu_batches_completed(void); |
91 | extern long rcu_batches_completed_bh(void); | 94 | extern long rcu_batches_completed_bh(void); |
92 | extern long rcu_batches_completed_sched(void); | 95 | extern long rcu_batches_completed_sched(void); |
93 | 96 | ||
94 | static inline void rcu_init_sched(void) | ||
95 | { | ||
96 | } | ||
97 | |||
98 | #ifdef CONFIG_NO_HZ | 97 | #ifdef CONFIG_NO_HZ |
99 | void rcu_enter_nohz(void); | 98 | void rcu_enter_nohz(void); |
100 | void rcu_exit_nohz(void); | 99 | void rcu_exit_nohz(void); |
@@ -107,7 +106,7 @@ static inline void rcu_exit_nohz(void) | |||
107 | } | 106 | } |
108 | #endif /* CONFIG_NO_HZ */ | 107 | #endif /* CONFIG_NO_HZ */ |
109 | 108 | ||
110 | /* A context switch is a grace period for rcutree. */ | 109 | /* A context switch is a grace period for RCU-sched and RCU-bh. */ |
111 | static inline int rcu_blocking_is_gp(void) | 110 | static inline int rcu_blocking_is_gp(void) |
112 | { | 111 | { |
113 | return num_online_cpus() == 1; | 112 | return num_online_cpus() == 1; |
diff --git a/include/linux/res_counter.h b/include/linux/res_counter.h index 731af71cddc9..fcb9884df618 100644 --- a/include/linux/res_counter.h +++ b/include/linux/res_counter.h | |||
@@ -114,8 +114,7 @@ void res_counter_init(struct res_counter *counter, struct res_counter *parent); | |||
114 | int __must_check res_counter_charge_locked(struct res_counter *counter, | 114 | int __must_check res_counter_charge_locked(struct res_counter *counter, |
115 | unsigned long val); | 115 | unsigned long val); |
116 | int __must_check res_counter_charge(struct res_counter *counter, | 116 | int __must_check res_counter_charge(struct res_counter *counter, |
117 | unsigned long val, struct res_counter **limit_fail_at, | 117 | unsigned long val, struct res_counter **limit_fail_at); |
118 | struct res_counter **soft_limit_at); | ||
119 | 118 | ||
120 | /* | 119 | /* |
121 | * uncharge - tell that some portion of the resource is released | 120 | * uncharge - tell that some portion of the resource is released |
@@ -128,8 +127,7 @@ int __must_check res_counter_charge(struct res_counter *counter, | |||
128 | */ | 127 | */ |
129 | 128 | ||
130 | void res_counter_uncharge_locked(struct res_counter *counter, unsigned long val); | 129 | void res_counter_uncharge_locked(struct res_counter *counter, unsigned long val); |
131 | void res_counter_uncharge(struct res_counter *counter, unsigned long val, | 130 | void res_counter_uncharge(struct res_counter *counter, unsigned long val); |
132 | bool *was_soft_limit_excess); | ||
133 | 131 | ||
134 | static inline bool res_counter_limit_check_locked(struct res_counter *cnt) | 132 | static inline bool res_counter_limit_check_locked(struct res_counter *cnt) |
135 | { | 133 | { |
diff --git a/include/linux/serial_core.h b/include/linux/serial_core.h index fe661afe0713..db532ce288be 100644 --- a/include/linux/serial_core.h +++ b/include/linux/serial_core.h | |||
@@ -176,6 +176,9 @@ | |||
176 | /* Qualcomm MSM SoCs */ | 176 | /* Qualcomm MSM SoCs */ |
177 | #define PORT_MSM 88 | 177 | #define PORT_MSM 88 |
178 | 178 | ||
179 | /* BCM63xx family SoCs */ | ||
180 | #define PORT_BCM63XX 89 | ||
181 | |||
179 | #ifdef __KERNEL__ | 182 | #ifdef __KERNEL__ |
180 | 183 | ||
181 | #include <linux/compiler.h> | 184 | #include <linux/compiler.h> |
diff --git a/include/linux/socket.h b/include/linux/socket.h index 3b461dffe244..3273a0c5043b 100644 --- a/include/linux/socket.h +++ b/include/linux/socket.h | |||
@@ -16,7 +16,7 @@ struct __kernel_sockaddr_storage { | |||
16 | /* _SS_MAXSIZE value minus size of ss_family */ | 16 | /* _SS_MAXSIZE value minus size of ss_family */ |
17 | } __attribute__ ((aligned(_K_SS_ALIGNSIZE))); /* force desired alignment */ | 17 | } __attribute__ ((aligned(_K_SS_ALIGNSIZE))); /* force desired alignment */ |
18 | 18 | ||
19 | #if defined(__KERNEL__) || !defined(__GLIBC__) || (__GLIBC__ < 2) | 19 | #ifdef __KERNEL__ |
20 | 20 | ||
21 | #include <asm/socket.h> /* arch-dependent defines */ | 21 | #include <asm/socket.h> /* arch-dependent defines */ |
22 | #include <linux/sockios.h> /* the SIOCxxx I/O controls */ | 22 | #include <linux/sockios.h> /* the SIOCxxx I/O controls */ |
@@ -101,21 +101,6 @@ struct cmsghdr { | |||
101 | ((char *)(cmsg) - (char *)(mhdr)->msg_control))) | 101 | ((char *)(cmsg) - (char *)(mhdr)->msg_control))) |
102 | 102 | ||
103 | /* | 103 | /* |
104 | * This mess will go away with glibc | ||
105 | */ | ||
106 | |||
107 | #ifdef __KERNEL__ | ||
108 | #define __KINLINE static inline | ||
109 | #elif defined(__GNUC__) | ||
110 | #define __KINLINE static __inline__ | ||
111 | #elif defined(__cplusplus) | ||
112 | #define __KINLINE static inline | ||
113 | #else | ||
114 | #define __KINLINE static | ||
115 | #endif | ||
116 | |||
117 | |||
118 | /* | ||
119 | * Get the next cmsg header | 104 | * Get the next cmsg header |
120 | * | 105 | * |
121 | * PLEASE, do not touch this function. If you think, that it is | 106 | * PLEASE, do not touch this function. If you think, that it is |
@@ -128,7 +113,7 @@ struct cmsghdr { | |||
128 | * ancillary object DATA. --ANK (980731) | 113 | * ancillary object DATA. --ANK (980731) |
129 | */ | 114 | */ |
130 | 115 | ||
131 | __KINLINE struct cmsghdr * __cmsg_nxthdr(void *__ctl, __kernel_size_t __size, | 116 | static inline struct cmsghdr * __cmsg_nxthdr(void *__ctl, __kernel_size_t __size, |
132 | struct cmsghdr *__cmsg) | 117 | struct cmsghdr *__cmsg) |
133 | { | 118 | { |
134 | struct cmsghdr * __ptr; | 119 | struct cmsghdr * __ptr; |
@@ -140,7 +125,7 @@ __KINLINE struct cmsghdr * __cmsg_nxthdr(void *__ctl, __kernel_size_t __size, | |||
140 | return __ptr; | 125 | return __ptr; |
141 | } | 126 | } |
142 | 127 | ||
143 | __KINLINE struct cmsghdr * cmsg_nxthdr (struct msghdr *__msg, struct cmsghdr *__cmsg) | 128 | static inline struct cmsghdr * cmsg_nxthdr (struct msghdr *__msg, struct cmsghdr *__cmsg) |
144 | { | 129 | { |
145 | return __cmsg_nxthdr(__msg->msg_control, __msg->msg_controllen, __cmsg); | 130 | return __cmsg_nxthdr(__msg->msg_control, __msg->msg_controllen, __cmsg); |
146 | } | 131 | } |
diff --git a/include/linux/usb/serial.h b/include/linux/usb/serial.h index c17eb64d7213..ce911ebf91e8 100644 --- a/include/linux/usb/serial.h +++ b/include/linux/usb/serial.h | |||
@@ -150,6 +150,7 @@ struct usb_serial { | |||
150 | struct usb_interface *interface; | 150 | struct usb_interface *interface; |
151 | unsigned char disconnected:1; | 151 | unsigned char disconnected:1; |
152 | unsigned char suspending:1; | 152 | unsigned char suspending:1; |
153 | unsigned char attached:1; | ||
153 | unsigned char minor; | 154 | unsigned char minor; |
154 | unsigned char num_ports; | 155 | unsigned char num_ports; |
155 | unsigned char num_port_pointers; | 156 | unsigned char num_port_pointers; |
diff --git a/include/net/compat.h b/include/net/compat.h index 5bbf8bf9efea..7c3002832d05 100644 --- a/include/net/compat.h +++ b/include/net/compat.h | |||
@@ -40,8 +40,8 @@ extern int put_cmsg_compat(struct msghdr*, int, int, int, void *); | |||
40 | 40 | ||
41 | extern int cmsghdr_from_user_compat_to_kern(struct msghdr *, struct sock *, unsigned char *, int); | 41 | extern int cmsghdr_from_user_compat_to_kern(struct msghdr *, struct sock *, unsigned char *, int); |
42 | 42 | ||
43 | extern int compat_mc_setsockopt(struct sock *, int, int, char __user *, int, | 43 | extern int compat_mc_setsockopt(struct sock *, int, int, char __user *, unsigned int, |
44 | int (*)(struct sock *, int, int, char __user *, int)); | 44 | int (*)(struct sock *, int, int, char __user *, unsigned int)); |
45 | extern int compat_mc_getsockopt(struct sock *, int, int, char __user *, | 45 | extern int compat_mc_getsockopt(struct sock *, int, int, char __user *, |
46 | int __user *, int (*)(struct sock *, int, int, char __user *, | 46 | int __user *, int (*)(struct sock *, int, int, char __user *, |
47 | int __user *)); | 47 | int __user *)); |
diff --git a/include/net/inet_connection_sock.h b/include/net/inet_connection_sock.h index 03cffd9f64e3..696d6e4ce68a 100644 --- a/include/net/inet_connection_sock.h +++ b/include/net/inet_connection_sock.h | |||
@@ -48,13 +48,13 @@ struct inet_connection_sock_af_ops { | |||
48 | u16 net_header_len; | 48 | u16 net_header_len; |
49 | u16 sockaddr_len; | 49 | u16 sockaddr_len; |
50 | int (*setsockopt)(struct sock *sk, int level, int optname, | 50 | int (*setsockopt)(struct sock *sk, int level, int optname, |
51 | char __user *optval, int optlen); | 51 | char __user *optval, unsigned int optlen); |
52 | int (*getsockopt)(struct sock *sk, int level, int optname, | 52 | int (*getsockopt)(struct sock *sk, int level, int optname, |
53 | char __user *optval, int __user *optlen); | 53 | char __user *optval, int __user *optlen); |
54 | #ifdef CONFIG_COMPAT | 54 | #ifdef CONFIG_COMPAT |
55 | int (*compat_setsockopt)(struct sock *sk, | 55 | int (*compat_setsockopt)(struct sock *sk, |
56 | int level, int optname, | 56 | int level, int optname, |
57 | char __user *optval, int optlen); | 57 | char __user *optval, unsigned int optlen); |
58 | int (*compat_getsockopt)(struct sock *sk, | 58 | int (*compat_getsockopt)(struct sock *sk, |
59 | int level, int optname, | 59 | int level, int optname, |
60 | char __user *optval, int __user *optlen); | 60 | char __user *optval, int __user *optlen); |
@@ -332,5 +332,5 @@ extern void inet_csk_addr2sockaddr(struct sock *sk, struct sockaddr *uaddr); | |||
332 | extern int inet_csk_compat_getsockopt(struct sock *sk, int level, int optname, | 332 | extern int inet_csk_compat_getsockopt(struct sock *sk, int level, int optname, |
333 | char __user *optval, int __user *optlen); | 333 | char __user *optval, int __user *optlen); |
334 | extern int inet_csk_compat_setsockopt(struct sock *sk, int level, int optname, | 334 | extern int inet_csk_compat_setsockopt(struct sock *sk, int level, int optname, |
335 | char __user *optval, int optlen); | 335 | char __user *optval, unsigned int optlen); |
336 | #endif /* _INET_CONNECTION_SOCK_H */ | 336 | #endif /* _INET_CONNECTION_SOCK_H */ |
diff --git a/include/net/ip.h b/include/net/ip.h index 5b26a0bd178e..2f47e5482b55 100644 --- a/include/net/ip.h +++ b/include/net/ip.h | |||
@@ -381,10 +381,10 @@ extern int ip_options_rcv_srr(struct sk_buff *skb); | |||
381 | extern void ip_cmsg_recv(struct msghdr *msg, struct sk_buff *skb); | 381 | extern void ip_cmsg_recv(struct msghdr *msg, struct sk_buff *skb); |
382 | extern int ip_cmsg_send(struct net *net, | 382 | extern int ip_cmsg_send(struct net *net, |
383 | struct msghdr *msg, struct ipcm_cookie *ipc); | 383 | struct msghdr *msg, struct ipcm_cookie *ipc); |
384 | extern int ip_setsockopt(struct sock *sk, int level, int optname, char __user *optval, int optlen); | 384 | extern int ip_setsockopt(struct sock *sk, int level, int optname, char __user *optval, unsigned int optlen); |
385 | extern int ip_getsockopt(struct sock *sk, int level, int optname, char __user *optval, int __user *optlen); | 385 | extern int ip_getsockopt(struct sock *sk, int level, int optname, char __user *optval, int __user *optlen); |
386 | extern int compat_ip_setsockopt(struct sock *sk, int level, | 386 | extern int compat_ip_setsockopt(struct sock *sk, int level, |
387 | int optname, char __user *optval, int optlen); | 387 | int optname, char __user *optval, unsigned int optlen); |
388 | extern int compat_ip_getsockopt(struct sock *sk, int level, | 388 | extern int compat_ip_getsockopt(struct sock *sk, int level, |
389 | int optname, char __user *optval, int __user *optlen); | 389 | int optname, char __user *optval, int __user *optlen); |
390 | extern int ip_ra_control(struct sock *sk, unsigned char on, void (*destructor)(struct sock *)); | 390 | extern int ip_ra_control(struct sock *sk, unsigned char on, void (*destructor)(struct sock *)); |
diff --git a/include/net/ipip.h b/include/net/ipip.h index 76e3ea6e2fe5..87acf8f3a155 100644 --- a/include/net/ipip.h +++ b/include/net/ipip.h | |||
@@ -27,18 +27,11 @@ struct ip_tunnel | |||
27 | unsigned int prl_count; /* # of entries in PRL */ | 27 | unsigned int prl_count; /* # of entries in PRL */ |
28 | }; | 28 | }; |
29 | 29 | ||
30 | /* ISATAP: default interval between RS in secondy */ | ||
31 | #define IPTUNNEL_RS_DEFAULT_DELAY (900) | ||
32 | |||
33 | struct ip_tunnel_prl_entry | 30 | struct ip_tunnel_prl_entry |
34 | { | 31 | { |
35 | struct ip_tunnel_prl_entry *next; | 32 | struct ip_tunnel_prl_entry *next; |
36 | __be32 addr; | 33 | __be32 addr; |
37 | u16 flags; | 34 | u16 flags; |
38 | unsigned long rs_delay; | ||
39 | struct timer_list rs_timer; | ||
40 | struct ip_tunnel *tunnel; | ||
41 | spinlock_t lock; | ||
42 | }; | 35 | }; |
43 | 36 | ||
44 | #define IPTUNNEL_XMIT() do { \ | 37 | #define IPTUNNEL_XMIT() do { \ |
diff --git a/include/net/ipv6.h b/include/net/ipv6.h index ad9a51130254..8c31d8a0c1fe 100644 --- a/include/net/ipv6.h +++ b/include/net/ipv6.h | |||
@@ -550,7 +550,7 @@ extern int ipv6_find_tlv(struct sk_buff *skb, int offset, int type); | |||
550 | extern int ipv6_setsockopt(struct sock *sk, int level, | 550 | extern int ipv6_setsockopt(struct sock *sk, int level, |
551 | int optname, | 551 | int optname, |
552 | char __user *optval, | 552 | char __user *optval, |
553 | int optlen); | 553 | unsigned int optlen); |
554 | extern int ipv6_getsockopt(struct sock *sk, int level, | 554 | extern int ipv6_getsockopt(struct sock *sk, int level, |
555 | int optname, | 555 | int optname, |
556 | char __user *optval, | 556 | char __user *optval, |
@@ -559,7 +559,7 @@ extern int compat_ipv6_setsockopt(struct sock *sk, | |||
559 | int level, | 559 | int level, |
560 | int optname, | 560 | int optname, |
561 | char __user *optval, | 561 | char __user *optval, |
562 | int optlen); | 562 | unsigned int optlen); |
563 | extern int compat_ipv6_getsockopt(struct sock *sk, | 563 | extern int compat_ipv6_getsockopt(struct sock *sk, |
564 | int level, | 564 | int level, |
565 | int optname, | 565 | int optname, |
diff --git a/include/net/sctp/structs.h b/include/net/sctp/structs.h index 42d00ced5eb8..6e5f0e0c7967 100644 --- a/include/net/sctp/structs.h +++ b/include/net/sctp/structs.h | |||
@@ -544,7 +544,7 @@ struct sctp_af { | |||
544 | int level, | 544 | int level, |
545 | int optname, | 545 | int optname, |
546 | char __user *optval, | 546 | char __user *optval, |
547 | int optlen); | 547 | unsigned int optlen); |
548 | int (*getsockopt) (struct sock *sk, | 548 | int (*getsockopt) (struct sock *sk, |
549 | int level, | 549 | int level, |
550 | int optname, | 550 | int optname, |
@@ -554,7 +554,7 @@ struct sctp_af { | |||
554 | int level, | 554 | int level, |
555 | int optname, | 555 | int optname, |
556 | char __user *optval, | 556 | char __user *optval, |
557 | int optlen); | 557 | unsigned int optlen); |
558 | int (*compat_getsockopt) (struct sock *sk, | 558 | int (*compat_getsockopt) (struct sock *sk, |
559 | int level, | 559 | int level, |
560 | int optname, | 560 | int optname, |
diff --git a/include/net/sock.h b/include/net/sock.h index 950409dcec3d..1621935aad5b 100644 --- a/include/net/sock.h +++ b/include/net/sock.h | |||
@@ -624,7 +624,7 @@ struct proto { | |||
624 | void (*shutdown)(struct sock *sk, int how); | 624 | void (*shutdown)(struct sock *sk, int how); |
625 | int (*setsockopt)(struct sock *sk, int level, | 625 | int (*setsockopt)(struct sock *sk, int level, |
626 | int optname, char __user *optval, | 626 | int optname, char __user *optval, |
627 | int optlen); | 627 | unsigned int optlen); |
628 | int (*getsockopt)(struct sock *sk, int level, | 628 | int (*getsockopt)(struct sock *sk, int level, |
629 | int optname, char __user *optval, | 629 | int optname, char __user *optval, |
630 | int __user *option); | 630 | int __user *option); |
@@ -632,7 +632,7 @@ struct proto { | |||
632 | int (*compat_setsockopt)(struct sock *sk, | 632 | int (*compat_setsockopt)(struct sock *sk, |
633 | int level, | 633 | int level, |
634 | int optname, char __user *optval, | 634 | int optname, char __user *optval, |
635 | int optlen); | 635 | unsigned int optlen); |
636 | int (*compat_getsockopt)(struct sock *sk, | 636 | int (*compat_getsockopt)(struct sock *sk, |
637 | int level, | 637 | int level, |
638 | int optname, char __user *optval, | 638 | int optname, char __user *optval, |
@@ -951,7 +951,7 @@ extern void sock_rfree(struct sk_buff *skb); | |||
951 | 951 | ||
952 | extern int sock_setsockopt(struct socket *sock, int level, | 952 | extern int sock_setsockopt(struct socket *sock, int level, |
953 | int op, char __user *optval, | 953 | int op, char __user *optval, |
954 | int optlen); | 954 | unsigned int optlen); |
955 | 955 | ||
956 | extern int sock_getsockopt(struct socket *sock, int level, | 956 | extern int sock_getsockopt(struct socket *sock, int level, |
957 | int op, char __user *optval, | 957 | int op, char __user *optval, |
@@ -993,7 +993,7 @@ extern int sock_no_shutdown(struct socket *, int); | |||
993 | extern int sock_no_getsockopt(struct socket *, int , int, | 993 | extern int sock_no_getsockopt(struct socket *, int , int, |
994 | char __user *, int __user *); | 994 | char __user *, int __user *); |
995 | extern int sock_no_setsockopt(struct socket *, int, int, | 995 | extern int sock_no_setsockopt(struct socket *, int, int, |
996 | char __user *, int); | 996 | char __user *, unsigned int); |
997 | extern int sock_no_sendmsg(struct kiocb *, struct socket *, | 997 | extern int sock_no_sendmsg(struct kiocb *, struct socket *, |
998 | struct msghdr *, size_t); | 998 | struct msghdr *, size_t); |
999 | extern int sock_no_recvmsg(struct kiocb *, struct socket *, | 999 | extern int sock_no_recvmsg(struct kiocb *, struct socket *, |
@@ -1015,11 +1015,11 @@ extern int sock_common_getsockopt(struct socket *sock, int level, int optname, | |||
1015 | extern int sock_common_recvmsg(struct kiocb *iocb, struct socket *sock, | 1015 | extern int sock_common_recvmsg(struct kiocb *iocb, struct socket *sock, |
1016 | struct msghdr *msg, size_t size, int flags); | 1016 | struct msghdr *msg, size_t size, int flags); |
1017 | extern int sock_common_setsockopt(struct socket *sock, int level, int optname, | 1017 | extern int sock_common_setsockopt(struct socket *sock, int level, int optname, |
1018 | char __user *optval, int optlen); | 1018 | char __user *optval, unsigned int optlen); |
1019 | extern int compat_sock_common_getsockopt(struct socket *sock, int level, | 1019 | extern int compat_sock_common_getsockopt(struct socket *sock, int level, |
1020 | int optname, char __user *optval, int __user *optlen); | 1020 | int optname, char __user *optval, int __user *optlen); |
1021 | extern int compat_sock_common_setsockopt(struct socket *sock, int level, | 1021 | extern int compat_sock_common_setsockopt(struct socket *sock, int level, |
1022 | int optname, char __user *optval, int optlen); | 1022 | int optname, char __user *optval, unsigned int optlen); |
1023 | 1023 | ||
1024 | extern void sk_common_release(struct sock *sk); | 1024 | extern void sk_common_release(struct sock *sk); |
1025 | 1025 | ||
diff --git a/include/net/tcp.h b/include/net/tcp.h index 56b76027b85e..03a49c703377 100644 --- a/include/net/tcp.h +++ b/include/net/tcp.h | |||
@@ -394,13 +394,13 @@ extern int tcp_getsockopt(struct sock *sk, int level, | |||
394 | int __user *optlen); | 394 | int __user *optlen); |
395 | extern int tcp_setsockopt(struct sock *sk, int level, | 395 | extern int tcp_setsockopt(struct sock *sk, int level, |
396 | int optname, char __user *optval, | 396 | int optname, char __user *optval, |
397 | int optlen); | 397 | unsigned int optlen); |
398 | extern int compat_tcp_getsockopt(struct sock *sk, | 398 | extern int compat_tcp_getsockopt(struct sock *sk, |
399 | int level, int optname, | 399 | int level, int optname, |
400 | char __user *optval, int __user *optlen); | 400 | char __user *optval, int __user *optlen); |
401 | extern int compat_tcp_setsockopt(struct sock *sk, | 401 | extern int compat_tcp_setsockopt(struct sock *sk, |
402 | int level, int optname, | 402 | int level, int optname, |
403 | char __user *optval, int optlen); | 403 | char __user *optval, unsigned int optlen); |
404 | extern void tcp_set_keepalive(struct sock *sk, int val); | 404 | extern void tcp_set_keepalive(struct sock *sk, int val); |
405 | extern int tcp_recvmsg(struct kiocb *iocb, struct sock *sk, | 405 | extern int tcp_recvmsg(struct kiocb *iocb, struct sock *sk, |
406 | struct msghdr *msg, | 406 | struct msghdr *msg, |
diff --git a/include/net/udp.h b/include/net/udp.h index 5fb029f817a3..f98abd2ce709 100644 --- a/include/net/udp.h +++ b/include/net/udp.h | |||
@@ -144,7 +144,7 @@ extern unsigned int udp_poll(struct file *file, struct socket *sock, | |||
144 | extern int udp_lib_getsockopt(struct sock *sk, int level, int optname, | 144 | extern int udp_lib_getsockopt(struct sock *sk, int level, int optname, |
145 | char __user *optval, int __user *optlen); | 145 | char __user *optval, int __user *optlen); |
146 | extern int udp_lib_setsockopt(struct sock *sk, int level, int optname, | 146 | extern int udp_lib_setsockopt(struct sock *sk, int level, int optname, |
147 | char __user *optval, int optlen, | 147 | char __user *optval, unsigned int optlen, |
148 | int (*push_pending_frames)(struct sock *)); | 148 | int (*push_pending_frames)(struct sock *)); |
149 | 149 | ||
150 | extern struct sock *udp4_lib_lookup(struct net *net, __be32 saddr, __be16 sport, | 150 | extern struct sock *udp4_lib_lookup(struct net *net, __be32 saddr, __be16 sport, |
diff --git a/include/net/wext.h b/include/net/wext.h index 6d76a39a9c5b..3f2b94de2cfa 100644 --- a/include/net/wext.h +++ b/include/net/wext.h | |||
@@ -14,6 +14,7 @@ extern int wext_handle_ioctl(struct net *net, struct ifreq *ifr, unsigned int cm | |||
14 | void __user *arg); | 14 | void __user *arg); |
15 | extern int compat_wext_handle_ioctl(struct net *net, unsigned int cmd, | 15 | extern int compat_wext_handle_ioctl(struct net *net, unsigned int cmd, |
16 | unsigned long arg); | 16 | unsigned long arg); |
17 | extern struct iw_statistics *get_wireless_stats(struct net_device *dev); | ||
17 | #else | 18 | #else |
18 | static inline int wext_proc_init(struct net *net) | 19 | static inline int wext_proc_init(struct net *net) |
19 | { | 20 | { |
diff --git a/include/pcmcia/ss.h b/include/pcmcia/ss.h index 9a3b49865173..d696a692d94a 100644 --- a/include/pcmcia/ss.h +++ b/include/pcmcia/ss.h | |||
@@ -279,7 +279,7 @@ extern struct pccard_resource_ops pccard_iodyn_ops; | |||
279 | extern struct pccard_resource_ops pccard_nonstatic_ops; | 279 | extern struct pccard_resource_ops pccard_nonstatic_ops; |
280 | 280 | ||
281 | /* socket drivers are expected to use these callbacks in their .drv struct */ | 281 | /* socket drivers are expected to use these callbacks in their .drv struct */ |
282 | extern int pcmcia_socket_dev_suspend(struct device *dev, pm_message_t state); | 282 | extern int pcmcia_socket_dev_suspend(struct device *dev); |
283 | extern int pcmcia_socket_dev_resume(struct device *dev); | 283 | extern int pcmcia_socket_dev_resume(struct device *dev); |
284 | 284 | ||
285 | /* socket drivers use this callback in their IRQ handler */ | 285 | /* socket drivers use this callback in their IRQ handler */ |
diff --git a/include/scsi/libiscsi.h b/include/scsi/libiscsi.h index 887e57e3e223..a72edd4eceec 100644 --- a/include/scsi/libiscsi.h +++ b/include/scsi/libiscsi.h | |||
@@ -303,6 +303,7 @@ struct iscsi_session { | |||
303 | int cmds_max; /* size of cmds array */ | 303 | int cmds_max; /* size of cmds array */ |
304 | struct iscsi_task **cmds; /* Original Cmds arr */ | 304 | struct iscsi_task **cmds; /* Original Cmds arr */ |
305 | struct iscsi_pool cmdpool; /* PDU's pool */ | 305 | struct iscsi_pool cmdpool; /* PDU's pool */ |
306 | void *dd_data; /* LLD private data */ | ||
306 | }; | 307 | }; |
307 | 308 | ||
308 | enum { | 309 | enum { |
@@ -363,7 +364,7 @@ extern int iscsi_target_alloc(struct scsi_target *starget); | |||
363 | */ | 364 | */ |
364 | extern struct iscsi_cls_session * | 365 | extern struct iscsi_cls_session * |
365 | iscsi_session_setup(struct iscsi_transport *, struct Scsi_Host *shost, | 366 | iscsi_session_setup(struct iscsi_transport *, struct Scsi_Host *shost, |
366 | uint16_t, int, uint32_t, unsigned int); | 367 | uint16_t, int, int, uint32_t, unsigned int); |
367 | extern void iscsi_session_teardown(struct iscsi_cls_session *); | 368 | extern void iscsi_session_teardown(struct iscsi_cls_session *); |
368 | extern void iscsi_session_recovery_timedout(struct iscsi_cls_session *); | 369 | extern void iscsi_session_recovery_timedout(struct iscsi_cls_session *); |
369 | extern int iscsi_set_param(struct iscsi_cls_conn *cls_conn, | 370 | extern int iscsi_set_param(struct iscsi_cls_conn *cls_conn, |
diff --git a/include/scsi/scsi.h b/include/scsi/scsi.h index 084478e14d24..34c46ab5c31b 100644 --- a/include/scsi/scsi.h +++ b/include/scsi/scsi.h | |||
@@ -129,6 +129,9 @@ struct scsi_cmnd; | |||
129 | #define MI_REPORT_TARGET_PGS 0x0a | 129 | #define MI_REPORT_TARGET_PGS 0x0a |
130 | /* values for maintenance out */ | 130 | /* values for maintenance out */ |
131 | #define MO_SET_TARGET_PGS 0x0a | 131 | #define MO_SET_TARGET_PGS 0x0a |
132 | /* values for variable length command */ | ||
133 | #define READ_32 0x09 | ||
134 | #define WRITE_32 0x0b | ||
132 | 135 | ||
133 | /* Values for T10/04-262r7 */ | 136 | /* Values for T10/04-262r7 */ |
134 | #define ATA_16 0x85 /* 16-byte pass-thru */ | 137 | #define ATA_16 0x85 /* 16-byte pass-thru */ |
diff --git a/include/scsi/scsi_cmnd.h b/include/scsi/scsi_cmnd.h index 3878d1dc7f59..a5e885a111df 100644 --- a/include/scsi/scsi_cmnd.h +++ b/include/scsi/scsi_cmnd.h | |||
@@ -229,10 +229,6 @@ enum scsi_prot_operations { | |||
229 | /* OS-HBA: Protected, HBA-Target: Protected */ | 229 | /* OS-HBA: Protected, HBA-Target: Protected */ |
230 | SCSI_PROT_READ_PASS, | 230 | SCSI_PROT_READ_PASS, |
231 | SCSI_PROT_WRITE_PASS, | 231 | SCSI_PROT_WRITE_PASS, |
232 | |||
233 | /* OS-HBA: Protected, HBA-Target: Protected, checksum conversion */ | ||
234 | SCSI_PROT_READ_CONVERT, | ||
235 | SCSI_PROT_WRITE_CONVERT, | ||
236 | }; | 232 | }; |
237 | 233 | ||
238 | static inline void scsi_set_prot_op(struct scsi_cmnd *scmd, unsigned char op) | 234 | static inline void scsi_set_prot_op(struct scsi_cmnd *scmd, unsigned char op) |
diff --git a/include/scsi/scsi_host.h b/include/scsi/scsi_host.h index b62a097b3ecb..6e728b176904 100644 --- a/include/scsi/scsi_host.h +++ b/include/scsi/scsi_host.h | |||
@@ -798,9 +798,15 @@ static inline unsigned int scsi_host_get_prot(struct Scsi_Host *shost) | |||
798 | static inline unsigned int scsi_host_dif_capable(struct Scsi_Host *shost, unsigned int target_type) | 798 | static inline unsigned int scsi_host_dif_capable(struct Scsi_Host *shost, unsigned int target_type) |
799 | { | 799 | { |
800 | switch (target_type) { | 800 | switch (target_type) { |
801 | case 1: return shost->prot_capabilities & SHOST_DIF_TYPE1_PROTECTION; | 801 | case 1: |
802 | case 2: return shost->prot_capabilities & SHOST_DIF_TYPE2_PROTECTION; | 802 | if (shost->prot_capabilities & SHOST_DIF_TYPE1_PROTECTION) |
803 | case 3: return shost->prot_capabilities & SHOST_DIF_TYPE3_PROTECTION; | 803 | return target_type; |
804 | case 2: | ||
805 | if (shost->prot_capabilities & SHOST_DIF_TYPE2_PROTECTION) | ||
806 | return target_type; | ||
807 | case 3: | ||
808 | if (shost->prot_capabilities & SHOST_DIF_TYPE3_PROTECTION) | ||
809 | return target_type; | ||
804 | } | 810 | } |
805 | 811 | ||
806 | return 0; | 812 | return 0; |
@@ -808,13 +814,14 @@ static inline unsigned int scsi_host_dif_capable(struct Scsi_Host *shost, unsign | |||
808 | 814 | ||
809 | static inline unsigned int scsi_host_dix_capable(struct Scsi_Host *shost, unsigned int target_type) | 815 | static inline unsigned int scsi_host_dix_capable(struct Scsi_Host *shost, unsigned int target_type) |
810 | { | 816 | { |
817 | #if defined(CONFIG_BLK_DEV_INTEGRITY) | ||
811 | switch (target_type) { | 818 | switch (target_type) { |
812 | case 0: return shost->prot_capabilities & SHOST_DIX_TYPE0_PROTECTION; | 819 | case 0: return shost->prot_capabilities & SHOST_DIX_TYPE0_PROTECTION; |
813 | case 1: return shost->prot_capabilities & SHOST_DIX_TYPE1_PROTECTION; | 820 | case 1: return shost->prot_capabilities & SHOST_DIX_TYPE1_PROTECTION; |
814 | case 2: return shost->prot_capabilities & SHOST_DIX_TYPE2_PROTECTION; | 821 | case 2: return shost->prot_capabilities & SHOST_DIX_TYPE2_PROTECTION; |
815 | case 3: return shost->prot_capabilities & SHOST_DIX_TYPE3_PROTECTION; | 822 | case 3: return shost->prot_capabilities & SHOST_DIX_TYPE3_PROTECTION; |
816 | } | 823 | } |
817 | 824 | #endif | |
818 | return 0; | 825 | return 0; |
819 | } | 826 | } |
820 | 827 | ||
diff --git a/include/trace/events/block.h b/include/trace/events/block.h index d86af94691c2..00405b5f624a 100644 --- a/include/trace/events/block.h +++ b/include/trace/events/block.h | |||
@@ -488,6 +488,39 @@ TRACE_EVENT(block_remap, | |||
488 | (unsigned long long)__entry->old_sector) | 488 | (unsigned long long)__entry->old_sector) |
489 | ); | 489 | ); |
490 | 490 | ||
491 | TRACE_EVENT(block_rq_remap, | ||
492 | |||
493 | TP_PROTO(struct request_queue *q, struct request *rq, dev_t dev, | ||
494 | sector_t from), | ||
495 | |||
496 | TP_ARGS(q, rq, dev, from), | ||
497 | |||
498 | TP_STRUCT__entry( | ||
499 | __field( dev_t, dev ) | ||
500 | __field( sector_t, sector ) | ||
501 | __field( unsigned int, nr_sector ) | ||
502 | __field( dev_t, old_dev ) | ||
503 | __field( sector_t, old_sector ) | ||
504 | __array( char, rwbs, 6 ) | ||
505 | ), | ||
506 | |||
507 | TP_fast_assign( | ||
508 | __entry->dev = disk_devt(rq->rq_disk); | ||
509 | __entry->sector = blk_rq_pos(rq); | ||
510 | __entry->nr_sector = blk_rq_sectors(rq); | ||
511 | __entry->old_dev = dev; | ||
512 | __entry->old_sector = from; | ||
513 | blk_fill_rwbs_rq(__entry->rwbs, rq); | ||
514 | ), | ||
515 | |||
516 | TP_printk("%d,%d %s %llu + %u <- (%d,%d) %llu", | ||
517 | MAJOR(__entry->dev), MINOR(__entry->dev), __entry->rwbs, | ||
518 | (unsigned long long)__entry->sector, | ||
519 | __entry->nr_sector, | ||
520 | MAJOR(__entry->old_dev), MINOR(__entry->old_dev), | ||
521 | (unsigned long long)__entry->old_sector) | ||
522 | ); | ||
523 | |||
491 | #endif /* _TRACE_BLOCK_H */ | 524 | #endif /* _TRACE_BLOCK_H */ |
492 | 525 | ||
493 | /* This part must be outside protection */ | 526 | /* This part must be outside protection */ |
diff --git a/include/trace/events/ext4.h b/include/trace/events/ext4.h index c1bd8f1e8b94..d09550bf3f95 100644 --- a/include/trace/events/ext4.h +++ b/include/trace/events/ext4.h | |||
@@ -11,6 +11,7 @@ struct ext4_allocation_context; | |||
11 | struct ext4_allocation_request; | 11 | struct ext4_allocation_request; |
12 | struct ext4_prealloc_space; | 12 | struct ext4_prealloc_space; |
13 | struct ext4_inode_info; | 13 | struct ext4_inode_info; |
14 | struct mpage_da_data; | ||
14 | 15 | ||
15 | #define EXT4_I(inode) (container_of(inode, struct ext4_inode_info, vfs_inode)) | 16 | #define EXT4_I(inode) (container_of(inode, struct ext4_inode_info, vfs_inode)) |
16 | 17 | ||
@@ -236,6 +237,7 @@ TRACE_EVENT(ext4_da_writepages, | |||
236 | __field( char, for_kupdate ) | 237 | __field( char, for_kupdate ) |
237 | __field( char, for_reclaim ) | 238 | __field( char, for_reclaim ) |
238 | __field( char, range_cyclic ) | 239 | __field( char, range_cyclic ) |
240 | __field( pgoff_t, writeback_index ) | ||
239 | ), | 241 | ), |
240 | 242 | ||
241 | TP_fast_assign( | 243 | TP_fast_assign( |
@@ -249,15 +251,17 @@ TRACE_EVENT(ext4_da_writepages, | |||
249 | __entry->for_kupdate = wbc->for_kupdate; | 251 | __entry->for_kupdate = wbc->for_kupdate; |
250 | __entry->for_reclaim = wbc->for_reclaim; | 252 | __entry->for_reclaim = wbc->for_reclaim; |
251 | __entry->range_cyclic = wbc->range_cyclic; | 253 | __entry->range_cyclic = wbc->range_cyclic; |
254 | __entry->writeback_index = inode->i_mapping->writeback_index; | ||
252 | ), | 255 | ), |
253 | 256 | ||
254 | TP_printk("dev %s ino %lu nr_to_write %ld pages_skipped %ld range_start %llu range_end %llu nonblocking %d for_kupdate %d for_reclaim %d range_cyclic %d", | 257 | TP_printk("dev %s ino %lu nr_to_write %ld pages_skipped %ld range_start %llu range_end %llu nonblocking %d for_kupdate %d for_reclaim %d range_cyclic %d writeback_index %lu", |
255 | jbd2_dev_to_name(__entry->dev), | 258 | jbd2_dev_to_name(__entry->dev), |
256 | (unsigned long) __entry->ino, __entry->nr_to_write, | 259 | (unsigned long) __entry->ino, __entry->nr_to_write, |
257 | __entry->pages_skipped, __entry->range_start, | 260 | __entry->pages_skipped, __entry->range_start, |
258 | __entry->range_end, __entry->nonblocking, | 261 | __entry->range_end, __entry->nonblocking, |
259 | __entry->for_kupdate, __entry->for_reclaim, | 262 | __entry->for_kupdate, __entry->for_reclaim, |
260 | __entry->range_cyclic) | 263 | __entry->range_cyclic, |
264 | (unsigned long) __entry->writeback_index) | ||
261 | ); | 265 | ); |
262 | 266 | ||
263 | TRACE_EVENT(ext4_da_write_pages, | 267 | TRACE_EVENT(ext4_da_write_pages, |
@@ -309,6 +313,7 @@ TRACE_EVENT(ext4_da_writepages_result, | |||
309 | __field( char, encountered_congestion ) | 313 | __field( char, encountered_congestion ) |
310 | __field( char, more_io ) | 314 | __field( char, more_io ) |
311 | __field( char, no_nrwrite_index_update ) | 315 | __field( char, no_nrwrite_index_update ) |
316 | __field( pgoff_t, writeback_index ) | ||
312 | ), | 317 | ), |
313 | 318 | ||
314 | TP_fast_assign( | 319 | TP_fast_assign( |
@@ -320,14 +325,16 @@ TRACE_EVENT(ext4_da_writepages_result, | |||
320 | __entry->encountered_congestion = wbc->encountered_congestion; | 325 | __entry->encountered_congestion = wbc->encountered_congestion; |
321 | __entry->more_io = wbc->more_io; | 326 | __entry->more_io = wbc->more_io; |
322 | __entry->no_nrwrite_index_update = wbc->no_nrwrite_index_update; | 327 | __entry->no_nrwrite_index_update = wbc->no_nrwrite_index_update; |
328 | __entry->writeback_index = inode->i_mapping->writeback_index; | ||
323 | ), | 329 | ), |
324 | 330 | ||
325 | TP_printk("dev %s ino %lu ret %d pages_written %d pages_skipped %ld congestion %d more_io %d no_nrwrite_index_update %d", | 331 | TP_printk("dev %s ino %lu ret %d pages_written %d pages_skipped %ld congestion %d more_io %d no_nrwrite_index_update %d writeback_index %lu", |
326 | jbd2_dev_to_name(__entry->dev), | 332 | jbd2_dev_to_name(__entry->dev), |
327 | (unsigned long) __entry->ino, __entry->ret, | 333 | (unsigned long) __entry->ino, __entry->ret, |
328 | __entry->pages_written, __entry->pages_skipped, | 334 | __entry->pages_written, __entry->pages_skipped, |
329 | __entry->encountered_congestion, __entry->more_io, | 335 | __entry->encountered_congestion, __entry->more_io, |
330 | __entry->no_nrwrite_index_update) | 336 | __entry->no_nrwrite_index_update, |
337 | (unsigned long) __entry->writeback_index) | ||
331 | ); | 338 | ); |
332 | 339 | ||
333 | TRACE_EVENT(ext4_da_write_begin, | 340 | TRACE_EVENT(ext4_da_write_begin, |
@@ -737,6 +744,169 @@ TRACE_EVENT(ext4_alloc_da_blocks, | |||
737 | __entry->data_blocks, __entry->meta_blocks) | 744 | __entry->data_blocks, __entry->meta_blocks) |
738 | ); | 745 | ); |
739 | 746 | ||
747 | TRACE_EVENT(ext4_mballoc_alloc, | ||
748 | TP_PROTO(struct ext4_allocation_context *ac), | ||
749 | |||
750 | TP_ARGS(ac), | ||
751 | |||
752 | TP_STRUCT__entry( | ||
753 | __field( dev_t, dev ) | ||
754 | __field( ino_t, ino ) | ||
755 | __field( __u16, found ) | ||
756 | __field( __u16, groups ) | ||
757 | __field( __u16, buddy ) | ||
758 | __field( __u16, flags ) | ||
759 | __field( __u16, tail ) | ||
760 | __field( __u8, cr ) | ||
761 | __field( __u32, orig_logical ) | ||
762 | __field( int, orig_start ) | ||
763 | __field( __u32, orig_group ) | ||
764 | __field( int, orig_len ) | ||
765 | __field( __u32, goal_logical ) | ||
766 | __field( int, goal_start ) | ||
767 | __field( __u32, goal_group ) | ||
768 | __field( int, goal_len ) | ||
769 | __field( __u32, result_logical ) | ||
770 | __field( int, result_start ) | ||
771 | __field( __u32, result_group ) | ||
772 | __field( int, result_len ) | ||
773 | ), | ||
774 | |||
775 | TP_fast_assign( | ||
776 | __entry->dev = ac->ac_inode->i_sb->s_dev; | ||
777 | __entry->ino = ac->ac_inode->i_ino; | ||
778 | __entry->found = ac->ac_found; | ||
779 | __entry->flags = ac->ac_flags; | ||
780 | __entry->groups = ac->ac_groups_scanned; | ||
781 | __entry->buddy = ac->ac_buddy; | ||
782 | __entry->tail = ac->ac_tail; | ||
783 | __entry->cr = ac->ac_criteria; | ||
784 | __entry->orig_logical = ac->ac_o_ex.fe_logical; | ||
785 | __entry->orig_start = ac->ac_o_ex.fe_start; | ||
786 | __entry->orig_group = ac->ac_o_ex.fe_group; | ||
787 | __entry->orig_len = ac->ac_o_ex.fe_len; | ||
788 | __entry->goal_logical = ac->ac_g_ex.fe_logical; | ||
789 | __entry->goal_start = ac->ac_g_ex.fe_start; | ||
790 | __entry->goal_group = ac->ac_g_ex.fe_group; | ||
791 | __entry->goal_len = ac->ac_g_ex.fe_len; | ||
792 | __entry->result_logical = ac->ac_f_ex.fe_logical; | ||
793 | __entry->result_start = ac->ac_f_ex.fe_start; | ||
794 | __entry->result_group = ac->ac_f_ex.fe_group; | ||
795 | __entry->result_len = ac->ac_f_ex.fe_len; | ||
796 | ), | ||
797 | |||
798 | TP_printk("dev %s inode %lu orig %u/%d/%u@%u goal %u/%d/%u@%u " | ||
799 | "result %u/%d/%u@%u blks %u grps %u cr %u flags 0x%04x " | ||
800 | "tail %u broken %u", | ||
801 | jbd2_dev_to_name(__entry->dev), (unsigned long) __entry->ino, | ||
802 | __entry->orig_group, __entry->orig_start, | ||
803 | __entry->orig_len, __entry->orig_logical, | ||
804 | __entry->goal_group, __entry->goal_start, | ||
805 | __entry->goal_len, __entry->goal_logical, | ||
806 | __entry->result_group, __entry->result_start, | ||
807 | __entry->result_len, __entry->result_logical, | ||
808 | __entry->found, __entry->groups, __entry->cr, | ||
809 | __entry->flags, __entry->tail, | ||
810 | __entry->buddy ? 1 << __entry->buddy : 0) | ||
811 | ); | ||
812 | |||
813 | TRACE_EVENT(ext4_mballoc_prealloc, | ||
814 | TP_PROTO(struct ext4_allocation_context *ac), | ||
815 | |||
816 | TP_ARGS(ac), | ||
817 | |||
818 | TP_STRUCT__entry( | ||
819 | __field( dev_t, dev ) | ||
820 | __field( ino_t, ino ) | ||
821 | __field( __u32, orig_logical ) | ||
822 | __field( int, orig_start ) | ||
823 | __field( __u32, orig_group ) | ||
824 | __field( int, orig_len ) | ||
825 | __field( __u32, result_logical ) | ||
826 | __field( int, result_start ) | ||
827 | __field( __u32, result_group ) | ||
828 | __field( int, result_len ) | ||
829 | ), | ||
830 | |||
831 | TP_fast_assign( | ||
832 | __entry->dev = ac->ac_inode->i_sb->s_dev; | ||
833 | __entry->ino = ac->ac_inode->i_ino; | ||
834 | __entry->orig_logical = ac->ac_o_ex.fe_logical; | ||
835 | __entry->orig_start = ac->ac_o_ex.fe_start; | ||
836 | __entry->orig_group = ac->ac_o_ex.fe_group; | ||
837 | __entry->orig_len = ac->ac_o_ex.fe_len; | ||
838 | __entry->result_logical = ac->ac_b_ex.fe_logical; | ||
839 | __entry->result_start = ac->ac_b_ex.fe_start; | ||
840 | __entry->result_group = ac->ac_b_ex.fe_group; | ||
841 | __entry->result_len = ac->ac_b_ex.fe_len; | ||
842 | ), | ||
843 | |||
844 | TP_printk("dev %s inode %lu orig %u/%d/%u@%u result %u/%d/%u@%u", | ||
845 | jbd2_dev_to_name(__entry->dev), (unsigned long) __entry->ino, | ||
846 | __entry->orig_group, __entry->orig_start, | ||
847 | __entry->orig_len, __entry->orig_logical, | ||
848 | __entry->result_group, __entry->result_start, | ||
849 | __entry->result_len, __entry->result_logical) | ||
850 | ); | ||
851 | |||
852 | TRACE_EVENT(ext4_mballoc_discard, | ||
853 | TP_PROTO(struct ext4_allocation_context *ac), | ||
854 | |||
855 | TP_ARGS(ac), | ||
856 | |||
857 | TP_STRUCT__entry( | ||
858 | __field( dev_t, dev ) | ||
859 | __field( ino_t, ino ) | ||
860 | __field( __u32, result_logical ) | ||
861 | __field( int, result_start ) | ||
862 | __field( __u32, result_group ) | ||
863 | __field( int, result_len ) | ||
864 | ), | ||
865 | |||
866 | TP_fast_assign( | ||
867 | __entry->dev = ac->ac_inode->i_sb->s_dev; | ||
868 | __entry->ino = ac->ac_inode->i_ino; | ||
869 | __entry->result_logical = ac->ac_b_ex.fe_logical; | ||
870 | __entry->result_start = ac->ac_b_ex.fe_start; | ||
871 | __entry->result_group = ac->ac_b_ex.fe_group; | ||
872 | __entry->result_len = ac->ac_b_ex.fe_len; | ||
873 | ), | ||
874 | |||
875 | TP_printk("dev %s inode %lu extent %u/%d/%u@%u ", | ||
876 | jbd2_dev_to_name(__entry->dev), (unsigned long) __entry->ino, | ||
877 | __entry->result_group, __entry->result_start, | ||
878 | __entry->result_len, __entry->result_logical) | ||
879 | ); | ||
880 | |||
881 | TRACE_EVENT(ext4_mballoc_free, | ||
882 | TP_PROTO(struct ext4_allocation_context *ac), | ||
883 | |||
884 | TP_ARGS(ac), | ||
885 | |||
886 | TP_STRUCT__entry( | ||
887 | __field( dev_t, dev ) | ||
888 | __field( ino_t, ino ) | ||
889 | __field( __u32, result_logical ) | ||
890 | __field( int, result_start ) | ||
891 | __field( __u32, result_group ) | ||
892 | __field( int, result_len ) | ||
893 | ), | ||
894 | |||
895 | TP_fast_assign( | ||
896 | __entry->dev = ac->ac_inode->i_sb->s_dev; | ||
897 | __entry->ino = ac->ac_inode->i_ino; | ||
898 | __entry->result_logical = ac->ac_b_ex.fe_logical; | ||
899 | __entry->result_start = ac->ac_b_ex.fe_start; | ||
900 | __entry->result_group = ac->ac_b_ex.fe_group; | ||
901 | __entry->result_len = ac->ac_b_ex.fe_len; | ||
902 | ), | ||
903 | |||
904 | TP_printk("dev %s inode %lu extent %u/%d/%u@%u ", | ||
905 | jbd2_dev_to_name(__entry->dev), (unsigned long) __entry->ino, | ||
906 | __entry->result_group, __entry->result_start, | ||
907 | __entry->result_len, __entry->result_logical) | ||
908 | ); | ||
909 | |||
740 | #endif /* _TRACE_EXT4_H */ | 910 | #endif /* _TRACE_EXT4_H */ |
741 | 911 | ||
742 | /* This part must be outside protection */ | 912 | /* This part must be outside protection */ |
diff --git a/include/trace/events/jbd2.h b/include/trace/events/jbd2.h index b851f0b4701c..3c60b75adb9e 100644 --- a/include/trace/events/jbd2.h +++ b/include/trace/events/jbd2.h | |||
@@ -7,6 +7,9 @@ | |||
7 | #include <linux/jbd2.h> | 7 | #include <linux/jbd2.h> |
8 | #include <linux/tracepoint.h> | 8 | #include <linux/tracepoint.h> |
9 | 9 | ||
10 | struct transaction_chp_stats_s; | ||
11 | struct transaction_run_stats_s; | ||
12 | |||
10 | TRACE_EVENT(jbd2_checkpoint, | 13 | TRACE_EVENT(jbd2_checkpoint, |
11 | 14 | ||
12 | TP_PROTO(journal_t *journal, int result), | 15 | TP_PROTO(journal_t *journal, int result), |
@@ -162,6 +165,81 @@ TRACE_EVENT(jbd2_submit_inode_data, | |||
162 | jbd2_dev_to_name(__entry->dev), (unsigned long) __entry->ino) | 165 | jbd2_dev_to_name(__entry->dev), (unsigned long) __entry->ino) |
163 | ); | 166 | ); |
164 | 167 | ||
168 | TRACE_EVENT(jbd2_run_stats, | ||
169 | TP_PROTO(dev_t dev, unsigned long tid, | ||
170 | struct transaction_run_stats_s *stats), | ||
171 | |||
172 | TP_ARGS(dev, tid, stats), | ||
173 | |||
174 | TP_STRUCT__entry( | ||
175 | __field( dev_t, dev ) | ||
176 | __field( unsigned long, tid ) | ||
177 | __field( unsigned long, wait ) | ||
178 | __field( unsigned long, running ) | ||
179 | __field( unsigned long, locked ) | ||
180 | __field( unsigned long, flushing ) | ||
181 | __field( unsigned long, logging ) | ||
182 | __field( __u32, handle_count ) | ||
183 | __field( __u32, blocks ) | ||
184 | __field( __u32, blocks_logged ) | ||
185 | ), | ||
186 | |||
187 | TP_fast_assign( | ||
188 | __entry->dev = dev; | ||
189 | __entry->tid = tid; | ||
190 | __entry->wait = stats->rs_wait; | ||
191 | __entry->running = stats->rs_running; | ||
192 | __entry->locked = stats->rs_locked; | ||
193 | __entry->flushing = stats->rs_flushing; | ||
194 | __entry->logging = stats->rs_logging; | ||
195 | __entry->handle_count = stats->rs_handle_count; | ||
196 | __entry->blocks = stats->rs_blocks; | ||
197 | __entry->blocks_logged = stats->rs_blocks_logged; | ||
198 | ), | ||
199 | |||
200 | TP_printk("dev %s tid %lu wait %u running %u locked %u flushing %u " | ||
201 | "logging %u handle_count %u blocks %u blocks_logged %u", | ||
202 | jbd2_dev_to_name(__entry->dev), __entry->tid, | ||
203 | jiffies_to_msecs(__entry->wait), | ||
204 | jiffies_to_msecs(__entry->running), | ||
205 | jiffies_to_msecs(__entry->locked), | ||
206 | jiffies_to_msecs(__entry->flushing), | ||
207 | jiffies_to_msecs(__entry->logging), | ||
208 | __entry->handle_count, __entry->blocks, | ||
209 | __entry->blocks_logged) | ||
210 | ); | ||
211 | |||
212 | TRACE_EVENT(jbd2_checkpoint_stats, | ||
213 | TP_PROTO(dev_t dev, unsigned long tid, | ||
214 | struct transaction_chp_stats_s *stats), | ||
215 | |||
216 | TP_ARGS(dev, tid, stats), | ||
217 | |||
218 | TP_STRUCT__entry( | ||
219 | __field( dev_t, dev ) | ||
220 | __field( unsigned long, tid ) | ||
221 | __field( unsigned long, chp_time ) | ||
222 | __field( __u32, forced_to_close ) | ||
223 | __field( __u32, written ) | ||
224 | __field( __u32, dropped ) | ||
225 | ), | ||
226 | |||
227 | TP_fast_assign( | ||
228 | __entry->dev = dev; | ||
229 | __entry->tid = tid; | ||
230 | __entry->chp_time = stats->cs_chp_time; | ||
231 | __entry->forced_to_close= stats->cs_forced_to_close; | ||
232 | __entry->written = stats->cs_written; | ||
233 | __entry->dropped = stats->cs_dropped; | ||
234 | ), | ||
235 | |||
236 | TP_printk("dev %s tid %lu chp_time %u forced_to_close %u " | ||
237 | "written %u dropped %u", | ||
238 | jbd2_dev_to_name(__entry->dev), __entry->tid, | ||
239 | jiffies_to_msecs(__entry->chp_time), | ||
240 | __entry->forced_to_close, __entry->written, __entry->dropped) | ||
241 | ); | ||
242 | |||
165 | #endif /* _TRACE_JBD2_H */ | 243 | #endif /* _TRACE_JBD2_H */ |
166 | 244 | ||
167 | /* This part must be outside protection */ | 245 | /* This part must be outside protection */ |