summaryrefslogtreecommitdiffstats
path: root/fs/nilfs2
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2016-07-26 18:03:07 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2016-07-26 18:03:07 -0400
commitd05d7f40791ccbb6e543cc5dd6a6aa08fc71d635 (patch)
treedc0039fe490a41a70de10d58fe8e6136db46463a /fs/nilfs2
parent75a442efb1ca613f8d1cc71a32c2c9b0aefae4a5 (diff)
parent17007f3994cdb4643355c73f54f0adad006cf59e (diff)
Merge branch 'for-4.8/core' of git://git.kernel.dk/linux-block
Pull core block updates from Jens Axboe: - the big change is the cleanup from Mike Christie, cleaning up our uses of command types and modified flags. This is what will throw some merge conflicts - regression fix for the above for btrfs, from Vincent - following up to the above, better packing of struct request from Christoph - a 2038 fix for blktrace from Arnd - a few trivial/spelling fixes from Bart Van Assche - a front merge check fix from Damien, which could cause issues on SMR drives - Atari partition fix from Gabriel - convert cfq to highres timers, since jiffies isn't granular enough for some devices these days. From Jan and Jeff - CFQ priority boost fix idle classes, from me - cleanup series from Ming, improving our bio/bvec iteration - a direct issue fix for blk-mq from Omar - fix for plug merging not involving the IO scheduler, like we do for other types of merges. From Tahsin - expose DAX type internally and through sysfs. From Toshi and Yigal * 'for-4.8/core' of git://git.kernel.dk/linux-block: (76 commits) block: Fix front merge check block: do not merge requests without consulting with io scheduler block: Fix spelling in a source code comment block: expose QUEUE_FLAG_DAX in sysfs block: add QUEUE_FLAG_DAX for devices to advertise their DAX support Btrfs: fix comparison in __btrfs_map_block() block: atari: Return early for unsupported sector size Doc: block: Fix a typo in queue-sysfs.txt cfq-iosched: Charge at least 1 jiffie instead of 1 ns cfq-iosched: Fix regression in bonnie++ rewrite performance cfq-iosched: Convert slice_resid from u64 to s64 block: Convert fifo_time from ulong to u64 blktrace: avoid using timespec block/blk-cgroup.c: Declare local symbols static block/bio-integrity.c: Add #include "blk.h" block/partition-generic.c: Remove a set-but-not-used variable block: bio: kill BIO_MAX_SIZE cfq-iosched: temporarily boost queue priority for idle classes block: drbd: avoid to use BIO_MAX_SIZE block: bio: remove BIO_MAX_SECTORS ...
Diffstat (limited to 'fs/nilfs2')
-rw-r--r--fs/nilfs2/btnode.c6
-rw-r--r--fs/nilfs2/btnode.h2
-rw-r--r--fs/nilfs2/btree.c6
-rw-r--r--fs/nilfs2/gcinode.c5
-rw-r--r--fs/nilfs2/mdt.c11
-rw-r--r--fs/nilfs2/segbuf.c18
6 files changed, 27 insertions, 21 deletions
diff --git a/fs/nilfs2/btnode.c b/fs/nilfs2/btnode.c
index 0576033699bc..4cca998ec7a0 100644
--- a/fs/nilfs2/btnode.c
+++ b/fs/nilfs2/btnode.c
@@ -62,7 +62,7 @@ nilfs_btnode_create_block(struct address_space *btnc, __u64 blocknr)
62} 62}
63 63
64int nilfs_btnode_submit_block(struct address_space *btnc, __u64 blocknr, 64int nilfs_btnode_submit_block(struct address_space *btnc, __u64 blocknr,
65 sector_t pblocknr, int mode, 65 sector_t pblocknr, int mode, int mode_flags,
66 struct buffer_head **pbh, sector_t *submit_ptr) 66 struct buffer_head **pbh, sector_t *submit_ptr)
67{ 67{
68 struct buffer_head *bh; 68 struct buffer_head *bh;
@@ -95,7 +95,7 @@ int nilfs_btnode_submit_block(struct address_space *btnc, __u64 blocknr,
95 } 95 }
96 } 96 }
97 97
98 if (mode == READA) { 98 if (mode_flags & REQ_RAHEAD) {
99 if (pblocknr != *submit_ptr + 1 || !trylock_buffer(bh)) { 99 if (pblocknr != *submit_ptr + 1 || !trylock_buffer(bh)) {
100 err = -EBUSY; /* internal code */ 100 err = -EBUSY; /* internal code */
101 brelse(bh); 101 brelse(bh);
@@ -114,7 +114,7 @@ int nilfs_btnode_submit_block(struct address_space *btnc, __u64 blocknr,
114 bh->b_blocknr = pblocknr; /* set block address for read */ 114 bh->b_blocknr = pblocknr; /* set block address for read */
115 bh->b_end_io = end_buffer_read_sync; 115 bh->b_end_io = end_buffer_read_sync;
116 get_bh(bh); 116 get_bh(bh);
117 submit_bh(mode, bh); 117 submit_bh(mode, mode_flags, bh);
118 bh->b_blocknr = blocknr; /* set back to the given block address */ 118 bh->b_blocknr = blocknr; /* set back to the given block address */
119 *submit_ptr = pblocknr; 119 *submit_ptr = pblocknr;
120 err = 0; 120 err = 0;
diff --git a/fs/nilfs2/btnode.h b/fs/nilfs2/btnode.h
index 2cc1b80e18f7..4e8aaa1aeb65 100644
--- a/fs/nilfs2/btnode.h
+++ b/fs/nilfs2/btnode.h
@@ -43,7 +43,7 @@ void nilfs_btnode_cache_clear(struct address_space *);
43struct buffer_head *nilfs_btnode_create_block(struct address_space *btnc, 43struct buffer_head *nilfs_btnode_create_block(struct address_space *btnc,
44 __u64 blocknr); 44 __u64 blocknr);
45int nilfs_btnode_submit_block(struct address_space *, __u64, sector_t, int, 45int nilfs_btnode_submit_block(struct address_space *, __u64, sector_t, int,
46 struct buffer_head **, sector_t *); 46 int, struct buffer_head **, sector_t *);
47void nilfs_btnode_delete(struct buffer_head *); 47void nilfs_btnode_delete(struct buffer_head *);
48int nilfs_btnode_prepare_change_key(struct address_space *, 48int nilfs_btnode_prepare_change_key(struct address_space *,
49 struct nilfs_btnode_chkey_ctxt *); 49 struct nilfs_btnode_chkey_ctxt *);
diff --git a/fs/nilfs2/btree.c b/fs/nilfs2/btree.c
index eccb1c89ccbb..982d1e3df3a5 100644
--- a/fs/nilfs2/btree.c
+++ b/fs/nilfs2/btree.c
@@ -476,7 +476,8 @@ static int __nilfs_btree_get_block(const struct nilfs_bmap *btree, __u64 ptr,
476 sector_t submit_ptr = 0; 476 sector_t submit_ptr = 0;
477 int ret; 477 int ret;
478 478
479 ret = nilfs_btnode_submit_block(btnc, ptr, 0, READ, &bh, &submit_ptr); 479 ret = nilfs_btnode_submit_block(btnc, ptr, 0, REQ_OP_READ, 0, &bh,
480 &submit_ptr);
480 if (ret) { 481 if (ret) {
481 if (ret != -EEXIST) 482 if (ret != -EEXIST)
482 return ret; 483 return ret;
@@ -492,7 +493,8 @@ static int __nilfs_btree_get_block(const struct nilfs_bmap *btree, __u64 ptr,
492 n > 0 && i < ra->ncmax; n--, i++) { 493 n > 0 && i < ra->ncmax; n--, i++) {
493 ptr2 = nilfs_btree_node_get_ptr(ra->node, i, ra->ncmax); 494 ptr2 = nilfs_btree_node_get_ptr(ra->node, i, ra->ncmax);
494 495
495 ret = nilfs_btnode_submit_block(btnc, ptr2, 0, READA, 496 ret = nilfs_btnode_submit_block(btnc, ptr2, 0,
497 REQ_OP_READ, REQ_RAHEAD,
496 &ra_bh, &submit_ptr); 498 &ra_bh, &submit_ptr);
497 if (likely(!ret || ret == -EEXIST)) 499 if (likely(!ret || ret == -EEXIST))
498 brelse(ra_bh); 500 brelse(ra_bh);
diff --git a/fs/nilfs2/gcinode.c b/fs/nilfs2/gcinode.c
index 693aded72498..e9148f94d696 100644
--- a/fs/nilfs2/gcinode.c
+++ b/fs/nilfs2/gcinode.c
@@ -101,7 +101,7 @@ int nilfs_gccache_submit_read_data(struct inode *inode, sector_t blkoff,
101 bh->b_blocknr = pbn; 101 bh->b_blocknr = pbn;
102 bh->b_end_io = end_buffer_read_sync; 102 bh->b_end_io = end_buffer_read_sync;
103 get_bh(bh); 103 get_bh(bh);
104 submit_bh(READ, bh); 104 submit_bh(REQ_OP_READ, 0, bh);
105 if (vbn) 105 if (vbn)
106 bh->b_blocknr = vbn; 106 bh->b_blocknr = vbn;
107 out: 107 out:
@@ -138,7 +138,8 @@ int nilfs_gccache_submit_read_node(struct inode *inode, sector_t pbn,
138 int ret; 138 int ret;
139 139
140 ret = nilfs_btnode_submit_block(&NILFS_I(inode)->i_btnode_cache, 140 ret = nilfs_btnode_submit_block(&NILFS_I(inode)->i_btnode_cache,
141 vbn ? : pbn, pbn, READ, out_bh, &pbn); 141 vbn ? : pbn, pbn, REQ_OP_READ, 0,
142 out_bh, &pbn);
142 if (ret == -EEXIST) /* internal code (cache hit) */ 143 if (ret == -EEXIST) /* internal code (cache hit) */
143 ret = 0; 144 ret = 0;
144 return ret; 145 return ret;
diff --git a/fs/nilfs2/mdt.c b/fs/nilfs2/mdt.c
index 3417d859a03c..0d7b71fbeff8 100644
--- a/fs/nilfs2/mdt.c
+++ b/fs/nilfs2/mdt.c
@@ -121,7 +121,7 @@ static int nilfs_mdt_create_block(struct inode *inode, unsigned long block,
121 121
122static int 122static int
123nilfs_mdt_submit_block(struct inode *inode, unsigned long blkoff, 123nilfs_mdt_submit_block(struct inode *inode, unsigned long blkoff,
124 int mode, struct buffer_head **out_bh) 124 int mode, int mode_flags, struct buffer_head **out_bh)
125{ 125{
126 struct buffer_head *bh; 126 struct buffer_head *bh;
127 __u64 blknum = 0; 127 __u64 blknum = 0;
@@ -135,7 +135,7 @@ nilfs_mdt_submit_block(struct inode *inode, unsigned long blkoff,
135 if (buffer_uptodate(bh)) 135 if (buffer_uptodate(bh))
136 goto out; 136 goto out;
137 137
138 if (mode == READA) { 138 if (mode_flags & REQ_RAHEAD) {
139 if (!trylock_buffer(bh)) { 139 if (!trylock_buffer(bh)) {
140 ret = -EBUSY; 140 ret = -EBUSY;
141 goto failed_bh; 141 goto failed_bh;
@@ -157,7 +157,7 @@ nilfs_mdt_submit_block(struct inode *inode, unsigned long blkoff,
157 157
158 bh->b_end_io = end_buffer_read_sync; 158 bh->b_end_io = end_buffer_read_sync;
159 get_bh(bh); 159 get_bh(bh);
160 submit_bh(mode, bh); 160 submit_bh(mode, mode_flags, bh);
161 ret = 0; 161 ret = 0;
162 162
163 trace_nilfs2_mdt_submit_block(inode, inode->i_ino, blkoff, mode); 163 trace_nilfs2_mdt_submit_block(inode, inode->i_ino, blkoff, mode);
@@ -181,7 +181,7 @@ static int nilfs_mdt_read_block(struct inode *inode, unsigned long block,
181 int i, nr_ra_blocks = NILFS_MDT_MAX_RA_BLOCKS; 181 int i, nr_ra_blocks = NILFS_MDT_MAX_RA_BLOCKS;
182 int err; 182 int err;
183 183
184 err = nilfs_mdt_submit_block(inode, block, READ, &first_bh); 184 err = nilfs_mdt_submit_block(inode, block, REQ_OP_READ, 0, &first_bh);
185 if (err == -EEXIST) /* internal code */ 185 if (err == -EEXIST) /* internal code */
186 goto out; 186 goto out;
187 187
@@ -191,7 +191,8 @@ static int nilfs_mdt_read_block(struct inode *inode, unsigned long block,
191 if (readahead) { 191 if (readahead) {
192 blkoff = block + 1; 192 blkoff = block + 1;
193 for (i = 0; i < nr_ra_blocks; i++, blkoff++) { 193 for (i = 0; i < nr_ra_blocks; i++, blkoff++) {
194 err = nilfs_mdt_submit_block(inode, blkoff, READA, &bh); 194 err = nilfs_mdt_submit_block(inode, blkoff, REQ_OP_READ,
195 REQ_RAHEAD, &bh);
195 if (likely(!err || err == -EEXIST)) 196 if (likely(!err || err == -EEXIST))
196 brelse(bh); 197 brelse(bh);
197 else if (err != -EBUSY) 198 else if (err != -EBUSY)
diff --git a/fs/nilfs2/segbuf.c b/fs/nilfs2/segbuf.c
index bf36df10540b..a962d7d83447 100644
--- a/fs/nilfs2/segbuf.c
+++ b/fs/nilfs2/segbuf.c
@@ -346,7 +346,8 @@ static void nilfs_end_bio_write(struct bio *bio)
346} 346}
347 347
348static int nilfs_segbuf_submit_bio(struct nilfs_segment_buffer *segbuf, 348static int nilfs_segbuf_submit_bio(struct nilfs_segment_buffer *segbuf,
349 struct nilfs_write_info *wi, int mode) 349 struct nilfs_write_info *wi, int mode,
350 int mode_flags)
350{ 351{
351 struct bio *bio = wi->bio; 352 struct bio *bio = wi->bio;
352 int err; 353 int err;
@@ -364,7 +365,8 @@ static int nilfs_segbuf_submit_bio(struct nilfs_segment_buffer *segbuf,
364 365
365 bio->bi_end_io = nilfs_end_bio_write; 366 bio->bi_end_io = nilfs_end_bio_write;
366 bio->bi_private = segbuf; 367 bio->bi_private = segbuf;
367 submit_bio(mode, bio); 368 bio_set_op_attrs(bio, mode, mode_flags);
369 submit_bio(bio);
368 segbuf->sb_nbio++; 370 segbuf->sb_nbio++;
369 371
370 wi->bio = NULL; 372 wi->bio = NULL;
@@ -437,7 +439,7 @@ static int nilfs_segbuf_submit_bh(struct nilfs_segment_buffer *segbuf,
437 return 0; 439 return 0;
438 } 440 }
439 /* bio is FULL */ 441 /* bio is FULL */
440 err = nilfs_segbuf_submit_bio(segbuf, wi, mode); 442 err = nilfs_segbuf_submit_bio(segbuf, wi, mode, 0);
441 /* never submit current bh */ 443 /* never submit current bh */
442 if (likely(!err)) 444 if (likely(!err))
443 goto repeat; 445 goto repeat;
@@ -461,19 +463,19 @@ static int nilfs_segbuf_write(struct nilfs_segment_buffer *segbuf,
461{ 463{
462 struct nilfs_write_info wi; 464 struct nilfs_write_info wi;
463 struct buffer_head *bh; 465 struct buffer_head *bh;
464 int res = 0, rw = WRITE; 466 int res = 0;
465 467
466 wi.nilfs = nilfs; 468 wi.nilfs = nilfs;
467 nilfs_segbuf_prepare_write(segbuf, &wi); 469 nilfs_segbuf_prepare_write(segbuf, &wi);
468 470
469 list_for_each_entry(bh, &segbuf->sb_segsum_buffers, b_assoc_buffers) { 471 list_for_each_entry(bh, &segbuf->sb_segsum_buffers, b_assoc_buffers) {
470 res = nilfs_segbuf_submit_bh(segbuf, &wi, bh, rw); 472 res = nilfs_segbuf_submit_bh(segbuf, &wi, bh, REQ_OP_WRITE);
471 if (unlikely(res)) 473 if (unlikely(res))
472 goto failed_bio; 474 goto failed_bio;
473 } 475 }
474 476
475 list_for_each_entry(bh, &segbuf->sb_payload_buffers, b_assoc_buffers) { 477 list_for_each_entry(bh, &segbuf->sb_payload_buffers, b_assoc_buffers) {
476 res = nilfs_segbuf_submit_bh(segbuf, &wi, bh, rw); 478 res = nilfs_segbuf_submit_bh(segbuf, &wi, bh, REQ_OP_WRITE);
477 if (unlikely(res)) 479 if (unlikely(res))
478 goto failed_bio; 480 goto failed_bio;
479 } 481 }
@@ -483,8 +485,8 @@ static int nilfs_segbuf_write(struct nilfs_segment_buffer *segbuf,
483 * Last BIO is always sent through the following 485 * Last BIO is always sent through the following
484 * submission. 486 * submission.
485 */ 487 */
486 rw |= REQ_SYNC; 488 res = nilfs_segbuf_submit_bio(segbuf, &wi, REQ_OP_WRITE,
487 res = nilfs_segbuf_submit_bio(segbuf, &wi, rw); 489 REQ_SYNC);
488 } 490 }
489 491
490 failed_bio: 492 failed_bio: