diff options
| author | Jens Axboe <axboe@fb.com> | 2014-09-11 11:31:18 -0400 |
|---|---|---|
| committer | Jens Axboe <axboe@fb.com> | 2014-09-11 11:31:18 -0400 |
| commit | b207892b061da7608878e273ae22ba9bf9be264b (patch) | |
| tree | 51daa46b89b83cad422941f52110b19571b85b79 /include/linux | |
| parent | 018a17bdc8658ad448497c84d4ba21b6985820ec (diff) | |
| parent | a516440542afcb9647f88d12c35640baf02d07ea (diff) | |
Merge branch 'for-linus' into for-3.18/core
A bit of churn on the for-linus side that would be nice to have
in the core bits for 3.18, so pull it in to catch us up and make
forward progress easier.
Signed-off-by: Jens Axboe <axboe@fb.com>
Conflicts:
block/scsi_ioctl.c
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/blk-mq.h | 7 | ||||
| -rw-r--r-- | include/linux/jbd2.h | 30 | ||||
| -rw-r--r-- | include/linux/platform_data/mtd-nand-omap2.h | 13 | ||||
| -rw-r--r-- | include/linux/seqno-fence.h | 1 | ||||
| -rw-r--r-- | include/linux/spi/spi.h | 7 |
5 files changed, 47 insertions, 11 deletions
diff --git a/include/linux/blk-mq.h b/include/linux/blk-mq.h index eb726b9c5762..a1e31f274fcd 100644 --- a/include/linux/blk-mq.h +++ b/include/linux/blk-mq.h | |||
| @@ -127,10 +127,9 @@ enum { | |||
| 127 | BLK_MQ_RQ_QUEUE_ERROR = 2, /* end IO with error */ | 127 | BLK_MQ_RQ_QUEUE_ERROR = 2, /* end IO with error */ |
| 128 | 128 | ||
| 129 | BLK_MQ_F_SHOULD_MERGE = 1 << 0, | 129 | BLK_MQ_F_SHOULD_MERGE = 1 << 0, |
| 130 | BLK_MQ_F_SHOULD_SORT = 1 << 1, | 130 | BLK_MQ_F_TAG_SHARED = 1 << 1, |
| 131 | BLK_MQ_F_TAG_SHARED = 1 << 2, | 131 | BLK_MQ_F_SG_MERGE = 1 << 2, |
| 132 | BLK_MQ_F_SG_MERGE = 1 << 3, | 132 | BLK_MQ_F_SYSFS_UP = 1 << 3, |
| 133 | BLK_MQ_F_SYSFS_UP = 1 << 4, | ||
| 134 | 133 | ||
| 135 | BLK_MQ_S_STOPPED = 0, | 134 | BLK_MQ_S_STOPPED = 0, |
| 136 | BLK_MQ_S_TAG_ACTIVE = 1, | 135 | BLK_MQ_S_TAG_ACTIVE = 1, |
diff --git a/include/linux/jbd2.h b/include/linux/jbd2.h index d5b50a19463c..0dae71e9971c 100644 --- a/include/linux/jbd2.h +++ b/include/linux/jbd2.h | |||
| @@ -159,7 +159,11 @@ typedef struct journal_header_s | |||
| 159 | * journal_block_tag (in the descriptor). The other h_chksum* fields are | 159 | * journal_block_tag (in the descriptor). The other h_chksum* fields are |
| 160 | * not used. | 160 | * not used. |
| 161 | * | 161 | * |
| 162 | * Checksum v1 and v2 are mutually exclusive features. | 162 | * If FEATURE_INCOMPAT_CSUM_V3 is set, the descriptor block uses |
| 163 | * journal_block_tag3_t to store a full 32-bit checksum. Everything else | ||
| 164 | * is the same as v2. | ||
| 165 | * | ||
| 166 | * Checksum v1, v2, and v3 are mutually exclusive features. | ||
| 163 | */ | 167 | */ |
| 164 | struct commit_header { | 168 | struct commit_header { |
| 165 | __be32 h_magic; | 169 | __be32 h_magic; |
| @@ -179,6 +183,14 @@ struct commit_header { | |||
| 179 | * raw struct shouldn't be used for pointer math or sizeof() - use | 183 | * raw struct shouldn't be used for pointer math or sizeof() - use |
| 180 | * journal_tag_bytes(journal) instead to compute this. | 184 | * journal_tag_bytes(journal) instead to compute this. |
| 181 | */ | 185 | */ |
| 186 | typedef struct journal_block_tag3_s | ||
| 187 | { | ||
| 188 | __be32 t_blocknr; /* The on-disk block number */ | ||
| 189 | __be32 t_flags; /* See below */ | ||
| 190 | __be32 t_blocknr_high; /* most-significant high 32bits. */ | ||
| 191 | __be32 t_checksum; /* crc32c(uuid+seq+block) */ | ||
| 192 | } journal_block_tag3_t; | ||
| 193 | |||
| 182 | typedef struct journal_block_tag_s | 194 | typedef struct journal_block_tag_s |
| 183 | { | 195 | { |
| 184 | __be32 t_blocknr; /* The on-disk block number */ | 196 | __be32 t_blocknr; /* The on-disk block number */ |
| @@ -187,9 +199,6 @@ typedef struct journal_block_tag_s | |||
| 187 | __be32 t_blocknr_high; /* most-significant high 32bits. */ | 199 | __be32 t_blocknr_high; /* most-significant high 32bits. */ |
| 188 | } journal_block_tag_t; | 200 | } journal_block_tag_t; |
| 189 | 201 | ||
| 190 | #define JBD2_TAG_SIZE32 (offsetof(journal_block_tag_t, t_blocknr_high)) | ||
| 191 | #define JBD2_TAG_SIZE64 (sizeof(journal_block_tag_t)) | ||
| 192 | |||
| 193 | /* Tail of descriptor block, for checksumming */ | 202 | /* Tail of descriptor block, for checksumming */ |
| 194 | struct jbd2_journal_block_tail { | 203 | struct jbd2_journal_block_tail { |
| 195 | __be32 t_checksum; /* crc32c(uuid+descr_block) */ | 204 | __be32 t_checksum; /* crc32c(uuid+descr_block) */ |
| @@ -284,6 +293,7 @@ typedef struct journal_superblock_s | |||
| 284 | #define JBD2_FEATURE_INCOMPAT_64BIT 0x00000002 | 293 | #define JBD2_FEATURE_INCOMPAT_64BIT 0x00000002 |
| 285 | #define JBD2_FEATURE_INCOMPAT_ASYNC_COMMIT 0x00000004 | 294 | #define JBD2_FEATURE_INCOMPAT_ASYNC_COMMIT 0x00000004 |
| 286 | #define JBD2_FEATURE_INCOMPAT_CSUM_V2 0x00000008 | 295 | #define JBD2_FEATURE_INCOMPAT_CSUM_V2 0x00000008 |
| 296 | #define JBD2_FEATURE_INCOMPAT_CSUM_V3 0x00000010 | ||
| 287 | 297 | ||
| 288 | /* Features known to this kernel version: */ | 298 | /* Features known to this kernel version: */ |
| 289 | #define JBD2_KNOWN_COMPAT_FEATURES JBD2_FEATURE_COMPAT_CHECKSUM | 299 | #define JBD2_KNOWN_COMPAT_FEATURES JBD2_FEATURE_COMPAT_CHECKSUM |
| @@ -291,7 +301,8 @@ typedef struct journal_superblock_s | |||
| 291 | #define JBD2_KNOWN_INCOMPAT_FEATURES (JBD2_FEATURE_INCOMPAT_REVOKE | \ | 301 | #define JBD2_KNOWN_INCOMPAT_FEATURES (JBD2_FEATURE_INCOMPAT_REVOKE | \ |
| 292 | JBD2_FEATURE_INCOMPAT_64BIT | \ | 302 | JBD2_FEATURE_INCOMPAT_64BIT | \ |
| 293 | JBD2_FEATURE_INCOMPAT_ASYNC_COMMIT | \ | 303 | JBD2_FEATURE_INCOMPAT_ASYNC_COMMIT | \ |
| 294 | JBD2_FEATURE_INCOMPAT_CSUM_V2) | 304 | JBD2_FEATURE_INCOMPAT_CSUM_V2 | \ |
| 305 | JBD2_FEATURE_INCOMPAT_CSUM_V3) | ||
| 295 | 306 | ||
| 296 | #ifdef __KERNEL__ | 307 | #ifdef __KERNEL__ |
| 297 | 308 | ||
| @@ -1296,6 +1307,15 @@ static inline int tid_geq(tid_t x, tid_t y) | |||
| 1296 | extern int jbd2_journal_blocks_per_page(struct inode *inode); | 1307 | extern int jbd2_journal_blocks_per_page(struct inode *inode); |
| 1297 | extern size_t journal_tag_bytes(journal_t *journal); | 1308 | extern size_t journal_tag_bytes(journal_t *journal); |
| 1298 | 1309 | ||
| 1310 | static inline int jbd2_journal_has_csum_v2or3(journal_t *journal) | ||
| 1311 | { | ||
| 1312 | if (JBD2_HAS_INCOMPAT_FEATURE(journal, JBD2_FEATURE_INCOMPAT_CSUM_V2) || | ||
| 1313 | JBD2_HAS_INCOMPAT_FEATURE(journal, JBD2_FEATURE_INCOMPAT_CSUM_V3)) | ||
| 1314 | return 1; | ||
| 1315 | |||
| 1316 | return 0; | ||
| 1317 | } | ||
| 1318 | |||
| 1299 | /* | 1319 | /* |
| 1300 | * We reserve t_outstanding_credits >> JBD2_CONTROL_BLOCKS_SHIFT for | 1320 | * We reserve t_outstanding_credits >> JBD2_CONTROL_BLOCKS_SHIFT for |
| 1301 | * transaction control blocks. | 1321 | * transaction control blocks. |
diff --git a/include/linux/platform_data/mtd-nand-omap2.h b/include/linux/platform_data/mtd-nand-omap2.h index 660c029d694f..16ec262dfcc8 100644 --- a/include/linux/platform_data/mtd-nand-omap2.h +++ b/include/linux/platform_data/mtd-nand-omap2.h | |||
| @@ -21,8 +21,17 @@ enum nand_io { | |||
| 21 | }; | 21 | }; |
| 22 | 22 | ||
| 23 | enum omap_ecc { | 23 | enum omap_ecc { |
| 24 | /* 1-bit ECC calculation by GPMC, Error detection by Software */ | 24 | /* |
| 25 | OMAP_ECC_HAM1_CODE_HW = 0, | 25 | * 1-bit ECC: calculation and correction by SW |
| 26 | * ECC stored at end of spare area | ||
| 27 | */ | ||
| 28 | OMAP_ECC_HAM1_CODE_SW = 0, | ||
| 29 | |||
| 30 | /* | ||
| 31 | * 1-bit ECC: calculation by GPMC, Error detection by Software | ||
| 32 | * ECC layout compatible with ROM code layout | ||
| 33 | */ | ||
| 34 | OMAP_ECC_HAM1_CODE_HW, | ||
| 26 | /* 4-bit ECC calculation by GPMC, Error detection by Software */ | 35 | /* 4-bit ECC calculation by GPMC, Error detection by Software */ |
| 27 | OMAP_ECC_BCH4_CODE_HW_DETECTION_SW, | 36 | OMAP_ECC_BCH4_CODE_HW_DETECTION_SW, |
| 28 | /* 4-bit ECC calculation by GPMC, Error detection by ELM */ | 37 | /* 4-bit ECC calculation by GPMC, Error detection by ELM */ |
diff --git a/include/linux/seqno-fence.h b/include/linux/seqno-fence.h index 3d6003de4b0d..a1ba6a5ccdd6 100644 --- a/include/linux/seqno-fence.h +++ b/include/linux/seqno-fence.h | |||
| @@ -62,6 +62,7 @@ to_seqno_fence(struct fence *fence) | |||
| 62 | * @context: the execution context this fence is a part of | 62 | * @context: the execution context this fence is a part of |
| 63 | * @seqno_ofs: the offset within @sync_buf | 63 | * @seqno_ofs: the offset within @sync_buf |
| 64 | * @seqno: the sequence # to signal on | 64 | * @seqno: the sequence # to signal on |
| 65 | * @cond: fence wait condition | ||
| 65 | * @ops: the fence_ops for operations on this seqno fence | 66 | * @ops: the fence_ops for operations on this seqno fence |
| 66 | * | 67 | * |
| 67 | * This function initializes a struct seqno_fence with passed parameters, | 68 | * This function initializes a struct seqno_fence with passed parameters, |
diff --git a/include/linux/spi/spi.h b/include/linux/spi/spi.h index e713543336f1..46d188a9947c 100644 --- a/include/linux/spi/spi.h +++ b/include/linux/spi/spi.h | |||
| @@ -253,6 +253,7 @@ static inline void spi_unregister_driver(struct spi_driver *sdrv) | |||
| 253 | * the device whose settings are being modified. | 253 | * the device whose settings are being modified. |
| 254 | * @transfer: adds a message to the controller's transfer queue. | 254 | * @transfer: adds a message to the controller's transfer queue. |
| 255 | * @cleanup: frees controller-specific state | 255 | * @cleanup: frees controller-specific state |
| 256 | * @can_dma: determine whether this master supports DMA | ||
| 256 | * @queued: whether this master is providing an internal message queue | 257 | * @queued: whether this master is providing an internal message queue |
| 257 | * @kworker: thread struct for message pump | 258 | * @kworker: thread struct for message pump |
| 258 | * @kworker_task: pointer to task for message pump kworker thread | 259 | * @kworker_task: pointer to task for message pump kworker thread |
| @@ -262,6 +263,7 @@ static inline void spi_unregister_driver(struct spi_driver *sdrv) | |||
| 262 | * @cur_msg: the currently in-flight message | 263 | * @cur_msg: the currently in-flight message |
| 263 | * @cur_msg_prepared: spi_prepare_message was called for the currently | 264 | * @cur_msg_prepared: spi_prepare_message was called for the currently |
| 264 | * in-flight message | 265 | * in-flight message |
| 266 | * @cur_msg_mapped: message has been mapped for DMA | ||
| 265 | * @xfer_completion: used by core transfer_one_message() | 267 | * @xfer_completion: used by core transfer_one_message() |
| 266 | * @busy: message pump is busy | 268 | * @busy: message pump is busy |
| 267 | * @running: message pump is running | 269 | * @running: message pump is running |
| @@ -299,6 +301,10 @@ static inline void spi_unregister_driver(struct spi_driver *sdrv) | |||
| 299 | * @cs_gpios: Array of GPIOs to use as chip select lines; one per CS | 301 | * @cs_gpios: Array of GPIOs to use as chip select lines; one per CS |
| 300 | * number. Any individual value may be -ENOENT for CS lines that | 302 | * number. Any individual value may be -ENOENT for CS lines that |
| 301 | * are not GPIOs (driven by the SPI controller itself). | 303 | * are not GPIOs (driven by the SPI controller itself). |
| 304 | * @dma_tx: DMA transmit channel | ||
| 305 | * @dma_rx: DMA receive channel | ||
| 306 | * @dummy_rx: dummy receive buffer for full-duplex devices | ||
| 307 | * @dummy_tx: dummy transmit buffer for full-duplex devices | ||
| 302 | * | 308 | * |
| 303 | * Each SPI master controller can communicate with one or more @spi_device | 309 | * Each SPI master controller can communicate with one or more @spi_device |
| 304 | * children. These make a small bus, sharing MOSI, MISO and SCK signals | 310 | * children. These make a small bus, sharing MOSI, MISO and SCK signals |
| @@ -632,6 +638,7 @@ struct spi_transfer { | |||
| 632 | * addresses for each transfer buffer | 638 | * addresses for each transfer buffer |
| 633 | * @complete: called to report transaction completions | 639 | * @complete: called to report transaction completions |
| 634 | * @context: the argument to complete() when it's called | 640 | * @context: the argument to complete() when it's called |
| 641 | * @frame_length: the total number of bytes in the message | ||
| 635 | * @actual_length: the total number of bytes that were transferred in all | 642 | * @actual_length: the total number of bytes that were transferred in all |
| 636 | * successful segments | 643 | * successful segments |
| 637 | * @status: zero for success, else negative errno | 644 | * @status: zero for success, else negative errno |
