GNU Linux-libre 5.4.257-gnu1
[releases.git] / fs / block_dev.c
1 // SPDX-License-Identifier: GPL-2.0-only
2 /*
3  *  linux/fs/block_dev.c
4  *
5  *  Copyright (C) 1991, 1992  Linus Torvalds
6  *  Copyright (C) 2001  Andrea Arcangeli <andrea@suse.de> SuSE
7  */
8
9 #include <linux/init.h>
10 #include <linux/mm.h>
11 #include <linux/fcntl.h>
12 #include <linux/slab.h>
13 #include <linux/kmod.h>
14 #include <linux/major.h>
15 #include <linux/device_cgroup.h>
16 #include <linux/highmem.h>
17 #include <linux/blkdev.h>
18 #include <linux/backing-dev.h>
19 #include <linux/module.h>
20 #include <linux/blkpg.h>
21 #include <linux/magic.h>
22 #include <linux/dax.h>
23 #include <linux/buffer_head.h>
24 #include <linux/swap.h>
25 #include <linux/pagevec.h>
26 #include <linux/writeback.h>
27 #include <linux/mpage.h>
28 #include <linux/mount.h>
29 #include <linux/pseudo_fs.h>
30 #include <linux/uio.h>
31 #include <linux/namei.h>
32 #include <linux/log2.h>
33 #include <linux/cleancache.h>
34 #include <linux/task_io_accounting_ops.h>
35 #include <linux/falloc.h>
36 #include <linux/uaccess.h>
37 #include <linux/suspend.h>
38 #include "internal.h"
39
40 struct bdev_inode {
41         struct block_device bdev;
42         struct inode vfs_inode;
43 };
44
45 static const struct address_space_operations def_blk_aops;
46
47 static inline struct bdev_inode *BDEV_I(struct inode *inode)
48 {
49         return container_of(inode, struct bdev_inode, vfs_inode);
50 }
51
52 struct block_device *I_BDEV(struct inode *inode)
53 {
54         return &BDEV_I(inode)->bdev;
55 }
56 EXPORT_SYMBOL(I_BDEV);
57
58 static void bdev_write_inode(struct block_device *bdev)
59 {
60         struct inode *inode = bdev->bd_inode;
61         int ret;
62
63         spin_lock(&inode->i_lock);
64         while (inode->i_state & I_DIRTY) {
65                 spin_unlock(&inode->i_lock);
66                 ret = write_inode_now(inode, true);
67                 if (ret) {
68                         char name[BDEVNAME_SIZE];
69                         pr_warn_ratelimited("VFS: Dirty inode writeback failed "
70                                             "for block device %s (err=%d).\n",
71                                             bdevname(bdev, name), ret);
72                 }
73                 spin_lock(&inode->i_lock);
74         }
75         spin_unlock(&inode->i_lock);
76 }
77
78 /* Kill _all_ buffers and pagecache , dirty or not.. */
79 void kill_bdev(struct block_device *bdev)
80 {
81         struct address_space *mapping = bdev->bd_inode->i_mapping;
82
83         if (mapping->nrpages == 0 && mapping->nrexceptional == 0)
84                 return;
85
86         invalidate_bh_lrus();
87         truncate_inode_pages(mapping, 0);
88 }       
89 EXPORT_SYMBOL(kill_bdev);
90
91 /* Invalidate clean unused buffers and pagecache. */
92 void invalidate_bdev(struct block_device *bdev)
93 {
94         struct address_space *mapping = bdev->bd_inode->i_mapping;
95
96         if (mapping->nrpages) {
97                 invalidate_bh_lrus();
98                 lru_add_drain_all();    /* make sure all lru add caches are flushed */
99                 invalidate_mapping_pages(mapping, 0, -1);
100         }
101         /* 99% of the time, we don't need to flush the cleancache on the bdev.
102          * But, for the strange corners, lets be cautious
103          */
104         cleancache_invalidate_inode(mapping);
105 }
106 EXPORT_SYMBOL(invalidate_bdev);
107
108 static void set_init_blocksize(struct block_device *bdev)
109 {
110         unsigned bsize = bdev_logical_block_size(bdev);
111         loff_t size = i_size_read(bdev->bd_inode);
112
113         while (bsize < PAGE_SIZE) {
114                 if (size & bsize)
115                         break;
116                 bsize <<= 1;
117         }
118         bdev->bd_block_size = bsize;
119         bdev->bd_inode->i_blkbits = blksize_bits(bsize);
120 }
121
122 int set_blocksize(struct block_device *bdev, int size)
123 {
124         /* Size must be a power of two, and between 512 and PAGE_SIZE */
125         if (size > PAGE_SIZE || size < 512 || !is_power_of_2(size))
126                 return -EINVAL;
127
128         /* Size cannot be smaller than the size supported by the device */
129         if (size < bdev_logical_block_size(bdev))
130                 return -EINVAL;
131
132         /* Don't change the size if it is same as current */
133         if (bdev->bd_block_size != size) {
134                 sync_blockdev(bdev);
135                 bdev->bd_block_size = size;
136                 bdev->bd_inode->i_blkbits = blksize_bits(size);
137                 kill_bdev(bdev);
138         }
139         return 0;
140 }
141
142 EXPORT_SYMBOL(set_blocksize);
143
144 int sb_set_blocksize(struct super_block *sb, int size)
145 {
146         if (set_blocksize(sb->s_bdev, size))
147                 return 0;
148         /* If we get here, we know size is power of two
149          * and it's value is between 512 and PAGE_SIZE */
150         sb->s_blocksize = size;
151         sb->s_blocksize_bits = blksize_bits(size);
152         return sb->s_blocksize;
153 }
154
155 EXPORT_SYMBOL(sb_set_blocksize);
156
157 int sb_min_blocksize(struct super_block *sb, int size)
158 {
159         int minsize = bdev_logical_block_size(sb->s_bdev);
160         if (size < minsize)
161                 size = minsize;
162         return sb_set_blocksize(sb, size);
163 }
164
165 EXPORT_SYMBOL(sb_min_blocksize);
166
167 static int
168 blkdev_get_block(struct inode *inode, sector_t iblock,
169                 struct buffer_head *bh, int create)
170 {
171         bh->b_bdev = I_BDEV(inode);
172         bh->b_blocknr = iblock;
173         set_buffer_mapped(bh);
174         return 0;
175 }
176
177 static struct inode *bdev_file_inode(struct file *file)
178 {
179         return file->f_mapping->host;
180 }
181
182 static unsigned int dio_bio_write_op(struct kiocb *iocb)
183 {
184         unsigned int op = REQ_OP_WRITE | REQ_SYNC | REQ_IDLE;
185
186         /* avoid the need for a I/O completion work item */
187         if (iocb->ki_flags & IOCB_DSYNC)
188                 op |= REQ_FUA;
189         return op;
190 }
191
192 #define DIO_INLINE_BIO_VECS 4
193
194 static void blkdev_bio_end_io_simple(struct bio *bio)
195 {
196         struct task_struct *waiter = bio->bi_private;
197
198         WRITE_ONCE(bio->bi_private, NULL);
199         blk_wake_io_task(waiter);
200 }
201
202 static ssize_t
203 __blkdev_direct_IO_simple(struct kiocb *iocb, struct iov_iter *iter,
204                 int nr_pages)
205 {
206         struct file *file = iocb->ki_filp;
207         struct block_device *bdev = I_BDEV(bdev_file_inode(file));
208         struct bio_vec inline_vecs[DIO_INLINE_BIO_VECS], *vecs;
209         loff_t pos = iocb->ki_pos;
210         bool should_dirty = false;
211         struct bio bio;
212         ssize_t ret;
213         blk_qc_t qc;
214
215         if ((pos | iov_iter_alignment(iter)) &
216             (bdev_logical_block_size(bdev) - 1))
217                 return -EINVAL;
218
219         if (nr_pages <= DIO_INLINE_BIO_VECS)
220                 vecs = inline_vecs;
221         else {
222                 vecs = kmalloc_array(nr_pages, sizeof(struct bio_vec),
223                                      GFP_KERNEL);
224                 if (!vecs)
225                         return -ENOMEM;
226         }
227
228         bio_init(&bio, vecs, nr_pages);
229         bio_set_dev(&bio, bdev);
230         bio.bi_iter.bi_sector = pos >> 9;
231         bio.bi_write_hint = iocb->ki_hint;
232         bio.bi_private = current;
233         bio.bi_end_io = blkdev_bio_end_io_simple;
234         bio.bi_ioprio = iocb->ki_ioprio;
235
236         ret = bio_iov_iter_get_pages(&bio, iter);
237         if (unlikely(ret))
238                 goto out;
239         ret = bio.bi_iter.bi_size;
240
241         if (iov_iter_rw(iter) == READ) {
242                 bio.bi_opf = REQ_OP_READ;
243                 if (iter_is_iovec(iter))
244                         should_dirty = true;
245         } else {
246                 bio.bi_opf = dio_bio_write_op(iocb);
247                 task_io_account_write(ret);
248         }
249         if (iocb->ki_flags & IOCB_NOWAIT)
250                 bio.bi_opf |= REQ_NOWAIT;
251         if (iocb->ki_flags & IOCB_HIPRI)
252                 bio_set_polled(&bio, iocb);
253
254         qc = submit_bio(&bio);
255         for (;;) {
256                 set_current_state(TASK_UNINTERRUPTIBLE);
257                 if (!READ_ONCE(bio.bi_private))
258                         break;
259                 if (!(iocb->ki_flags & IOCB_HIPRI) ||
260                     !blk_poll(bdev_get_queue(bdev), qc, true))
261                         io_schedule();
262         }
263         __set_current_state(TASK_RUNNING);
264
265         bio_release_pages(&bio, should_dirty);
266         if (unlikely(bio.bi_status))
267                 ret = blk_status_to_errno(bio.bi_status);
268
269 out:
270         if (vecs != inline_vecs)
271                 kfree(vecs);
272
273         bio_uninit(&bio);
274
275         return ret;
276 }
277
278 struct blkdev_dio {
279         union {
280                 struct kiocb            *iocb;
281                 struct task_struct      *waiter;
282         };
283         size_t                  size;
284         atomic_t                ref;
285         bool                    multi_bio : 1;
286         bool                    should_dirty : 1;
287         bool                    is_sync : 1;
288         struct bio              bio;
289 };
290
291 static struct bio_set blkdev_dio_pool;
292
293 static int blkdev_iopoll(struct kiocb *kiocb, bool wait)
294 {
295         struct block_device *bdev = I_BDEV(kiocb->ki_filp->f_mapping->host);
296         struct request_queue *q = bdev_get_queue(bdev);
297
298         return blk_poll(q, READ_ONCE(kiocb->ki_cookie), wait);
299 }
300
301 static void blkdev_bio_end_io(struct bio *bio)
302 {
303         struct blkdev_dio *dio = bio->bi_private;
304         bool should_dirty = dio->should_dirty;
305
306         if (bio->bi_status && !dio->bio.bi_status)
307                 dio->bio.bi_status = bio->bi_status;
308
309         if (!dio->multi_bio || atomic_dec_and_test(&dio->ref)) {
310                 if (!dio->is_sync) {
311                         struct kiocb *iocb = dio->iocb;
312                         ssize_t ret;
313
314                         if (likely(!dio->bio.bi_status)) {
315                                 ret = dio->size;
316                                 iocb->ki_pos += ret;
317                         } else {
318                                 ret = blk_status_to_errno(dio->bio.bi_status);
319                         }
320
321                         dio->iocb->ki_complete(iocb, ret, 0);
322                         if (dio->multi_bio)
323                                 bio_put(&dio->bio);
324                 } else {
325                         struct task_struct *waiter = dio->waiter;
326
327                         WRITE_ONCE(dio->waiter, NULL);
328                         blk_wake_io_task(waiter);
329                 }
330         }
331
332         if (should_dirty) {
333                 bio_check_pages_dirty(bio);
334         } else {
335                 bio_release_pages(bio, false);
336                 bio_put(bio);
337         }
338 }
339
340 static ssize_t
341 __blkdev_direct_IO(struct kiocb *iocb, struct iov_iter *iter, int nr_pages)
342 {
343         struct file *file = iocb->ki_filp;
344         struct inode *inode = bdev_file_inode(file);
345         struct block_device *bdev = I_BDEV(inode);
346         struct blk_plug plug;
347         struct blkdev_dio *dio;
348         struct bio *bio;
349         bool is_poll = (iocb->ki_flags & IOCB_HIPRI) != 0;
350         bool is_read = (iov_iter_rw(iter) == READ), is_sync;
351         loff_t pos = iocb->ki_pos;
352         blk_qc_t qc = BLK_QC_T_NONE;
353         int ret = 0;
354
355         if ((pos | iov_iter_alignment(iter)) &
356             (bdev_logical_block_size(bdev) - 1))
357                 return -EINVAL;
358
359         bio = bio_alloc_bioset(GFP_KERNEL, nr_pages, &blkdev_dio_pool);
360
361         dio = container_of(bio, struct blkdev_dio, bio);
362         dio->is_sync = is_sync = is_sync_kiocb(iocb);
363         if (dio->is_sync) {
364                 dio->waiter = current;
365                 bio_get(bio);
366         } else {
367                 dio->iocb = iocb;
368         }
369
370         dio->size = 0;
371         dio->multi_bio = false;
372         dio->should_dirty = is_read && iter_is_iovec(iter);
373
374         /*
375          * Don't plug for HIPRI/polled IO, as those should go straight
376          * to issue
377          */
378         if (!is_poll)
379                 blk_start_plug(&plug);
380
381         for (;;) {
382                 bio_set_dev(bio, bdev);
383                 bio->bi_iter.bi_sector = pos >> 9;
384                 bio->bi_write_hint = iocb->ki_hint;
385                 bio->bi_private = dio;
386                 bio->bi_end_io = blkdev_bio_end_io;
387                 bio->bi_ioprio = iocb->ki_ioprio;
388
389                 ret = bio_iov_iter_get_pages(bio, iter);
390                 if (unlikely(ret)) {
391                         bio->bi_status = BLK_STS_IOERR;
392                         bio_endio(bio);
393                         break;
394                 }
395
396                 if (is_read) {
397                         bio->bi_opf = REQ_OP_READ;
398                         if (dio->should_dirty)
399                                 bio_set_pages_dirty(bio);
400                 } else {
401                         bio->bi_opf = dio_bio_write_op(iocb);
402                         task_io_account_write(bio->bi_iter.bi_size);
403                 }
404                 if (iocb->ki_flags & IOCB_NOWAIT)
405                         bio->bi_opf |= REQ_NOWAIT;
406
407                 dio->size += bio->bi_iter.bi_size;
408                 pos += bio->bi_iter.bi_size;
409
410                 nr_pages = iov_iter_npages(iter, BIO_MAX_PAGES);
411                 if (!nr_pages) {
412                         bool polled = false;
413
414                         if (iocb->ki_flags & IOCB_HIPRI) {
415                                 bio_set_polled(bio, iocb);
416                                 polled = true;
417                         }
418
419                         qc = submit_bio(bio);
420
421                         if (polled)
422                                 WRITE_ONCE(iocb->ki_cookie, qc);
423                         break;
424                 }
425
426                 if (!dio->multi_bio) {
427                         /*
428                          * AIO needs an extra reference to ensure the dio
429                          * structure which is embedded into the first bio
430                          * stays around.
431                          */
432                         if (!is_sync)
433                                 bio_get(bio);
434                         dio->multi_bio = true;
435                         atomic_set(&dio->ref, 2);
436                 } else {
437                         atomic_inc(&dio->ref);
438                 }
439
440                 submit_bio(bio);
441                 bio = bio_alloc(GFP_KERNEL, nr_pages);
442         }
443
444         if (!is_poll)
445                 blk_finish_plug(&plug);
446
447         if (!is_sync)
448                 return -EIOCBQUEUED;
449
450         for (;;) {
451                 set_current_state(TASK_UNINTERRUPTIBLE);
452                 if (!READ_ONCE(dio->waiter))
453                         break;
454
455                 if (!(iocb->ki_flags & IOCB_HIPRI) ||
456                     !blk_poll(bdev_get_queue(bdev), qc, true))
457                         io_schedule();
458         }
459         __set_current_state(TASK_RUNNING);
460
461         if (!ret)
462                 ret = blk_status_to_errno(dio->bio.bi_status);
463         if (likely(!ret))
464                 ret = dio->size;
465
466         bio_put(&dio->bio);
467         return ret;
468 }
469
470 static ssize_t
471 blkdev_direct_IO(struct kiocb *iocb, struct iov_iter *iter)
472 {
473         int nr_pages;
474
475         nr_pages = iov_iter_npages(iter, BIO_MAX_PAGES + 1);
476         if (!nr_pages)
477                 return 0;
478         if (is_sync_kiocb(iocb) && nr_pages <= BIO_MAX_PAGES)
479                 return __blkdev_direct_IO_simple(iocb, iter, nr_pages);
480
481         return __blkdev_direct_IO(iocb, iter, min(nr_pages, BIO_MAX_PAGES));
482 }
483
484 static __init int blkdev_init(void)
485 {
486         return bioset_init(&blkdev_dio_pool, 4, offsetof(struct blkdev_dio, bio), BIOSET_NEED_BVECS);
487 }
488 module_init(blkdev_init);
489
490 int __sync_blockdev(struct block_device *bdev, int wait)
491 {
492         if (!bdev)
493                 return 0;
494         if (!wait)
495                 return filemap_flush(bdev->bd_inode->i_mapping);
496         return filemap_write_and_wait(bdev->bd_inode->i_mapping);
497 }
498
499 /*
500  * Write out and wait upon all the dirty data associated with a block
501  * device via its mapping.  Does not take the superblock lock.
502  */
503 int sync_blockdev(struct block_device *bdev)
504 {
505         return __sync_blockdev(bdev, 1);
506 }
507 EXPORT_SYMBOL(sync_blockdev);
508
509 /*
510  * Write out and wait upon all dirty data associated with this
511  * device.   Filesystem data as well as the underlying block
512  * device.  Takes the superblock lock.
513  */
514 int fsync_bdev(struct block_device *bdev)
515 {
516         struct super_block *sb = get_super(bdev);
517         if (sb) {
518                 int res = sync_filesystem(sb);
519                 drop_super(sb);
520                 return res;
521         }
522         return sync_blockdev(bdev);
523 }
524 EXPORT_SYMBOL(fsync_bdev);
525
526 /**
527  * freeze_bdev  --  lock a filesystem and force it into a consistent state
528  * @bdev:       blockdevice to lock
529  *
530  * If a superblock is found on this device, we take the s_umount semaphore
531  * on it to make sure nobody unmounts until the snapshot creation is done.
532  * The reference counter (bd_fsfreeze_count) guarantees that only the last
533  * unfreeze process can unfreeze the frozen filesystem actually when multiple
534  * freeze requests arrive simultaneously. It counts up in freeze_bdev() and
535  * count down in thaw_bdev(). When it becomes 0, thaw_bdev() will unfreeze
536  * actually.
537  */
538 struct super_block *freeze_bdev(struct block_device *bdev)
539 {
540         struct super_block *sb;
541         int error = 0;
542
543         mutex_lock(&bdev->bd_fsfreeze_mutex);
544         if (++bdev->bd_fsfreeze_count > 1) {
545                 /*
546                  * We don't even need to grab a reference - the first call
547                  * to freeze_bdev grab an active reference and only the last
548                  * thaw_bdev drops it.
549                  */
550                 sb = get_super(bdev);
551                 if (sb)
552                         drop_super(sb);
553                 mutex_unlock(&bdev->bd_fsfreeze_mutex);
554                 return sb;
555         }
556
557         sb = get_active_super(bdev);
558         if (!sb)
559                 goto out;
560         if (sb->s_op->freeze_super)
561                 error = sb->s_op->freeze_super(sb);
562         else
563                 error = freeze_super(sb);
564         if (error) {
565                 deactivate_super(sb);
566                 bdev->bd_fsfreeze_count--;
567                 mutex_unlock(&bdev->bd_fsfreeze_mutex);
568                 return ERR_PTR(error);
569         }
570         deactivate_super(sb);
571  out:
572         sync_blockdev(bdev);
573         mutex_unlock(&bdev->bd_fsfreeze_mutex);
574         return sb;      /* thaw_bdev releases s->s_umount */
575 }
576 EXPORT_SYMBOL(freeze_bdev);
577
578 /**
579  * thaw_bdev  -- unlock filesystem
580  * @bdev:       blockdevice to unlock
581  * @sb:         associated superblock
582  *
583  * Unlocks the filesystem and marks it writeable again after freeze_bdev().
584  */
585 int thaw_bdev(struct block_device *bdev, struct super_block *sb)
586 {
587         int error = -EINVAL;
588
589         mutex_lock(&bdev->bd_fsfreeze_mutex);
590         if (!bdev->bd_fsfreeze_count)
591                 goto out;
592
593         error = 0;
594         if (--bdev->bd_fsfreeze_count > 0)
595                 goto out;
596
597         if (!sb)
598                 goto out;
599
600         if (sb->s_op->thaw_super)
601                 error = sb->s_op->thaw_super(sb);
602         else
603                 error = thaw_super(sb);
604         if (error)
605                 bdev->bd_fsfreeze_count++;
606 out:
607         mutex_unlock(&bdev->bd_fsfreeze_mutex);
608         return error;
609 }
610 EXPORT_SYMBOL(thaw_bdev);
611
612 static int blkdev_writepage(struct page *page, struct writeback_control *wbc)
613 {
614         return block_write_full_page(page, blkdev_get_block, wbc);
615 }
616
617 static int blkdev_readpage(struct file * file, struct page * page)
618 {
619         return block_read_full_page(page, blkdev_get_block);
620 }
621
622 static int blkdev_readpages(struct file *file, struct address_space *mapping,
623                         struct list_head *pages, unsigned nr_pages)
624 {
625         return mpage_readpages(mapping, pages, nr_pages, blkdev_get_block);
626 }
627
628 static int blkdev_write_begin(struct file *file, struct address_space *mapping,
629                         loff_t pos, unsigned len, unsigned flags,
630                         struct page **pagep, void **fsdata)
631 {
632         return block_write_begin(mapping, pos, len, flags, pagep,
633                                  blkdev_get_block);
634 }
635
636 static int blkdev_write_end(struct file *file, struct address_space *mapping,
637                         loff_t pos, unsigned len, unsigned copied,
638                         struct page *page, void *fsdata)
639 {
640         int ret;
641         ret = block_write_end(file, mapping, pos, len, copied, page, fsdata);
642
643         unlock_page(page);
644         put_page(page);
645
646         return ret;
647 }
648
649 /*
650  * private llseek:
651  * for a block special file file_inode(file)->i_size is zero
652  * so we compute the size by hand (just as in block_read/write above)
653  */
654 static loff_t block_llseek(struct file *file, loff_t offset, int whence)
655 {
656         struct inode *bd_inode = bdev_file_inode(file);
657         loff_t retval;
658
659         inode_lock(bd_inode);
660         retval = fixed_size_llseek(file, offset, whence, i_size_read(bd_inode));
661         inode_unlock(bd_inode);
662         return retval;
663 }
664         
665 int blkdev_fsync(struct file *filp, loff_t start, loff_t end, int datasync)
666 {
667         struct inode *bd_inode = bdev_file_inode(filp);
668         struct block_device *bdev = I_BDEV(bd_inode);
669         int error;
670         
671         error = file_write_and_wait_range(filp, start, end);
672         if (error)
673                 return error;
674
675         /*
676          * There is no need to serialise calls to blkdev_issue_flush with
677          * i_mutex and doing so causes performance issues with concurrent
678          * O_SYNC writers to a block device.
679          */
680         error = blkdev_issue_flush(bdev, GFP_KERNEL, NULL);
681         if (error == -EOPNOTSUPP)
682                 error = 0;
683
684         return error;
685 }
686 EXPORT_SYMBOL(blkdev_fsync);
687
688 /**
689  * bdev_read_page() - Start reading a page from a block device
690  * @bdev: The device to read the page from
691  * @sector: The offset on the device to read the page to (need not be aligned)
692  * @page: The page to read
693  *
694  * On entry, the page should be locked.  It will be unlocked when the page
695  * has been read.  If the block driver implements rw_page synchronously,
696  * that will be true on exit from this function, but it need not be.
697  *
698  * Errors returned by this function are usually "soft", eg out of memory, or
699  * queue full; callers should try a different route to read this page rather
700  * than propagate an error back up the stack.
701  *
702  * Return: negative errno if an error occurs, 0 if submission was successful.
703  */
704 int bdev_read_page(struct block_device *bdev, sector_t sector,
705                         struct page *page)
706 {
707         const struct block_device_operations *ops = bdev->bd_disk->fops;
708         int result = -EOPNOTSUPP;
709
710         if (!ops->rw_page || bdev_get_integrity(bdev))
711                 return result;
712
713         result = blk_queue_enter(bdev->bd_queue, 0);
714         if (result)
715                 return result;
716         result = ops->rw_page(bdev, sector + get_start_sect(bdev), page,
717                               REQ_OP_READ);
718         blk_queue_exit(bdev->bd_queue);
719         return result;
720 }
721 EXPORT_SYMBOL_GPL(bdev_read_page);
722
723 /**
724  * bdev_write_page() - Start writing a page to a block device
725  * @bdev: The device to write the page to
726  * @sector: The offset on the device to write the page to (need not be aligned)
727  * @page: The page to write
728  * @wbc: The writeback_control for the write
729  *
730  * On entry, the page should be locked and not currently under writeback.
731  * On exit, if the write started successfully, the page will be unlocked and
732  * under writeback.  If the write failed already (eg the driver failed to
733  * queue the page to the device), the page will still be locked.  If the
734  * caller is a ->writepage implementation, it will need to unlock the page.
735  *
736  * Errors returned by this function are usually "soft", eg out of memory, or
737  * queue full; callers should try a different route to write this page rather
738  * than propagate an error back up the stack.
739  *
740  * Return: negative errno if an error occurs, 0 if submission was successful.
741  */
742 int bdev_write_page(struct block_device *bdev, sector_t sector,
743                         struct page *page, struct writeback_control *wbc)
744 {
745         int result;
746         const struct block_device_operations *ops = bdev->bd_disk->fops;
747
748         if (!ops->rw_page || bdev_get_integrity(bdev))
749                 return -EOPNOTSUPP;
750         result = blk_queue_enter(bdev->bd_queue, 0);
751         if (result)
752                 return result;
753
754         set_page_writeback(page);
755         result = ops->rw_page(bdev, sector + get_start_sect(bdev), page,
756                               REQ_OP_WRITE);
757         if (result) {
758                 end_page_writeback(page);
759         } else {
760                 clean_page_buffers(page);
761                 unlock_page(page);
762         }
763         blk_queue_exit(bdev->bd_queue);
764         return result;
765 }
766 EXPORT_SYMBOL_GPL(bdev_write_page);
767
768 /*
769  * pseudo-fs
770  */
771
772 static  __cacheline_aligned_in_smp DEFINE_SPINLOCK(bdev_lock);
773 static struct kmem_cache * bdev_cachep __read_mostly;
774
775 static struct inode *bdev_alloc_inode(struct super_block *sb)
776 {
777         struct bdev_inode *ei = kmem_cache_alloc(bdev_cachep, GFP_KERNEL);
778         if (!ei)
779                 return NULL;
780         return &ei->vfs_inode;
781 }
782
783 static void bdev_free_inode(struct inode *inode)
784 {
785         kmem_cache_free(bdev_cachep, BDEV_I(inode));
786 }
787
788 static void init_once(void *foo)
789 {
790         struct bdev_inode *ei = (struct bdev_inode *) foo;
791         struct block_device *bdev = &ei->bdev;
792
793         memset(bdev, 0, sizeof(*bdev));
794         mutex_init(&bdev->bd_mutex);
795         INIT_LIST_HEAD(&bdev->bd_list);
796 #ifdef CONFIG_SYSFS
797         INIT_LIST_HEAD(&bdev->bd_holder_disks);
798 #endif
799         bdev->bd_bdi = &noop_backing_dev_info;
800         inode_init_once(&ei->vfs_inode);
801         /* Initialize mutex for freeze. */
802         mutex_init(&bdev->bd_fsfreeze_mutex);
803 }
804
805 static void bdev_evict_inode(struct inode *inode)
806 {
807         struct block_device *bdev = &BDEV_I(inode)->bdev;
808         truncate_inode_pages_final(&inode->i_data);
809         invalidate_inode_buffers(inode); /* is it needed here? */
810         clear_inode(inode);
811         spin_lock(&bdev_lock);
812         list_del_init(&bdev->bd_list);
813         spin_unlock(&bdev_lock);
814         /* Detach inode from wb early as bdi_put() may free bdi->wb */
815         inode_detach_wb(inode);
816         if (bdev->bd_bdi != &noop_backing_dev_info) {
817                 bdi_put(bdev->bd_bdi);
818                 bdev->bd_bdi = &noop_backing_dev_info;
819         }
820 }
821
822 static const struct super_operations bdev_sops = {
823         .statfs = simple_statfs,
824         .alloc_inode = bdev_alloc_inode,
825         .free_inode = bdev_free_inode,
826         .drop_inode = generic_delete_inode,
827         .evict_inode = bdev_evict_inode,
828 };
829
830 static int bd_init_fs_context(struct fs_context *fc)
831 {
832         struct pseudo_fs_context *ctx = init_pseudo(fc, BDEVFS_MAGIC);
833         if (!ctx)
834                 return -ENOMEM;
835         fc->s_iflags |= SB_I_CGROUPWB;
836         ctx->ops = &bdev_sops;
837         return 0;
838 }
839
840 static struct file_system_type bd_type = {
841         .name           = "bdev",
842         .init_fs_context = bd_init_fs_context,
843         .kill_sb        = kill_anon_super,
844 };
845
846 struct super_block *blockdev_superblock __read_mostly;
847 EXPORT_SYMBOL_GPL(blockdev_superblock);
848
849 void __init bdev_cache_init(void)
850 {
851         int err;
852         static struct vfsmount *bd_mnt;
853
854         bdev_cachep = kmem_cache_create("bdev_cache", sizeof(struct bdev_inode),
855                         0, (SLAB_HWCACHE_ALIGN|SLAB_RECLAIM_ACCOUNT|
856                                 SLAB_MEM_SPREAD|SLAB_ACCOUNT|SLAB_PANIC),
857                         init_once);
858         err = register_filesystem(&bd_type);
859         if (err)
860                 panic("Cannot register bdev pseudo-fs");
861         bd_mnt = kern_mount(&bd_type);
862         if (IS_ERR(bd_mnt))
863                 panic("Cannot create bdev pseudo-fs");
864         blockdev_superblock = bd_mnt->mnt_sb;   /* For writeback */
865 }
866
867 /*
868  * Most likely _very_ bad one - but then it's hardly critical for small
869  * /dev and can be fixed when somebody will need really large one.
870  * Keep in mind that it will be fed through icache hash function too.
871  */
872 static inline unsigned long hash(dev_t dev)
873 {
874         return MAJOR(dev)+MINOR(dev);
875 }
876
877 static int bdev_test(struct inode *inode, void *data)
878 {
879         return BDEV_I(inode)->bdev.bd_dev == *(dev_t *)data;
880 }
881
882 static int bdev_set(struct inode *inode, void *data)
883 {
884         BDEV_I(inode)->bdev.bd_dev = *(dev_t *)data;
885         return 0;
886 }
887
888 static LIST_HEAD(all_bdevs);
889
890 /*
891  * If there is a bdev inode for this device, unhash it so that it gets evicted
892  * as soon as last inode reference is dropped.
893  */
894 void bdev_unhash_inode(dev_t dev)
895 {
896         struct inode *inode;
897
898         inode = ilookup5(blockdev_superblock, hash(dev), bdev_test, &dev);
899         if (inode) {
900                 remove_inode_hash(inode);
901                 iput(inode);
902         }
903 }
904
905 struct block_device *bdget(dev_t dev)
906 {
907         struct block_device *bdev;
908         struct inode *inode;
909
910         inode = iget5_locked(blockdev_superblock, hash(dev),
911                         bdev_test, bdev_set, &dev);
912
913         if (!inode)
914                 return NULL;
915
916         bdev = &BDEV_I(inode)->bdev;
917
918         if (inode->i_state & I_NEW) {
919                 bdev->bd_contains = NULL;
920                 bdev->bd_super = NULL;
921                 bdev->bd_inode = inode;
922                 bdev->bd_block_size = i_blocksize(inode);
923                 bdev->bd_part_count = 0;
924                 bdev->bd_invalidated = 0;
925                 inode->i_mode = S_IFBLK;
926                 inode->i_rdev = dev;
927                 inode->i_bdev = bdev;
928                 inode->i_data.a_ops = &def_blk_aops;
929                 mapping_set_gfp_mask(&inode->i_data, GFP_USER);
930                 spin_lock(&bdev_lock);
931                 list_add(&bdev->bd_list, &all_bdevs);
932                 spin_unlock(&bdev_lock);
933                 unlock_new_inode(inode);
934         }
935         return bdev;
936 }
937
938 EXPORT_SYMBOL(bdget);
939
940 /**
941  * bdgrab -- Grab a reference to an already referenced block device
942  * @bdev:       Block device to grab a reference to.
943  */
944 struct block_device *bdgrab(struct block_device *bdev)
945 {
946         ihold(bdev->bd_inode);
947         return bdev;
948 }
949 EXPORT_SYMBOL(bdgrab);
950
951 long nr_blockdev_pages(void)
952 {
953         struct block_device *bdev;
954         long ret = 0;
955         spin_lock(&bdev_lock);
956         list_for_each_entry(bdev, &all_bdevs, bd_list) {
957                 ret += bdev->bd_inode->i_mapping->nrpages;
958         }
959         spin_unlock(&bdev_lock);
960         return ret;
961 }
962
963 void bdput(struct block_device *bdev)
964 {
965         iput(bdev->bd_inode);
966 }
967
968 EXPORT_SYMBOL(bdput);
969  
970 static struct block_device *bd_acquire(struct inode *inode)
971 {
972         struct block_device *bdev;
973
974         spin_lock(&bdev_lock);
975         bdev = inode->i_bdev;
976         if (bdev && !inode_unhashed(bdev->bd_inode)) {
977                 bdgrab(bdev);
978                 spin_unlock(&bdev_lock);
979                 return bdev;
980         }
981         spin_unlock(&bdev_lock);
982
983         /*
984          * i_bdev references block device inode that was already shut down
985          * (corresponding device got removed).  Remove the reference and look
986          * up block device inode again just in case new device got
987          * reestablished under the same device number.
988          */
989         if (bdev)
990                 bd_forget(inode);
991
992         bdev = bdget(inode->i_rdev);
993         if (bdev) {
994                 spin_lock(&bdev_lock);
995                 if (!inode->i_bdev) {
996                         /*
997                          * We take an additional reference to bd_inode,
998                          * and it's released in clear_inode() of inode.
999                          * So, we can access it via ->i_mapping always
1000                          * without igrab().
1001                          */
1002                         bdgrab(bdev);
1003                         inode->i_bdev = bdev;
1004                         inode->i_mapping = bdev->bd_inode->i_mapping;
1005                 }
1006                 spin_unlock(&bdev_lock);
1007         }
1008         return bdev;
1009 }
1010
1011 /* Call when you free inode */
1012
1013 void bd_forget(struct inode *inode)
1014 {
1015         struct block_device *bdev = NULL;
1016
1017         spin_lock(&bdev_lock);
1018         if (!sb_is_blkdev_sb(inode->i_sb))
1019                 bdev = inode->i_bdev;
1020         inode->i_bdev = NULL;
1021         inode->i_mapping = &inode->i_data;
1022         spin_unlock(&bdev_lock);
1023
1024         if (bdev)
1025                 bdput(bdev);
1026 }
1027
1028 /**
1029  * bd_may_claim - test whether a block device can be claimed
1030  * @bdev: block device of interest
1031  * @whole: whole block device containing @bdev, may equal @bdev
1032  * @holder: holder trying to claim @bdev
1033  *
1034  * Test whether @bdev can be claimed by @holder.
1035  *
1036  * CONTEXT:
1037  * spin_lock(&bdev_lock).
1038  *
1039  * RETURNS:
1040  * %true if @bdev can be claimed, %false otherwise.
1041  */
1042 static bool bd_may_claim(struct block_device *bdev, struct block_device *whole,
1043                          void *holder)
1044 {
1045         if (bdev->bd_holder == holder)
1046                 return true;     /* already a holder */
1047         else if (bdev->bd_holder != NULL)
1048                 return false;    /* held by someone else */
1049         else if (whole == bdev)
1050                 return true;     /* is a whole device which isn't held */
1051
1052         else if (whole->bd_holder == bd_may_claim)
1053                 return true;     /* is a partition of a device that is being partitioned */
1054         else if (whole->bd_holder != NULL)
1055                 return false;    /* is a partition of a held device */
1056         else
1057                 return true;     /* is a partition of an un-held device */
1058 }
1059
1060 /**
1061  * bd_prepare_to_claim - prepare to claim a block device
1062  * @bdev: block device of interest
1063  * @whole: the whole device containing @bdev, may equal @bdev
1064  * @holder: holder trying to claim @bdev
1065  *
1066  * Prepare to claim @bdev.  This function fails if @bdev is already
1067  * claimed by another holder and waits if another claiming is in
1068  * progress.  This function doesn't actually claim.  On successful
1069  * return, the caller has ownership of bd_claiming and bd_holder[s].
1070  *
1071  * CONTEXT:
1072  * spin_lock(&bdev_lock).  Might release bdev_lock, sleep and regrab
1073  * it multiple times.
1074  *
1075  * RETURNS:
1076  * 0 if @bdev can be claimed, -EBUSY otherwise.
1077  */
1078 static int bd_prepare_to_claim(struct block_device *bdev,
1079                                struct block_device *whole, void *holder)
1080 {
1081 retry:
1082         /* if someone else claimed, fail */
1083         if (!bd_may_claim(bdev, whole, holder))
1084                 return -EBUSY;
1085
1086         /* if claiming is already in progress, wait for it to finish */
1087         if (whole->bd_claiming) {
1088                 wait_queue_head_t *wq = bit_waitqueue(&whole->bd_claiming, 0);
1089                 DEFINE_WAIT(wait);
1090
1091                 prepare_to_wait(wq, &wait, TASK_UNINTERRUPTIBLE);
1092                 spin_unlock(&bdev_lock);
1093                 schedule();
1094                 finish_wait(wq, &wait);
1095                 spin_lock(&bdev_lock);
1096                 goto retry;
1097         }
1098
1099         /* yay, all mine */
1100         return 0;
1101 }
1102
1103 static struct gendisk *bdev_get_gendisk(struct block_device *bdev, int *partno)
1104 {
1105         struct gendisk *disk = get_gendisk(bdev->bd_dev, partno);
1106
1107         if (!disk)
1108                 return NULL;
1109         /*
1110          * Now that we hold gendisk reference we make sure bdev we looked up is
1111          * not stale. If it is, it means device got removed and created before
1112          * we looked up gendisk and we fail open in such case. Associating
1113          * unhashed bdev with newly created gendisk could lead to two bdevs
1114          * (and thus two independent caches) being associated with one device
1115          * which is bad.
1116          */
1117         if (inode_unhashed(bdev->bd_inode)) {
1118                 put_disk_and_module(disk);
1119                 return NULL;
1120         }
1121         return disk;
1122 }
1123
1124 /**
1125  * bd_start_claiming - start claiming a block device
1126  * @bdev: block device of interest
1127  * @holder: holder trying to claim @bdev
1128  *
1129  * @bdev is about to be opened exclusively.  Check @bdev can be opened
1130  * exclusively and mark that an exclusive open is in progress.  Each
1131  * successful call to this function must be matched with a call to
1132  * either bd_finish_claiming() or bd_abort_claiming() (which do not
1133  * fail).
1134  *
1135  * This function is used to gain exclusive access to the block device
1136  * without actually causing other exclusive open attempts to fail. It
1137  * should be used when the open sequence itself requires exclusive
1138  * access but may subsequently fail.
1139  *
1140  * CONTEXT:
1141  * Might sleep.
1142  *
1143  * RETURNS:
1144  * Pointer to the block device containing @bdev on success, ERR_PTR()
1145  * value on failure.
1146  */
1147 struct block_device *bd_start_claiming(struct block_device *bdev, void *holder)
1148 {
1149         struct gendisk *disk;
1150         struct block_device *whole;
1151         int partno, err;
1152
1153         might_sleep();
1154
1155         /*
1156          * @bdev might not have been initialized properly yet, look up
1157          * and grab the outer block device the hard way.
1158          */
1159         disk = bdev_get_gendisk(bdev, &partno);
1160         if (!disk)
1161                 return ERR_PTR(-ENXIO);
1162
1163         /*
1164          * Normally, @bdev should equal what's returned from bdget_disk()
1165          * if partno is 0; however, some drivers (floppy) use multiple
1166          * bdev's for the same physical device and @bdev may be one of the
1167          * aliases.  Keep @bdev if partno is 0.  This means claimer
1168          * tracking is broken for those devices but it has always been that
1169          * way.
1170          */
1171         if (partno)
1172                 whole = bdget_disk(disk, 0);
1173         else
1174                 whole = bdgrab(bdev);
1175
1176         put_disk_and_module(disk);
1177         if (!whole)
1178                 return ERR_PTR(-ENOMEM);
1179
1180         /* prepare to claim, if successful, mark claiming in progress */
1181         spin_lock(&bdev_lock);
1182
1183         err = bd_prepare_to_claim(bdev, whole, holder);
1184         if (err == 0) {
1185                 whole->bd_claiming = holder;
1186                 spin_unlock(&bdev_lock);
1187                 return whole;
1188         } else {
1189                 spin_unlock(&bdev_lock);
1190                 bdput(whole);
1191                 return ERR_PTR(err);
1192         }
1193 }
1194 EXPORT_SYMBOL(bd_start_claiming);
1195
1196 static void bd_clear_claiming(struct block_device *whole, void *holder)
1197 {
1198         lockdep_assert_held(&bdev_lock);
1199         /* tell others that we're done */
1200         BUG_ON(whole->bd_claiming != holder);
1201         whole->bd_claiming = NULL;
1202         wake_up_bit(&whole->bd_claiming, 0);
1203 }
1204
1205 /**
1206  * bd_finish_claiming - finish claiming of a block device
1207  * @bdev: block device of interest
1208  * @whole: whole block device (returned from bd_start_claiming())
1209  * @holder: holder that has claimed @bdev
1210  *
1211  * Finish exclusive open of a block device. Mark the device as exlusively
1212  * open by the holder and wake up all waiters for exclusive open to finish.
1213  */
1214 void bd_finish_claiming(struct block_device *bdev, struct block_device *whole,
1215                         void *holder)
1216 {
1217         spin_lock(&bdev_lock);
1218         BUG_ON(!bd_may_claim(bdev, whole, holder));
1219         /*
1220          * Note that for a whole device bd_holders will be incremented twice,
1221          * and bd_holder will be set to bd_may_claim before being set to holder
1222          */
1223         whole->bd_holders++;
1224         whole->bd_holder = bd_may_claim;
1225         bdev->bd_holders++;
1226         bdev->bd_holder = holder;
1227         bd_clear_claiming(whole, holder);
1228         spin_unlock(&bdev_lock);
1229 }
1230 EXPORT_SYMBOL(bd_finish_claiming);
1231
1232 /**
1233  * bd_abort_claiming - abort claiming of a block device
1234  * @bdev: block device of interest
1235  * @whole: whole block device (returned from bd_start_claiming())
1236  * @holder: holder that has claimed @bdev
1237  *
1238  * Abort claiming of a block device when the exclusive open failed. This can be
1239  * also used when exclusive open is not actually desired and we just needed
1240  * to block other exclusive openers for a while.
1241  */
1242 void bd_abort_claiming(struct block_device *bdev, struct block_device *whole,
1243                        void *holder)
1244 {
1245         spin_lock(&bdev_lock);
1246         bd_clear_claiming(whole, holder);
1247         spin_unlock(&bdev_lock);
1248 }
1249 EXPORT_SYMBOL(bd_abort_claiming);
1250
1251 #ifdef CONFIG_SYSFS
1252 struct bd_holder_disk {
1253         struct list_head        list;
1254         struct gendisk          *disk;
1255         int                     refcnt;
1256 };
1257
1258 static struct bd_holder_disk *bd_find_holder_disk(struct block_device *bdev,
1259                                                   struct gendisk *disk)
1260 {
1261         struct bd_holder_disk *holder;
1262
1263         list_for_each_entry(holder, &bdev->bd_holder_disks, list)
1264                 if (holder->disk == disk)
1265                         return holder;
1266         return NULL;
1267 }
1268
1269 static int add_symlink(struct kobject *from, struct kobject *to)
1270 {
1271         return sysfs_create_link(from, to, kobject_name(to));
1272 }
1273
1274 static void del_symlink(struct kobject *from, struct kobject *to)
1275 {
1276         sysfs_remove_link(from, kobject_name(to));
1277 }
1278
1279 /**
1280  * bd_link_disk_holder - create symlinks between holding disk and slave bdev
1281  * @bdev: the claimed slave bdev
1282  * @disk: the holding disk
1283  *
1284  * DON'T USE THIS UNLESS YOU'RE ALREADY USING IT.
1285  *
1286  * This functions creates the following sysfs symlinks.
1287  *
1288  * - from "slaves" directory of the holder @disk to the claimed @bdev
1289  * - from "holders" directory of the @bdev to the holder @disk
1290  *
1291  * For example, if /dev/dm-0 maps to /dev/sda and disk for dm-0 is
1292  * passed to bd_link_disk_holder(), then:
1293  *
1294  *   /sys/block/dm-0/slaves/sda --> /sys/block/sda
1295  *   /sys/block/sda/holders/dm-0 --> /sys/block/dm-0
1296  *
1297  * The caller must have claimed @bdev before calling this function and
1298  * ensure that both @bdev and @disk are valid during the creation and
1299  * lifetime of these symlinks.
1300  *
1301  * CONTEXT:
1302  * Might sleep.
1303  *
1304  * RETURNS:
1305  * 0 on success, -errno on failure.
1306  */
1307 int bd_link_disk_holder(struct block_device *bdev, struct gendisk *disk)
1308 {
1309         struct bd_holder_disk *holder;
1310         int ret = 0;
1311
1312         mutex_lock(&bdev->bd_mutex);
1313
1314         WARN_ON_ONCE(!bdev->bd_holder);
1315
1316         /* FIXME: remove the following once add_disk() handles errors */
1317         if (WARN_ON(!disk->slave_dir || !bdev->bd_part->holder_dir))
1318                 goto out_unlock;
1319
1320         holder = bd_find_holder_disk(bdev, disk);
1321         if (holder) {
1322                 holder->refcnt++;
1323                 goto out_unlock;
1324         }
1325
1326         holder = kzalloc(sizeof(*holder), GFP_KERNEL);
1327         if (!holder) {
1328                 ret = -ENOMEM;
1329                 goto out_unlock;
1330         }
1331
1332         INIT_LIST_HEAD(&holder->list);
1333         holder->disk = disk;
1334         holder->refcnt = 1;
1335
1336         ret = add_symlink(disk->slave_dir, &part_to_dev(bdev->bd_part)->kobj);
1337         if (ret)
1338                 goto out_free;
1339
1340         ret = add_symlink(bdev->bd_part->holder_dir, &disk_to_dev(disk)->kobj);
1341         if (ret)
1342                 goto out_del;
1343         /*
1344          * bdev could be deleted beneath us which would implicitly destroy
1345          * the holder directory.  Hold on to it.
1346          */
1347         kobject_get(bdev->bd_part->holder_dir);
1348
1349         list_add(&holder->list, &bdev->bd_holder_disks);
1350         goto out_unlock;
1351
1352 out_del:
1353         del_symlink(disk->slave_dir, &part_to_dev(bdev->bd_part)->kobj);
1354 out_free:
1355         kfree(holder);
1356 out_unlock:
1357         mutex_unlock(&bdev->bd_mutex);
1358         return ret;
1359 }
1360 EXPORT_SYMBOL_GPL(bd_link_disk_holder);
1361
1362 /**
1363  * bd_unlink_disk_holder - destroy symlinks created by bd_link_disk_holder()
1364  * @bdev: the calimed slave bdev
1365  * @disk: the holding disk
1366  *
1367  * DON'T USE THIS UNLESS YOU'RE ALREADY USING IT.
1368  *
1369  * CONTEXT:
1370  * Might sleep.
1371  */
1372 void bd_unlink_disk_holder(struct block_device *bdev, struct gendisk *disk)
1373 {
1374         struct bd_holder_disk *holder;
1375
1376         mutex_lock(&bdev->bd_mutex);
1377
1378         holder = bd_find_holder_disk(bdev, disk);
1379
1380         if (!WARN_ON_ONCE(holder == NULL) && !--holder->refcnt) {
1381                 del_symlink(disk->slave_dir, &part_to_dev(bdev->bd_part)->kobj);
1382                 del_symlink(bdev->bd_part->holder_dir,
1383                             &disk_to_dev(disk)->kobj);
1384                 kobject_put(bdev->bd_part->holder_dir);
1385                 list_del_init(&holder->list);
1386                 kfree(holder);
1387         }
1388
1389         mutex_unlock(&bdev->bd_mutex);
1390 }
1391 EXPORT_SYMBOL_GPL(bd_unlink_disk_holder);
1392 #endif
1393
1394 /**
1395  * flush_disk - invalidates all buffer-cache entries on a disk
1396  *
1397  * @bdev:      struct block device to be flushed
1398  * @kill_dirty: flag to guide handling of dirty inodes
1399  *
1400  * Invalidates all buffer-cache entries on a disk. It should be called
1401  * when a disk has been changed -- either by a media change or online
1402  * resize.
1403  */
1404 static void flush_disk(struct block_device *bdev, bool kill_dirty)
1405 {
1406         if (__invalidate_device(bdev, kill_dirty)) {
1407                 printk(KERN_WARNING "VFS: busy inodes on changed media or "
1408                        "resized disk %s\n",
1409                        bdev->bd_disk ? bdev->bd_disk->disk_name : "");
1410         }
1411         bdev->bd_invalidated = 1;
1412 }
1413
1414 /**
1415  * check_disk_size_change - checks for disk size change and adjusts bdev size.
1416  * @disk: struct gendisk to check
1417  * @bdev: struct bdev to adjust.
1418  * @verbose: if %true log a message about a size change if there is any
1419  *
1420  * This routine checks to see if the bdev size does not match the disk size
1421  * and adjusts it if it differs. When shrinking the bdev size, its all caches
1422  * are freed.
1423  */
1424 void check_disk_size_change(struct gendisk *disk, struct block_device *bdev,
1425                 bool verbose)
1426 {
1427         loff_t disk_size, bdev_size;
1428
1429         disk_size = (loff_t)get_capacity(disk) << 9;
1430         bdev_size = i_size_read(bdev->bd_inode);
1431         if (disk_size != bdev_size) {
1432                 if (verbose) {
1433                         printk(KERN_INFO
1434                                "%s: detected capacity change from %lld to %lld\n",
1435                                disk->disk_name, bdev_size, disk_size);
1436                 }
1437                 i_size_write(bdev->bd_inode, disk_size);
1438                 if (bdev_size > disk_size)
1439                         flush_disk(bdev, false);
1440         }
1441 }
1442
1443 /**
1444  * revalidate_disk - wrapper for lower-level driver's revalidate_disk call-back
1445  * @disk: struct gendisk to be revalidated
1446  *
1447  * This routine is a wrapper for lower-level driver's revalidate_disk
1448  * call-backs.  It is used to do common pre and post operations needed
1449  * for all revalidate_disk operations.
1450  */
1451 int revalidate_disk(struct gendisk *disk)
1452 {
1453         int ret = 0;
1454
1455         if (disk->fops->revalidate_disk)
1456                 ret = disk->fops->revalidate_disk(disk);
1457
1458         /*
1459          * Hidden disks don't have associated bdev so there's no point in
1460          * revalidating it.
1461          */
1462         if (!(disk->flags & GENHD_FL_HIDDEN)) {
1463                 struct block_device *bdev = bdget_disk(disk, 0);
1464
1465                 if (!bdev)
1466                         return ret;
1467
1468                 mutex_lock(&bdev->bd_mutex);
1469                 check_disk_size_change(disk, bdev, ret == 0);
1470                 bdev->bd_invalidated = 0;
1471                 mutex_unlock(&bdev->bd_mutex);
1472                 bdput(bdev);
1473         }
1474         return ret;
1475 }
1476 EXPORT_SYMBOL(revalidate_disk);
1477
1478 /*
1479  * This routine checks whether a removable media has been changed,
1480  * and invalidates all buffer-cache-entries in that case. This
1481  * is a relatively slow routine, so we have to try to minimize using
1482  * it. Thus it is called only upon a 'mount' or 'open'. This
1483  * is the best way of combining speed and utility, I think.
1484  * People changing diskettes in the middle of an operation deserve
1485  * to lose :-)
1486  */
1487 int check_disk_change(struct block_device *bdev)
1488 {
1489         struct gendisk *disk = bdev->bd_disk;
1490         const struct block_device_operations *bdops = disk->fops;
1491         unsigned int events;
1492
1493         events = disk_clear_events(disk, DISK_EVENT_MEDIA_CHANGE |
1494                                    DISK_EVENT_EJECT_REQUEST);
1495         if (!(events & DISK_EVENT_MEDIA_CHANGE))
1496                 return 0;
1497
1498         flush_disk(bdev, true);
1499         if (bdops->revalidate_disk)
1500                 bdops->revalidate_disk(bdev->bd_disk);
1501         return 1;
1502 }
1503
1504 EXPORT_SYMBOL(check_disk_change);
1505
1506 void bd_set_size(struct block_device *bdev, loff_t size)
1507 {
1508         inode_lock(bdev->bd_inode);
1509         i_size_write(bdev->bd_inode, size);
1510         inode_unlock(bdev->bd_inode);
1511 }
1512 EXPORT_SYMBOL(bd_set_size);
1513
1514 static void __blkdev_put(struct block_device *bdev, fmode_t mode, int for_part);
1515
1516 static void bdev_disk_changed(struct block_device *bdev, bool invalidate)
1517 {
1518         if (disk_part_scan_enabled(bdev->bd_disk)) {
1519                 if (invalidate)
1520                         invalidate_partitions(bdev->bd_disk, bdev);
1521                 else
1522                         rescan_partitions(bdev->bd_disk, bdev);
1523         } else {
1524                 check_disk_size_change(bdev->bd_disk, bdev, !invalidate);
1525                 bdev->bd_invalidated = 0;
1526         }
1527 }
1528
1529 /*
1530  * bd_mutex locking:
1531  *
1532  *  mutex_lock(part->bd_mutex)
1533  *    mutex_lock_nested(whole->bd_mutex, 1)
1534  */
1535
1536 static int __blkdev_get(struct block_device *bdev, fmode_t mode, int for_part)
1537 {
1538         struct gendisk *disk;
1539         int ret;
1540         int partno;
1541         int perm = 0;
1542         bool first_open = false;
1543
1544         if (mode & FMODE_READ)
1545                 perm |= MAY_READ;
1546         if (mode & FMODE_WRITE)
1547                 perm |= MAY_WRITE;
1548         /*
1549          * hooks: /n/, see "layering violations".
1550          */
1551         if (!for_part) {
1552                 ret = devcgroup_inode_permission(bdev->bd_inode, perm);
1553                 if (ret != 0)
1554                         return ret;
1555         }
1556
1557  restart:
1558
1559         ret = -ENXIO;
1560         disk = bdev_get_gendisk(bdev, &partno);
1561         if (!disk)
1562                 goto out;
1563
1564         disk_block_events(disk);
1565         mutex_lock_nested(&bdev->bd_mutex, for_part);
1566         if (!bdev->bd_openers) {
1567                 first_open = true;
1568                 bdev->bd_disk = disk;
1569                 bdev->bd_queue = disk->queue;
1570                 bdev->bd_contains = bdev;
1571                 bdev->bd_partno = partno;
1572
1573                 if (!partno) {
1574                         ret = -ENXIO;
1575                         bdev->bd_part = disk_get_part(disk, partno);
1576                         if (!bdev->bd_part)
1577                                 goto out_clear;
1578
1579                         ret = 0;
1580                         if (disk->fops->open) {
1581                                 ret = disk->fops->open(bdev, mode);
1582                                 if (ret == -ERESTARTSYS) {
1583                                         /* Lost a race with 'disk' being
1584                                          * deleted, try again.
1585                                          * See md.c
1586                                          */
1587                                         disk_put_part(bdev->bd_part);
1588                                         bdev->bd_part = NULL;
1589                                         bdev->bd_disk = NULL;
1590                                         bdev->bd_queue = NULL;
1591                                         mutex_unlock(&bdev->bd_mutex);
1592                                         disk_unblock_events(disk);
1593                                         put_disk_and_module(disk);
1594                                         goto restart;
1595                                 }
1596                         }
1597
1598                         if (!ret) {
1599                                 bd_set_size(bdev,(loff_t)get_capacity(disk)<<9);
1600                                 set_init_blocksize(bdev);
1601                         }
1602
1603                         /*
1604                          * If the device is invalidated, rescan partition
1605                          * if open succeeded or failed with -ENOMEDIUM.
1606                          * The latter is necessary to prevent ghost
1607                          * partitions on a removed medium.
1608                          */
1609                         if (bdev->bd_invalidated &&
1610                             (!ret || ret == -ENOMEDIUM))
1611                                 bdev_disk_changed(bdev, ret == -ENOMEDIUM);
1612
1613                         if (ret)
1614                                 goto out_clear;
1615                 } else {
1616                         struct block_device *whole;
1617                         whole = bdget_disk(disk, 0);
1618                         ret = -ENOMEM;
1619                         if (!whole)
1620                                 goto out_clear;
1621                         BUG_ON(for_part);
1622                         ret = __blkdev_get(whole, mode, 1);
1623                         if (ret) {
1624                                 bdput(whole);
1625                                 goto out_clear;
1626                         }
1627                         bdev->bd_contains = whole;
1628                         bdev->bd_part = disk_get_part(disk, partno);
1629                         if (!(disk->flags & GENHD_FL_UP) ||
1630                             !bdev->bd_part || !bdev->bd_part->nr_sects) {
1631                                 ret = -ENXIO;
1632                                 goto out_clear;
1633                         }
1634                         bd_set_size(bdev, (loff_t)bdev->bd_part->nr_sects << 9);
1635                         set_init_blocksize(bdev);
1636                 }
1637
1638                 if (bdev->bd_bdi == &noop_backing_dev_info)
1639                         bdev->bd_bdi = bdi_get(disk->queue->backing_dev_info);
1640         } else {
1641                 if (bdev->bd_contains == bdev) {
1642                         ret = 0;
1643                         if (bdev->bd_disk->fops->open)
1644                                 ret = bdev->bd_disk->fops->open(bdev, mode);
1645                         /* the same as first opener case, read comment there */
1646                         if (bdev->bd_invalidated &&
1647                             (!ret || ret == -ENOMEDIUM))
1648                                 bdev_disk_changed(bdev, ret == -ENOMEDIUM);
1649                         if (ret)
1650                                 goto out_unlock_bdev;
1651                 }
1652         }
1653         bdev->bd_openers++;
1654         if (for_part)
1655                 bdev->bd_part_count++;
1656         mutex_unlock(&bdev->bd_mutex);
1657         disk_unblock_events(disk);
1658         /* only one opener holds refs to the module and disk */
1659         if (!first_open)
1660                 put_disk_and_module(disk);
1661         return 0;
1662
1663  out_clear:
1664         disk_put_part(bdev->bd_part);
1665         bdev->bd_disk = NULL;
1666         bdev->bd_part = NULL;
1667         bdev->bd_queue = NULL;
1668         if (bdev != bdev->bd_contains)
1669                 __blkdev_put(bdev->bd_contains, mode, 1);
1670         bdev->bd_contains = NULL;
1671  out_unlock_bdev:
1672         mutex_unlock(&bdev->bd_mutex);
1673         disk_unblock_events(disk);
1674         put_disk_and_module(disk);
1675  out:
1676
1677         return ret;
1678 }
1679
1680 /**
1681  * blkdev_get - open a block device
1682  * @bdev: block_device to open
1683  * @mode: FMODE_* mask
1684  * @holder: exclusive holder identifier
1685  *
1686  * Open @bdev with @mode.  If @mode includes %FMODE_EXCL, @bdev is
1687  * open with exclusive access.  Specifying %FMODE_EXCL with %NULL
1688  * @holder is invalid.  Exclusive opens may nest for the same @holder.
1689  *
1690  * On success, the reference count of @bdev is unchanged.  On failure,
1691  * @bdev is put.
1692  *
1693  * CONTEXT:
1694  * Might sleep.
1695  *
1696  * RETURNS:
1697  * 0 on success, -errno on failure.
1698  */
1699 int blkdev_get(struct block_device *bdev, fmode_t mode, void *holder)
1700 {
1701         struct block_device *whole = NULL;
1702         int res;
1703
1704         WARN_ON_ONCE((mode & FMODE_EXCL) && !holder);
1705
1706         if ((mode & FMODE_EXCL) && holder) {
1707                 whole = bd_start_claiming(bdev, holder);
1708                 if (IS_ERR(whole)) {
1709                         bdput(bdev);
1710                         return PTR_ERR(whole);
1711                 }
1712         }
1713
1714         res = __blkdev_get(bdev, mode, 0);
1715
1716         if (whole) {
1717                 struct gendisk *disk = whole->bd_disk;
1718
1719                 /* finish claiming */
1720                 mutex_lock(&bdev->bd_mutex);
1721                 if (!res)
1722                         bd_finish_claiming(bdev, whole, holder);
1723                 else
1724                         bd_abort_claiming(bdev, whole, holder);
1725                 /*
1726                  * Block event polling for write claims if requested.  Any
1727                  * write holder makes the write_holder state stick until
1728                  * all are released.  This is good enough and tracking
1729                  * individual writeable reference is too fragile given the
1730                  * way @mode is used in blkdev_get/put().
1731                  */
1732                 if (!res && (mode & FMODE_WRITE) && !bdev->bd_write_holder &&
1733                     (disk->flags & GENHD_FL_BLOCK_EVENTS_ON_EXCL_WRITE)) {
1734                         bdev->bd_write_holder = true;
1735                         disk_block_events(disk);
1736                 }
1737
1738                 mutex_unlock(&bdev->bd_mutex);
1739                 bdput(whole);
1740         }
1741
1742         if (res)
1743                 bdput(bdev);
1744
1745         return res;
1746 }
1747 EXPORT_SYMBOL(blkdev_get);
1748
1749 /**
1750  * blkdev_get_by_path - open a block device by name
1751  * @path: path to the block device to open
1752  * @mode: FMODE_* mask
1753  * @holder: exclusive holder identifier
1754  *
1755  * Open the blockdevice described by the device file at @path.  @mode
1756  * and @holder are identical to blkdev_get().
1757  *
1758  * On success, the returned block_device has reference count of one.
1759  *
1760  * CONTEXT:
1761  * Might sleep.
1762  *
1763  * RETURNS:
1764  * Pointer to block_device on success, ERR_PTR(-errno) on failure.
1765  */
1766 struct block_device *blkdev_get_by_path(const char *path, fmode_t mode,
1767                                         void *holder)
1768 {
1769         struct block_device *bdev;
1770         int err;
1771
1772         bdev = lookup_bdev(path);
1773         if (IS_ERR(bdev))
1774                 return bdev;
1775
1776         err = blkdev_get(bdev, mode, holder);
1777         if (err)
1778                 return ERR_PTR(err);
1779
1780         if ((mode & FMODE_WRITE) && bdev_read_only(bdev)) {
1781                 blkdev_put(bdev, mode);
1782                 return ERR_PTR(-EACCES);
1783         }
1784
1785         return bdev;
1786 }
1787 EXPORT_SYMBOL(blkdev_get_by_path);
1788
1789 /**
1790  * blkdev_get_by_dev - open a block device by device number
1791  * @dev: device number of block device to open
1792  * @mode: FMODE_* mask
1793  * @holder: exclusive holder identifier
1794  *
1795  * Open the blockdevice described by device number @dev.  @mode and
1796  * @holder are identical to blkdev_get().
1797  *
1798  * Use it ONLY if you really do not have anything better - i.e. when
1799  * you are behind a truly sucky interface and all you are given is a
1800  * device number.  _Never_ to be used for internal purposes.  If you
1801  * ever need it - reconsider your API.
1802  *
1803  * On success, the returned block_device has reference count of one.
1804  *
1805  * CONTEXT:
1806  * Might sleep.
1807  *
1808  * RETURNS:
1809  * Pointer to block_device on success, ERR_PTR(-errno) on failure.
1810  */
1811 struct block_device *blkdev_get_by_dev(dev_t dev, fmode_t mode, void *holder)
1812 {
1813         struct block_device *bdev;
1814         int err;
1815
1816         bdev = bdget(dev);
1817         if (!bdev)
1818                 return ERR_PTR(-ENOMEM);
1819
1820         err = blkdev_get(bdev, mode, holder);
1821         if (err)
1822                 return ERR_PTR(err);
1823
1824         return bdev;
1825 }
1826 EXPORT_SYMBOL(blkdev_get_by_dev);
1827
1828 static int blkdev_open(struct inode * inode, struct file * filp)
1829 {
1830         struct block_device *bdev;
1831
1832         /*
1833          * Preserve backwards compatibility and allow large file access
1834          * even if userspace doesn't ask for it explicitly. Some mkfs
1835          * binary needs it. We might want to drop this workaround
1836          * during an unstable branch.
1837          */
1838         filp->f_flags |= O_LARGEFILE;
1839
1840         filp->f_mode |= FMODE_NOWAIT;
1841
1842         if (filp->f_flags & O_NDELAY)
1843                 filp->f_mode |= FMODE_NDELAY;
1844         if (filp->f_flags & O_EXCL)
1845                 filp->f_mode |= FMODE_EXCL;
1846         if ((filp->f_flags & O_ACCMODE) == 3)
1847                 filp->f_mode |= FMODE_WRITE_IOCTL;
1848
1849         bdev = bd_acquire(inode);
1850         if (bdev == NULL)
1851                 return -ENOMEM;
1852
1853         filp->f_mapping = bdev->bd_inode->i_mapping;
1854         filp->f_wb_err = filemap_sample_wb_err(filp->f_mapping);
1855
1856         return blkdev_get(bdev, filp->f_mode, filp);
1857 }
1858
1859 static void __blkdev_put(struct block_device *bdev, fmode_t mode, int for_part)
1860 {
1861         struct gendisk *disk = bdev->bd_disk;
1862         struct block_device *victim = NULL;
1863
1864         /*
1865          * Sync early if it looks like we're the last one.  If someone else
1866          * opens the block device between now and the decrement of bd_openers
1867          * then we did a sync that we didn't need to, but that's not the end
1868          * of the world and we want to avoid long (could be several minute)
1869          * syncs while holding the mutex.
1870          */
1871         if (bdev->bd_openers == 1)
1872                 sync_blockdev(bdev);
1873
1874         mutex_lock_nested(&bdev->bd_mutex, for_part);
1875         if (for_part)
1876                 bdev->bd_part_count--;
1877
1878         if (!--bdev->bd_openers) {
1879                 WARN_ON_ONCE(bdev->bd_holders);
1880                 sync_blockdev(bdev);
1881                 kill_bdev(bdev);
1882
1883                 bdev_write_inode(bdev);
1884         }
1885         if (bdev->bd_contains == bdev) {
1886                 if (disk->fops->release)
1887                         disk->fops->release(disk, mode);
1888         }
1889         if (!bdev->bd_openers) {
1890                 disk_put_part(bdev->bd_part);
1891                 bdev->bd_part = NULL;
1892                 bdev->bd_disk = NULL;
1893                 if (bdev != bdev->bd_contains)
1894                         victim = bdev->bd_contains;
1895                 bdev->bd_contains = NULL;
1896
1897                 put_disk_and_module(disk);
1898         }
1899         mutex_unlock(&bdev->bd_mutex);
1900         bdput(bdev);
1901         if (victim)
1902                 __blkdev_put(victim, mode, 1);
1903 }
1904
1905 void blkdev_put(struct block_device *bdev, fmode_t mode)
1906 {
1907         mutex_lock(&bdev->bd_mutex);
1908
1909         if (mode & FMODE_EXCL) {
1910                 bool bdev_free;
1911
1912                 /*
1913                  * Release a claim on the device.  The holder fields
1914                  * are protected with bdev_lock.  bd_mutex is to
1915                  * synchronize disk_holder unlinking.
1916                  */
1917                 spin_lock(&bdev_lock);
1918
1919                 WARN_ON_ONCE(--bdev->bd_holders < 0);
1920                 WARN_ON_ONCE(--bdev->bd_contains->bd_holders < 0);
1921
1922                 /* bd_contains might point to self, check in a separate step */
1923                 if ((bdev_free = !bdev->bd_holders))
1924                         bdev->bd_holder = NULL;
1925                 if (!bdev->bd_contains->bd_holders)
1926                         bdev->bd_contains->bd_holder = NULL;
1927
1928                 spin_unlock(&bdev_lock);
1929
1930                 /*
1931                  * If this was the last claim, remove holder link and
1932                  * unblock evpoll if it was a write holder.
1933                  */
1934                 if (bdev_free && bdev->bd_write_holder) {
1935                         disk_unblock_events(bdev->bd_disk);
1936                         bdev->bd_write_holder = false;
1937                 }
1938         }
1939
1940         /*
1941          * Trigger event checking and tell drivers to flush MEDIA_CHANGE
1942          * event.  This is to ensure detection of media removal commanded
1943          * from userland - e.g. eject(1).
1944          */
1945         disk_flush_events(bdev->bd_disk, DISK_EVENT_MEDIA_CHANGE);
1946
1947         mutex_unlock(&bdev->bd_mutex);
1948
1949         __blkdev_put(bdev, mode, 0);
1950 }
1951 EXPORT_SYMBOL(blkdev_put);
1952
1953 static int blkdev_close(struct inode * inode, struct file * filp)
1954 {
1955         struct block_device *bdev = I_BDEV(bdev_file_inode(filp));
1956         blkdev_put(bdev, filp->f_mode);
1957         return 0;
1958 }
1959
1960 static long block_ioctl(struct file *file, unsigned cmd, unsigned long arg)
1961 {
1962         struct block_device *bdev = I_BDEV(bdev_file_inode(file));
1963         fmode_t mode = file->f_mode;
1964
1965         /*
1966          * O_NDELAY can be altered using fcntl(.., F_SETFL, ..), so we have
1967          * to updated it before every ioctl.
1968          */
1969         if (file->f_flags & O_NDELAY)
1970                 mode |= FMODE_NDELAY;
1971         else
1972                 mode &= ~FMODE_NDELAY;
1973
1974         return blkdev_ioctl(bdev, mode, cmd, arg);
1975 }
1976
1977 /*
1978  * Write data to the block device.  Only intended for the block device itself
1979  * and the raw driver which basically is a fake block device.
1980  *
1981  * Does not take i_mutex for the write and thus is not for general purpose
1982  * use.
1983  */
1984 ssize_t blkdev_write_iter(struct kiocb *iocb, struct iov_iter *from)
1985 {
1986         struct file *file = iocb->ki_filp;
1987         struct inode *bd_inode = bdev_file_inode(file);
1988         loff_t size = i_size_read(bd_inode);
1989         struct blk_plug plug;
1990         size_t shorted = 0;
1991         ssize_t ret;
1992
1993         if (bdev_read_only(I_BDEV(bd_inode)))
1994                 return -EPERM;
1995
1996         /* uswsusp needs write permission to the swap */
1997         if (IS_SWAPFILE(bd_inode) && !hibernation_available())
1998                 return -ETXTBSY;
1999
2000         if (!iov_iter_count(from))
2001                 return 0;
2002
2003         if (iocb->ki_pos >= size)
2004                 return -ENOSPC;
2005
2006         if ((iocb->ki_flags & (IOCB_NOWAIT | IOCB_DIRECT)) == IOCB_NOWAIT)
2007                 return -EOPNOTSUPP;
2008
2009         size -= iocb->ki_pos;
2010         if (iov_iter_count(from) > size) {
2011                 shorted = iov_iter_count(from) - size;
2012                 iov_iter_truncate(from, size);
2013         }
2014
2015         blk_start_plug(&plug);
2016         ret = __generic_file_write_iter(iocb, from);
2017         if (ret > 0)
2018                 ret = generic_write_sync(iocb, ret);
2019         iov_iter_reexpand(from, iov_iter_count(from) + shorted);
2020         blk_finish_plug(&plug);
2021         return ret;
2022 }
2023 EXPORT_SYMBOL_GPL(blkdev_write_iter);
2024
2025 ssize_t blkdev_read_iter(struct kiocb *iocb, struct iov_iter *to)
2026 {
2027         struct file *file = iocb->ki_filp;
2028         struct inode *bd_inode = bdev_file_inode(file);
2029         loff_t size = i_size_read(bd_inode);
2030         loff_t pos = iocb->ki_pos;
2031         size_t shorted = 0;
2032         ssize_t ret;
2033
2034         if (pos >= size)
2035                 return 0;
2036
2037         size -= pos;
2038         if (iov_iter_count(to) > size) {
2039                 shorted = iov_iter_count(to) - size;
2040                 iov_iter_truncate(to, size);
2041         }
2042
2043         ret = generic_file_read_iter(iocb, to);
2044         iov_iter_reexpand(to, iov_iter_count(to) + shorted);
2045         return ret;
2046 }
2047 EXPORT_SYMBOL_GPL(blkdev_read_iter);
2048
2049 /*
2050  * Try to release a page associated with block device when the system
2051  * is under memory pressure.
2052  */
2053 static int blkdev_releasepage(struct page *page, gfp_t wait)
2054 {
2055         struct super_block *super = BDEV_I(page->mapping->host)->bdev.bd_super;
2056
2057         if (super && super->s_op->bdev_try_to_free_page)
2058                 return super->s_op->bdev_try_to_free_page(super, page, wait);
2059
2060         return try_to_free_buffers(page);
2061 }
2062
2063 static int blkdev_writepages(struct address_space *mapping,
2064                              struct writeback_control *wbc)
2065 {
2066         return generic_writepages(mapping, wbc);
2067 }
2068
2069 static const struct address_space_operations def_blk_aops = {
2070         .readpage       = blkdev_readpage,
2071         .readpages      = blkdev_readpages,
2072         .writepage      = blkdev_writepage,
2073         .write_begin    = blkdev_write_begin,
2074         .write_end      = blkdev_write_end,
2075         .writepages     = blkdev_writepages,
2076         .releasepage    = blkdev_releasepage,
2077         .direct_IO      = blkdev_direct_IO,
2078         .migratepage    = buffer_migrate_page_norefs,
2079         .is_dirty_writeback = buffer_check_dirty_writeback,
2080 };
2081
2082 #define BLKDEV_FALLOC_FL_SUPPORTED                                      \
2083                 (FALLOC_FL_KEEP_SIZE | FALLOC_FL_PUNCH_HOLE |           \
2084                  FALLOC_FL_ZERO_RANGE | FALLOC_FL_NO_HIDE_STALE)
2085
2086 static long blkdev_fallocate(struct file *file, int mode, loff_t start,
2087                              loff_t len)
2088 {
2089         struct block_device *bdev = I_BDEV(bdev_file_inode(file));
2090         struct address_space *mapping;
2091         loff_t end = start + len - 1;
2092         loff_t isize;
2093         int error;
2094
2095         /* Fail if we don't recognize the flags. */
2096         if (mode & ~BLKDEV_FALLOC_FL_SUPPORTED)
2097                 return -EOPNOTSUPP;
2098
2099         /* Don't go off the end of the device. */
2100         isize = i_size_read(bdev->bd_inode);
2101         if (start >= isize)
2102                 return -EINVAL;
2103         if (end >= isize) {
2104                 if (mode & FALLOC_FL_KEEP_SIZE) {
2105                         len = isize - start;
2106                         end = start + len - 1;
2107                 } else
2108                         return -EINVAL;
2109         }
2110
2111         /*
2112          * Don't allow IO that isn't aligned to logical block size.
2113          */
2114         if ((start | len) & (bdev_logical_block_size(bdev) - 1))
2115                 return -EINVAL;
2116
2117         /* Invalidate the page cache, including dirty pages. */
2118         mapping = bdev->bd_inode->i_mapping;
2119         truncate_inode_pages_range(mapping, start, end);
2120
2121         switch (mode) {
2122         case FALLOC_FL_ZERO_RANGE:
2123         case FALLOC_FL_ZERO_RANGE | FALLOC_FL_KEEP_SIZE:
2124                 error = blkdev_issue_zeroout(bdev, start >> 9, len >> 9,
2125                                             GFP_KERNEL, BLKDEV_ZERO_NOUNMAP);
2126                 break;
2127         case FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE:
2128                 error = blkdev_issue_zeroout(bdev, start >> 9, len >> 9,
2129                                              GFP_KERNEL, BLKDEV_ZERO_NOFALLBACK);
2130                 break;
2131         case FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE | FALLOC_FL_NO_HIDE_STALE:
2132                 error = blkdev_issue_discard(bdev, start >> 9, len >> 9,
2133                                              GFP_KERNEL, 0);
2134                 break;
2135         default:
2136                 return -EOPNOTSUPP;
2137         }
2138         if (error)
2139                 return error;
2140
2141         /*
2142          * Invalidate again; if someone wandered in and dirtied a page,
2143          * the caller will be given -EBUSY.  The third argument is
2144          * inclusive, so the rounding here is safe.
2145          */
2146         return invalidate_inode_pages2_range(mapping,
2147                                              start >> PAGE_SHIFT,
2148                                              end >> PAGE_SHIFT);
2149 }
2150
2151 const struct file_operations def_blk_fops = {
2152         .open           = blkdev_open,
2153         .release        = blkdev_close,
2154         .llseek         = block_llseek,
2155         .read_iter      = blkdev_read_iter,
2156         .write_iter     = blkdev_write_iter,
2157         .iopoll         = blkdev_iopoll,
2158         .mmap           = generic_file_mmap,
2159         .fsync          = blkdev_fsync,
2160         .unlocked_ioctl = block_ioctl,
2161 #ifdef CONFIG_COMPAT
2162         .compat_ioctl   = compat_blkdev_ioctl,
2163 #endif
2164         .splice_read    = generic_file_splice_read,
2165         .splice_write   = iter_file_splice_write,
2166         .fallocate      = blkdev_fallocate,
2167 };
2168
2169 int ioctl_by_bdev(struct block_device *bdev, unsigned cmd, unsigned long arg)
2170 {
2171         int res;
2172         mm_segment_t old_fs = get_fs();
2173         set_fs(KERNEL_DS);
2174         res = blkdev_ioctl(bdev, 0, cmd, arg);
2175         set_fs(old_fs);
2176         return res;
2177 }
2178
2179 EXPORT_SYMBOL(ioctl_by_bdev);
2180
2181 /**
2182  * lookup_bdev  - lookup a struct block_device by name
2183  * @pathname:   special file representing the block device
2184  *
2185  * Get a reference to the blockdevice at @pathname in the current
2186  * namespace if possible and return it.  Return ERR_PTR(error)
2187  * otherwise.
2188  */
2189 struct block_device *lookup_bdev(const char *pathname)
2190 {
2191         struct block_device *bdev;
2192         struct inode *inode;
2193         struct path path;
2194         int error;
2195
2196         if (!pathname || !*pathname)
2197                 return ERR_PTR(-EINVAL);
2198
2199         error = kern_path(pathname, LOOKUP_FOLLOW, &path);
2200         if (error)
2201                 return ERR_PTR(error);
2202
2203         inode = d_backing_inode(path.dentry);
2204         error = -ENOTBLK;
2205         if (!S_ISBLK(inode->i_mode))
2206                 goto fail;
2207         error = -EACCES;
2208         if (!may_open_dev(&path))
2209                 goto fail;
2210         error = -ENOMEM;
2211         bdev = bd_acquire(inode);
2212         if (!bdev)
2213                 goto fail;
2214 out:
2215         path_put(&path);
2216         return bdev;
2217 fail:
2218         bdev = ERR_PTR(error);
2219         goto out;
2220 }
2221 EXPORT_SYMBOL(lookup_bdev);
2222
2223 int __invalidate_device(struct block_device *bdev, bool kill_dirty)
2224 {
2225         struct super_block *sb = get_super(bdev);
2226         int res = 0;
2227
2228         if (sb) {
2229                 /*
2230                  * no need to lock the super, get_super holds the
2231                  * read mutex so the filesystem cannot go away
2232                  * under us (->put_super runs with the write lock
2233                  * hold).
2234                  */
2235                 shrink_dcache_sb(sb);
2236                 res = invalidate_inodes(sb, kill_dirty);
2237                 drop_super(sb);
2238         }
2239         invalidate_bdev(bdev);
2240         return res;
2241 }
2242 EXPORT_SYMBOL(__invalidate_device);
2243
2244 void iterate_bdevs(void (*func)(struct block_device *, void *), void *arg)
2245 {
2246         struct inode *inode, *old_inode = NULL;
2247
2248         spin_lock(&blockdev_superblock->s_inode_list_lock);
2249         list_for_each_entry(inode, &blockdev_superblock->s_inodes, i_sb_list) {
2250                 struct address_space *mapping = inode->i_mapping;
2251                 struct block_device *bdev;
2252
2253                 spin_lock(&inode->i_lock);
2254                 if (inode->i_state & (I_FREEING|I_WILL_FREE|I_NEW) ||
2255                     mapping->nrpages == 0) {
2256                         spin_unlock(&inode->i_lock);
2257                         continue;
2258                 }
2259                 __iget(inode);
2260                 spin_unlock(&inode->i_lock);
2261                 spin_unlock(&blockdev_superblock->s_inode_list_lock);
2262                 /*
2263                  * We hold a reference to 'inode' so it couldn't have been
2264                  * removed from s_inodes list while we dropped the
2265                  * s_inode_list_lock  We cannot iput the inode now as we can
2266                  * be holding the last reference and we cannot iput it under
2267                  * s_inode_list_lock. So we keep the reference and iput it
2268                  * later.
2269                  */
2270                 iput(old_inode);
2271                 old_inode = inode;
2272                 bdev = I_BDEV(inode);
2273
2274                 mutex_lock(&bdev->bd_mutex);
2275                 if (bdev->bd_openers)
2276                         func(bdev, arg);
2277                 mutex_unlock(&bdev->bd_mutex);
2278
2279                 spin_lock(&blockdev_superblock->s_inode_list_lock);
2280         }
2281         spin_unlock(&blockdev_superblock->s_inode_list_lock);
2282         iput(old_inode);
2283 }