aboutsummaryrefslogtreecommitdiffstats
path: root/fs/gfs2
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2019-03-08 17:12:17 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2019-03-08 17:12:17 -0500
commit80201fe175cbf7f3e372f53eba0a881a702ad926 (patch)
tree8026c68d52763614268a9c3c80759ad386bd5967 /fs/gfs2
parent4221b807d1f73c03d22543416d303b60a5d1ef31 (diff)
parentaaeee62c841cc1e48231e1d60c304d2da9c4e41c (diff)
Merge tag 'for-5.1/block-20190302' of git://git.kernel.dk/linux-block
Pull block layer updates from Jens Axboe: "Not a huge amount of changes in this round, the biggest one is that we finally have Mings multi-page bvec support merged. Apart from that, this pull request contains: - Small series that avoids quiescing the queue for sysfs changes that match what we currently have (Aleksei) - Series of bcache fixes (via Coly) - Series of lightnvm fixes (via Mathias) - NVMe pull request from Christoph. Nothing major, just SPDX/license cleanups, RR mp policy (Hannes), and little fixes (Bart, Chaitanya). - BFQ series (Paolo) - Save blk-mq cpu -> hw queue mapping, removing a pointer indirection for the fast path (Jianchao) - fops->iopoll() added for async IO polling, this is a feature that the upcoming io_uring interface will use (Christoph, me) - Partition scan loop fixes (Dongli) - mtip32xx conversion from managed resource API (Christoph) - cdrom registration race fix (Guenter) - MD pull from Song, two minor fixes. - Various documentation fixes (Marcos) - Multi-page bvec feature. This brings a lot of nice improvements with it, like more efficient splitting, larger IOs can be supported without growing the bvec table size, and so on. (Ming) - Various little fixes to core and drivers" * tag 'for-5.1/block-20190302' of git://git.kernel.dk/linux-block: (117 commits) block: fix updating bio's front segment size block: Replace function name in string with __func__ nbd: propagate genlmsg_reply return code floppy: remove set but not used variable 'q' null_blk: fix checking for REQ_FUA block: fix NULL pointer dereference in register_disk fs: fix guard_bio_eod to check for real EOD errors blk-mq: use HCTX_TYPE_DEFAULT but not 0 to index blk_mq_tag_set->map block: optimize bvec iteration in bvec_iter_advance block: introduce mp_bvec_for_each_page() for iterating over page block: optimize blk_bio_segment_split for single-page bvec block: optimize __blk_segment_map_sg() for single-page bvec block: introduce bvec_nth_page() iomap: wire up the iopoll method block: add bio_set_polled() helper block: wire up block device iopoll method fs: add an iopoll method to struct file_operations loop: set GENHD_FL_NO_PART_SCAN after blkdev_reread_part() loop: do not print warn message if partition scan is successful block: bounce: make sure that bvec table is updated ...
Diffstat (limited to 'fs/gfs2')
-rw-r--r--fs/gfs2/file.c2
-rw-r--r--fs/gfs2/lops.c6
-rw-r--r--fs/gfs2/meta_io.c3
3 files changed, 8 insertions, 3 deletions
diff --git a/fs/gfs2/file.c b/fs/gfs2/file.c
index a2dea5bc0427..58a768e59712 100644
--- a/fs/gfs2/file.c
+++ b/fs/gfs2/file.c
@@ -1280,6 +1280,7 @@ const struct file_operations gfs2_file_fops = {
1280 .llseek = gfs2_llseek, 1280 .llseek = gfs2_llseek,
1281 .read_iter = gfs2_file_read_iter, 1281 .read_iter = gfs2_file_read_iter,
1282 .write_iter = gfs2_file_write_iter, 1282 .write_iter = gfs2_file_write_iter,
1283 .iopoll = iomap_dio_iopoll,
1283 .unlocked_ioctl = gfs2_ioctl, 1284 .unlocked_ioctl = gfs2_ioctl,
1284 .mmap = gfs2_mmap, 1285 .mmap = gfs2_mmap,
1285 .open = gfs2_open, 1286 .open = gfs2_open,
@@ -1310,6 +1311,7 @@ const struct file_operations gfs2_file_fops_nolock = {
1310 .llseek = gfs2_llseek, 1311 .llseek = gfs2_llseek,
1311 .read_iter = gfs2_file_read_iter, 1312 .read_iter = gfs2_file_read_iter,
1312 .write_iter = gfs2_file_write_iter, 1313 .write_iter = gfs2_file_write_iter,
1314 .iopoll = iomap_dio_iopoll,
1313 .unlocked_ioctl = gfs2_ioctl, 1315 .unlocked_ioctl = gfs2_ioctl,
1314 .mmap = gfs2_mmap, 1316 .mmap = gfs2_mmap,
1315 .open = gfs2_open, 1317 .open = gfs2_open,
diff --git a/fs/gfs2/lops.c b/fs/gfs2/lops.c
index 2295042bc625..8722c60b11fe 100644
--- a/fs/gfs2/lops.c
+++ b/fs/gfs2/lops.c
@@ -168,7 +168,8 @@ u64 gfs2_log_bmap(struct gfs2_sbd *sdp)
168 * that is pinned in the pagecache. 168 * that is pinned in the pagecache.
169 */ 169 */
170 170
171static void gfs2_end_log_write_bh(struct gfs2_sbd *sdp, struct bio_vec *bvec, 171static void gfs2_end_log_write_bh(struct gfs2_sbd *sdp,
172 struct bio_vec *bvec,
172 blk_status_t error) 173 blk_status_t error)
173{ 174{
174 struct buffer_head *bh, *next; 175 struct buffer_head *bh, *next;
@@ -207,6 +208,7 @@ static void gfs2_end_log_write(struct bio *bio)
207 struct bio_vec *bvec; 208 struct bio_vec *bvec;
208 struct page *page; 209 struct page *page;
209 int i; 210 int i;
211 struct bvec_iter_all iter_all;
210 212
211 if (bio->bi_status) { 213 if (bio->bi_status) {
212 fs_err(sdp, "Error %d writing to journal, jid=%u\n", 214 fs_err(sdp, "Error %d writing to journal, jid=%u\n",
@@ -214,7 +216,7 @@ static void gfs2_end_log_write(struct bio *bio)
214 wake_up(&sdp->sd_logd_waitq); 216 wake_up(&sdp->sd_logd_waitq);
215 } 217 }
216 218
217 bio_for_each_segment_all(bvec, bio, i) { 219 bio_for_each_segment_all(bvec, bio, i, iter_all) {
218 page = bvec->bv_page; 220 page = bvec->bv_page;
219 if (page_has_buffers(page)) 221 if (page_has_buffers(page))
220 gfs2_end_log_write_bh(sdp, bvec, bio->bi_status); 222 gfs2_end_log_write_bh(sdp, bvec, bio->bi_status);
diff --git a/fs/gfs2/meta_io.c b/fs/gfs2/meta_io.c
index be9c0bf697fe..3201342404a7 100644
--- a/fs/gfs2/meta_io.c
+++ b/fs/gfs2/meta_io.c
@@ -190,8 +190,9 @@ static void gfs2_meta_read_endio(struct bio *bio)
190{ 190{
191 struct bio_vec *bvec; 191 struct bio_vec *bvec;
192 int i; 192 int i;
193 struct bvec_iter_all iter_all;
193 194
194 bio_for_each_segment_all(bvec, bio, i) { 195 bio_for_each_segment_all(bvec, bio, i, iter_all) {
195 struct page *page = bvec->bv_page; 196 struct page *page = bvec->bv_page;
196 struct buffer_head *bh = page_buffers(page); 197 struct buffer_head *bh = page_buffers(page);
197 unsigned int len = bvec->bv_len; 198 unsigned int len = bvec->bv_len;