Linux Audio

Check our new training course

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