Linux Audio

Check our new training course

Loading...
v3.1
   1/*
   2 * Copyright (c) 2000-2005 Silicon Graphics, Inc.
   3 * All Rights Reserved.
   4 *
   5 * This program is free software; you can redistribute it and/or
   6 * modify it under the terms of the GNU General Public License as
   7 * published by the Free Software Foundation.
   8 *
   9 * This program is distributed in the hope that it would be useful,
  10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
  11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  12 * GNU General Public License for more details.
  13 *
  14 * You should have received a copy of the GNU General Public License
  15 * along with this program; if not, write the Free Software Foundation,
  16 * Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  17 */
  18#include "xfs.h"
  19#include "xfs_bit.h"
  20#include "xfs_log.h"
  21#include "xfs_inum.h"
  22#include "xfs_sb.h"
  23#include "xfs_ag.h"
  24#include "xfs_trans.h"
  25#include "xfs_mount.h"
  26#include "xfs_bmap_btree.h"
  27#include "xfs_dinode.h"
  28#include "xfs_inode.h"
 
 
  29#include "xfs_alloc.h"
  30#include "xfs_error.h"
  31#include "xfs_rw.h"
  32#include "xfs_iomap.h"
  33#include "xfs_vnodeops.h"
  34#include "xfs_trace.h"
  35#include "xfs_bmap.h"
 
 
 
  36#include <linux/gfp.h>
  37#include <linux/mpage.h>
  38#include <linux/pagevec.h>
  39#include <linux/writeback.h>
  40
  41
  42/*
  43 * Prime number of hash buckets since address is used as the key.
  44 */
  45#define NVSYNC		37
  46#define to_ioend_wq(v)	(&xfs_ioend_wq[((unsigned long)v) % NVSYNC])
  47static wait_queue_head_t xfs_ioend_wq[NVSYNC];
  48
  49void __init
  50xfs_ioend_init(void)
  51{
  52	int i;
  53
  54	for (i = 0; i < NVSYNC; i++)
  55		init_waitqueue_head(&xfs_ioend_wq[i]);
  56}
  57
  58void
  59xfs_ioend_wait(
  60	xfs_inode_t	*ip)
  61{
  62	wait_queue_head_t *wq = to_ioend_wq(ip);
  63
  64	wait_event(*wq, (atomic_read(&ip->i_iocount) == 0));
  65}
  66
  67STATIC void
  68xfs_ioend_wake(
  69	xfs_inode_t	*ip)
  70{
  71	if (atomic_dec_and_test(&ip->i_iocount))
  72		wake_up(to_ioend_wq(ip));
  73}
  74
  75void
  76xfs_count_page_state(
  77	struct page		*page,
  78	int			*delalloc,
  79	int			*unwritten)
  80{
  81	struct buffer_head	*bh, *head;
  82
  83	*delalloc = *unwritten = 0;
  84
  85	bh = head = page_buffers(page);
  86	do {
  87		if (buffer_unwritten(bh))
  88			(*unwritten) = 1;
  89		else if (buffer_delay(bh))
  90			(*delalloc) = 1;
  91	} while ((bh = bh->b_this_page) != head);
  92}
  93
  94STATIC struct block_device *
  95xfs_find_bdev_for_inode(
  96	struct inode		*inode)
  97{
  98	struct xfs_inode	*ip = XFS_I(inode);
  99	struct xfs_mount	*mp = ip->i_mount;
 100
 101	if (XFS_IS_REALTIME_INODE(ip))
 102		return mp->m_rtdev_targp->bt_bdev;
 103	else
 104		return mp->m_ddev_targp->bt_bdev;
 105}
 106
 107/*
 108 * We're now finished for good with this ioend structure.
 109 * Update the page state via the associated buffer_heads,
 110 * release holds on the inode and bio, and finally free
 111 * up memory.  Do not use the ioend after this.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 112 */
 113STATIC void
 114xfs_destroy_ioend(
 115	xfs_ioend_t		*ioend)
 
 116{
 117	struct buffer_head	*bh, *next;
 118	struct xfs_inode	*ip = XFS_I(ioend->io_inode);
 
 119
 120	for (bh = ioend->io_buffer_head; bh; bh = next) {
 121		next = bh->b_private;
 122		bh->b_end_io(bh, !ioend->io_error);
 123	}
 124
 125	/*
 126	 * Volume managers supporting multiple paths can send back ENODEV
 127	 * when the final path disappears.  In this case continuing to fill
 128	 * the page cache with dirty data which cannot be written out is
 129	 * evil, so prevent that.
 130	 */
 131	if (unlikely(ioend->io_error == -ENODEV)) {
 132		xfs_do_force_shutdown(ip->i_mount, SHUTDOWN_DEVICE_REQ,
 133				      __FILE__, __LINE__);
 134	}
 135
 136	xfs_ioend_wake(ip);
 137	mempool_free(ioend, xfs_ioend_pool);
 
 
 
 
 138}
 139
 140/*
 141 * If the end of the current ioend is beyond the current EOF,
 142 * return the new EOF value, otherwise zero.
 143 */
 144STATIC xfs_fsize_t
 145xfs_ioend_new_eof(
 146	xfs_ioend_t		*ioend)
 147{
 148	xfs_inode_t		*ip = XFS_I(ioend->io_inode);
 149	xfs_fsize_t		isize;
 150	xfs_fsize_t		bsize;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 151
 152	bsize = ioend->io_offset + ioend->io_size;
 153	isize = MAX(ip->i_size, ip->i_new_size);
 154	isize = MIN(isize, bsize);
 155	return isize > ip->i_d.di_size ? isize : 0;
 
 
 
 
 
 
 
 156}
 157
 158/*
 159 * Update on-disk file size now that data has been written to disk.  The
 160 * current in-memory file size is i_size.  If a write is beyond eof i_new_size
 161 * will be the intended file size until i_size is updated.  If this write does
 162 * not extend all the way to the valid file size then restrict this update to
 163 * the end of the write.
 164 *
 165 * This function does not block as blocking on the inode lock in IO completion
 166 * can lead to IO completion order dependency deadlocks.. If it can't get the
 167 * inode ilock it will return EAGAIN. Callers must handle this.
 168 */
 169STATIC int
 170xfs_setfilesize(
 171	xfs_ioend_t		*ioend)
 
 
 
 172{
 173	xfs_inode_t		*ip = XFS_I(ioend->io_inode);
 174	xfs_fsize_t		isize;
 175
 176	if (unlikely(ioend->io_error))
 
 
 
 
 177		return 0;
 
 178
 179	if (!xfs_ilock_nowait(ip, XFS_ILOCK_EXCL))
 180		return EAGAIN;
 181
 182	isize = xfs_ioend_new_eof(ioend);
 183	if (isize) {
 184		trace_xfs_setfilesize(ip, ioend->io_offset, ioend->io_size);
 185		ip->i_d.di_size = isize;
 186		xfs_mark_inode_dirty(ip);
 187	}
 188
 189	xfs_iunlock(ip, XFS_ILOCK_EXCL);
 190	return 0;
 191}
 192
 193/*
 194 * Schedule IO completion handling on the final put of an ioend.
 195 */
 196STATIC void
 197xfs_finish_ioend(
 198	struct xfs_ioend	*ioend)
 199{
 200	if (atomic_dec_and_test(&ioend->io_remaining)) {
 201		if (ioend->io_type == IO_UNWRITTEN)
 202			queue_work(xfsconvertd_workqueue, &ioend->io_work);
 203		else
 204			queue_work(xfsdatad_workqueue, &ioend->io_work);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 205	}
 
 
 206}
 207
 208/*
 209 * IO write completion.
 210 */
 211STATIC void
 212xfs_end_io(
 213	struct work_struct *work)
 214{
 215	xfs_ioend_t	*ioend = container_of(work, xfs_ioend_t, io_work);
 216	struct xfs_inode *ip = XFS_I(ioend->io_inode);
 217	int		error = 0;
 
 
 
 218
 219	/*
 220	 * For unwritten extents we need to issue transactions to convert a
 221	 * range to normal written extens after the data I/O has finished.
 222	 */
 223	if (ioend->io_type == IO_UNWRITTEN &&
 224	    likely(!ioend->io_error && !XFS_FORCED_SHUTDOWN(ip->i_mount))) {
 225
 226		error = xfs_iomap_write_unwritten(ip, ioend->io_offset,
 227						 ioend->io_size);
 228		if (error)
 229			ioend->io_error = error;
 230	}
 231
 232	/*
 233	 * We might have to update the on-disk file size after extending
 234	 * writes.
 235	 */
 236	error = xfs_setfilesize(ioend);
 237	ASSERT(!error || error == EAGAIN);
 
 
 
 
 
 
 
 238
 239	/*
 240	 * If we didn't complete processing of the ioend, requeue it to the
 241	 * tail of the workqueue for another attempt later. Otherwise destroy
 242	 * it.
 243	 */
 244	if (error == EAGAIN) {
 245		atomic_inc(&ioend->io_remaining);
 246		xfs_finish_ioend(ioend);
 247		/* ensure we don't spin on blocked ioends */
 248		delay(1);
 249	} else {
 250		if (ioend->io_iocb)
 251			aio_complete(ioend->io_iocb, ioend->io_result, 0);
 252		xfs_destroy_ioend(ioend);
 253	}
 
 
 
 
 
 
 254}
 255
 256/*
 257 * Call IO completion handling in caller context on the final put of an ioend.
 258 */
 259STATIC void
 260xfs_finish_ioend_sync(
 261	struct xfs_ioend	*ioend)
 262{
 263	if (atomic_dec_and_test(&ioend->io_remaining))
 264		xfs_end_io(&ioend->io_work);
 265}
 266
 267/*
 268 * Allocate and initialise an IO completion structure.
 269 * We need to track unwritten extent write completion here initially.
 270 * We'll need to extend this for updating the ondisk inode size later
 271 * (vs. incore size).
 272 */
 273STATIC xfs_ioend_t *
 274xfs_alloc_ioend(
 275	struct inode		*inode,
 276	unsigned int		type)
 277{
 278	xfs_ioend_t		*ioend;
 279
 280	ioend = mempool_alloc(xfs_ioend_pool, GFP_NOFS);
 281
 282	/*
 283	 * Set the count to 1 initially, which will prevent an I/O
 284	 * completion callback from happening before we have started
 285	 * all the I/O from calling the completion routine too early.
 286	 */
 287	atomic_set(&ioend->io_remaining, 1);
 288	ioend->io_error = 0;
 289	ioend->io_list = NULL;
 290	ioend->io_type = type;
 291	ioend->io_inode = inode;
 292	ioend->io_buffer_head = NULL;
 293	ioend->io_buffer_tail = NULL;
 294	atomic_inc(&XFS_I(ioend->io_inode)->i_iocount);
 295	ioend->io_offset = 0;
 296	ioend->io_size = 0;
 297	ioend->io_iocb = NULL;
 298	ioend->io_result = 0;
 299
 300	INIT_WORK(&ioend->io_work, xfs_end_io);
 301	return ioend;
 302}
 303
 304STATIC int
 305xfs_map_blocks(
 306	struct inode		*inode,
 307	loff_t			offset,
 308	struct xfs_bmbt_irec	*imap,
 309	int			type,
 310	int			nonblocking)
 311{
 312	struct xfs_inode	*ip = XFS_I(inode);
 313	struct xfs_mount	*mp = ip->i_mount;
 314	ssize_t			count = 1 << inode->i_blkbits;
 315	xfs_fileoff_t		offset_fsb, end_fsb;
 316	int			error = 0;
 317	int			bmapi_flags = XFS_BMAPI_ENTIRE;
 318	int			nimaps = 1;
 319
 320	if (XFS_FORCED_SHUTDOWN(mp))
 321		return -XFS_ERROR(EIO);
 322
 323	if (type == IO_UNWRITTEN)
 
 324		bmapi_flags |= XFS_BMAPI_IGSTATE;
 325
 326	if (!xfs_ilock_nowait(ip, XFS_ILOCK_SHARED)) {
 327		if (nonblocking)
 328			return -XFS_ERROR(EAGAIN);
 329		xfs_ilock(ip, XFS_ILOCK_SHARED);
 330	}
 331
 332	ASSERT(ip->i_d.di_format != XFS_DINODE_FMT_BTREE ||
 333	       (ip->i_df.if_flags & XFS_IFEXTENTS));
 334	ASSERT(offset <= mp->m_maxioffset);
 335
 336	if (offset + count > mp->m_maxioffset)
 337		count = mp->m_maxioffset - offset;
 338	end_fsb = XFS_B_TO_FSB(mp, (xfs_ufsize_t)offset + count);
 339	offset_fsb = XFS_B_TO_FSBT(mp, offset);
 340	error = xfs_bmapi(NULL, ip, offset_fsb, end_fsb - offset_fsb,
 341			  bmapi_flags,  NULL, 0, imap, &nimaps, NULL);
 
 
 
 
 
 
 
 342	xfs_iunlock(ip, XFS_ILOCK_SHARED);
 343
 344	if (error)
 345		return -XFS_ERROR(error);
 346
 347	if (type == IO_DELALLOC &&
 348	    (!nimaps || isnullstartblock(imap->br_startblock))) {
 349		error = xfs_iomap_write_allocate(ip, offset, count, imap);
 
 350		if (!error)
 351			trace_xfs_map_blocks_alloc(ip, offset, count, type, imap);
 352		return -XFS_ERROR(error);
 353	}
 354
 355#ifdef DEBUG
 356	if (type == IO_UNWRITTEN) {
 357		ASSERT(nimaps);
 358		ASSERT(imap->br_startblock != HOLESTARTBLOCK);
 359		ASSERT(imap->br_startblock != DELAYSTARTBLOCK);
 360	}
 361#endif
 362	if (nimaps)
 363		trace_xfs_map_blocks_found(ip, offset, count, type, imap);
 364	return 0;
 365}
 366
 367STATIC int
 368xfs_imap_valid(
 369	struct inode		*inode,
 370	struct xfs_bmbt_irec	*imap,
 371	xfs_off_t		offset)
 372{
 373	offset >>= inode->i_blkbits;
 374
 375	return offset >= imap->br_startoff &&
 376		offset < imap->br_startoff + imap->br_blockcount;
 377}
 378
 379/*
 380 * BIO completion handler for buffered IO.
 381 */
 382STATIC void
 383xfs_end_bio(
 384	struct bio		*bio,
 385	int			error)
 386{
 387	xfs_ioend_t		*ioend = bio->bi_private;
 388
 389	ASSERT(atomic_read(&bio->bi_cnt) >= 1);
 390	ioend->io_error = test_bit(BIO_UPTODATE, &bio->bi_flags) ? 0 : error;
 391
 392	/* Toss bio and pass work off to an xfsdatad thread */
 393	bio->bi_private = NULL;
 394	bio->bi_end_io = NULL;
 395	bio_put(bio);
 396
 397	xfs_finish_ioend(ioend);
 398}
 399
 400STATIC void
 401xfs_submit_ioend_bio(
 402	struct writeback_control *wbc,
 403	xfs_ioend_t		*ioend,
 404	struct bio		*bio)
 405{
 406	atomic_inc(&ioend->io_remaining);
 407	bio->bi_private = ioend;
 408	bio->bi_end_io = xfs_end_bio;
 409
 410	/*
 411	 * If the I/O is beyond EOF we mark the inode dirty immediately
 412	 * but don't update the inode size until I/O completion.
 413	 */
 414	if (xfs_ioend_new_eof(ioend))
 415		xfs_mark_inode_dirty(XFS_I(ioend->io_inode));
 416
 417	submit_bio(wbc->sync_mode == WB_SYNC_ALL ? WRITE_SYNC : WRITE, bio);
 418}
 419
 420STATIC struct bio *
 421xfs_alloc_ioend_bio(
 422	struct buffer_head	*bh)
 423{
 424	int			nvecs = bio_get_nr_vecs(bh->b_bdev);
 425	struct bio		*bio = bio_alloc(GFP_NOIO, nvecs);
 426
 427	ASSERT(bio->bi_private == NULL);
 428	bio->bi_sector = bh->b_blocknr * (bh->b_size >> 9);
 429	bio->bi_bdev = bh->b_bdev;
 430	return bio;
 431}
 432
 433STATIC void
 434xfs_start_buffer_writeback(
 435	struct buffer_head	*bh)
 436{
 437	ASSERT(buffer_mapped(bh));
 438	ASSERT(buffer_locked(bh));
 439	ASSERT(!buffer_delay(bh));
 440	ASSERT(!buffer_unwritten(bh));
 441
 442	mark_buffer_async_write(bh);
 443	set_buffer_uptodate(bh);
 444	clear_buffer_dirty(bh);
 445}
 446
 447STATIC void
 448xfs_start_page_writeback(
 449	struct page		*page,
 450	int			clear_dirty,
 451	int			buffers)
 452{
 453	ASSERT(PageLocked(page));
 454	ASSERT(!PageWriteback(page));
 455	if (clear_dirty)
 
 
 
 
 
 
 
 
 456		clear_page_dirty_for_io(page);
 457	set_page_writeback(page);
 
 
 
 458	unlock_page(page);
 459	/* If no buffers on the page are to be written, finish it here */
 460	if (!buffers)
 461		end_page_writeback(page);
 462}
 463
 464static inline int bio_add_buffer(struct bio *bio, struct buffer_head *bh)
 465{
 466	return bio_add_page(bio, bh->b_page, bh->b_size, bh_offset(bh));
 467}
 468
 469/*
 470 * Submit all of the bios for all of the ioends we have saved up, covering the
 471 * initial writepage page and also any probed pages.
 472 *
 473 * Because we may have multiple ioends spanning a page, we need to start
 474 * writeback on all the buffers before we submit them for I/O. If we mark the
 475 * buffers as we got, then we can end up with a page that only has buffers
 476 * marked async write and I/O complete on can occur before we mark the other
 477 * buffers async write.
 478 *
 479 * The end result of this is that we trip a bug in end_page_writeback() because
 480 * we call it twice for the one page as the code in end_buffer_async_write()
 481 * assumes that all buffers on the page are started at the same time.
 482 *
 483 * The fix is two passes across the ioend list - one to start writeback on the
 484 * buffer_heads, and then submit them for I/O on the second pass.
 
 
 
 485 */
 486STATIC void
 487xfs_submit_ioend(
 488	struct writeback_control *wbc,
 489	xfs_ioend_t		*ioend)
 
 490{
 491	xfs_ioend_t		*head = ioend;
 492	xfs_ioend_t		*next;
 493	struct buffer_head	*bh;
 494	struct bio		*bio;
 495	sector_t		lastblock = 0;
 
 
 
 
 
 
 
 
 
 
 
 496
 497	/* Pass 1 - start writeback */
 498	do {
 499		next = ioend->io_list;
 500		for (bh = ioend->io_buffer_head; bh; bh = bh->b_private)
 501			xfs_start_buffer_writeback(bh);
 502	} while ((ioend = next) != NULL);
 
 
 
 
 
 503
 504	/* Pass 2 - submit I/O */
 505	ioend = head;
 506	do {
 507		next = ioend->io_list;
 508		bio = NULL;
 509
 510		for (bh = ioend->io_buffer_head; bh; bh = bh->b_private) {
 
 
 
 
 
 
 
 511
 512			if (!bio) {
 513 retry:
 514				bio = xfs_alloc_ioend_bio(bh);
 515			} else if (bh->b_blocknr != lastblock + 1) {
 516				xfs_submit_ioend_bio(wbc, ioend, bio);
 517				goto retry;
 518			}
 
 
 519
 520			if (bio_add_buffer(bio, bh) != bh->b_size) {
 521				xfs_submit_ioend_bio(wbc, ioend, bio);
 522				goto retry;
 523			}
 524
 525			lastblock = bh->b_blocknr;
 526		}
 527		if (bio)
 528			xfs_submit_ioend_bio(wbc, ioend, bio);
 529		xfs_finish_ioend(ioend);
 530	} while ((ioend = next) != NULL);
 
 
 
 
 531}
 532
 533/*
 534 * Cancel submission of all buffer_heads so far in this endio.
 535 * Toss the endio too.  Only ever called for the initial page
 536 * in a writepage request, so only ever one page.
 
 
 537 */
 538STATIC void
 539xfs_cancel_ioend(
 540	xfs_ioend_t		*ioend)
 
 
 541{
 542	xfs_ioend_t		*next;
 543	struct buffer_head	*bh, *next_bh;
 544
 545	do {
 546		next = ioend->io_list;
 547		bh = ioend->io_buffer_head;
 548		do {
 549			next_bh = bh->b_private;
 550			clear_buffer_async_write(bh);
 551			unlock_buffer(bh);
 552		} while ((bh = next_bh) != NULL);
 553
 554		xfs_ioend_wake(XFS_I(ioend->io_inode));
 555		mempool_free(ioend, xfs_ioend_pool);
 556	} while ((ioend = next) != NULL);
 557}
 558
 559/*
 560 * Test to see if we've been building up a completion structure for
 561 * earlier buffers -- if so, we try to append to this ioend if we
 562 * can, otherwise we finish off any current ioend and start another.
 563 * Return true if we've finished the given ioend.
 
 564 */
 565STATIC void
 566xfs_add_to_ioend(
 567	struct inode		*inode,
 568	struct buffer_head	*bh,
 569	xfs_off_t		offset,
 570	unsigned int		type,
 571	xfs_ioend_t		**result,
 572	int			need_ioend)
 573{
 574	xfs_ioend_t		*ioend = *result;
 575
 576	if (!ioend || need_ioend || type != ioend->io_type) {
 577		xfs_ioend_t	*previous = *result;
 578
 579		ioend = xfs_alloc_ioend(inode, type);
 580		ioend->io_offset = offset;
 581		ioend->io_buffer_head = bh;
 582		ioend->io_buffer_tail = bh;
 583		if (previous)
 584			previous->io_list = ioend;
 585		*result = ioend;
 586	} else {
 587		ioend->io_buffer_tail->b_private = bh;
 588		ioend->io_buffer_tail = bh;
 589	}
 590
 591	bh->b_private = NULL;
 592	ioend->io_size += bh->b_size;
 
 
 
 
 
 
 
 
 593}
 594
 595STATIC void
 596xfs_map_buffer(
 597	struct inode		*inode,
 598	struct buffer_head	*bh,
 599	struct xfs_bmbt_irec	*imap,
 600	xfs_off_t		offset)
 601{
 602	sector_t		bn;
 603	struct xfs_mount	*m = XFS_I(inode)->i_mount;
 604	xfs_off_t		iomap_offset = XFS_FSB_TO_B(m, imap->br_startoff);
 605	xfs_daddr_t		iomap_bn = xfs_fsb_to_db(XFS_I(inode), imap->br_startblock);
 606
 607	ASSERT(imap->br_startblock != HOLESTARTBLOCK);
 608	ASSERT(imap->br_startblock != DELAYSTARTBLOCK);
 609
 610	bn = (iomap_bn >> (inode->i_blkbits - BBSHIFT)) +
 611	      ((offset - iomap_offset) >> inode->i_blkbits);
 612
 613	ASSERT(bn || XFS_IS_REALTIME_INODE(XFS_I(inode)));
 614
 615	bh->b_blocknr = bn;
 616	set_buffer_mapped(bh);
 617}
 618
 619STATIC void
 620xfs_map_at_offset(
 621	struct inode		*inode,
 622	struct buffer_head	*bh,
 623	struct xfs_bmbt_irec	*imap,
 624	xfs_off_t		offset)
 625{
 626	ASSERT(imap->br_startblock != HOLESTARTBLOCK);
 627	ASSERT(imap->br_startblock != DELAYSTARTBLOCK);
 628
 629	xfs_map_buffer(inode, bh, imap, offset);
 630	set_buffer_mapped(bh);
 631	clear_buffer_delay(bh);
 632	clear_buffer_unwritten(bh);
 633}
 634
 635/*
 636 * Test if a given page is suitable for writing as part of an unwritten
 637 * or delayed allocate extent.
 
 
 638 */
 639STATIC int
 640xfs_is_delayed_page(
 641	struct page		*page,
 642	unsigned int		type)
 
 643{
 644	if (PageWriteback(page))
 645		return 0;
 646
 647	if (page->mapping && page_has_buffers(page)) {
 648		struct buffer_head	*bh, *head;
 649		int			acceptable = 0;
 650
 651		bh = head = page_buffers(page);
 652		do {
 653			if (buffer_unwritten(bh))
 654				acceptable = (type == IO_UNWRITTEN);
 655			else if (buffer_delay(bh))
 656				acceptable = (type == IO_DELALLOC);
 657			else if (buffer_dirty(bh) && buffer_mapped(bh))
 658				acceptable = (type == IO_OVERWRITE);
 659			else
 660				break;
 661		} while ((bh = bh->b_this_page) != head);
 662
 663		if (acceptable)
 664			return 1;
 665	}
 666
 667	return 0;
 668}
 669
 670/*
 671 * Allocate & map buffers for page given the extent map. Write it out.
 672 * except for the original page of a writepage, this is called on
 673 * delalloc/unwritten pages only, for the original page it is possible
 674 * that the page has no mapping at all.
 675 */
 676STATIC int
 677xfs_convert_page(
 678	struct inode		*inode,
 679	struct page		*page,
 680	loff_t			tindex,
 681	struct xfs_bmbt_irec	*imap,
 682	xfs_ioend_t		**ioendp,
 683	struct writeback_control *wbc)
 684{
 685	struct buffer_head	*bh, *head;
 686	xfs_off_t		end_offset;
 687	unsigned long		p_offset;
 688	unsigned int		type;
 689	int			len, page_dirty;
 690	int			count = 0, done = 0, uptodate = 1;
 691 	xfs_off_t		offset = page_offset(page);
 692
 693	if (page->index != tindex)
 694		goto fail;
 695	if (!trylock_page(page))
 696		goto fail;
 697	if (PageWriteback(page))
 698		goto fail_unlock_page;
 699	if (page->mapping != inode->i_mapping)
 700		goto fail_unlock_page;
 701	if (!xfs_is_delayed_page(page, (*ioendp)->io_type))
 702		goto fail_unlock_page;
 703
 704	/*
 705	 * page_dirty is initially a count of buffers on the page before
 706	 * EOF and is decremented as we move each into a cleanable state.
 707	 *
 708	 * Derivation:
 709	 *
 710	 * End offset is the highest offset that this page should represent.
 711	 * If we are on the last page, (end_offset & (PAGE_CACHE_SIZE - 1))
 712	 * will evaluate non-zero and be less than PAGE_CACHE_SIZE and
 713	 * hence give us the correct page_dirty count. On any other page,
 714	 * it will be zero and in that case we need page_dirty to be the
 715	 * count of buffers on the page.
 716	 */
 717	end_offset = min_t(unsigned long long,
 718			(xfs_off_t)(page->index + 1) << PAGE_CACHE_SHIFT,
 719			i_size_read(inode));
 720
 721	len = 1 << inode->i_blkbits;
 722	p_offset = min_t(unsigned long, end_offset & (PAGE_CACHE_SIZE - 1),
 723					PAGE_CACHE_SIZE);
 724	p_offset = p_offset ? roundup(p_offset, len) : PAGE_CACHE_SIZE;
 725	page_dirty = p_offset / len;
 726
 727	bh = head = page_buffers(page);
 728	do {
 729		if (offset >= end_offset)
 730			break;
 731		if (!buffer_uptodate(bh))
 732			uptodate = 0;
 733		if (!(PageUptodate(page) || buffer_uptodate(bh))) {
 734			done = 1;
 735			continue;
 736		}
 737
 738		if (buffer_unwritten(bh) || buffer_delay(bh) ||
 739		    buffer_mapped(bh)) {
 740			if (buffer_unwritten(bh))
 741				type = IO_UNWRITTEN;
 742			else if (buffer_delay(bh))
 743				type = IO_DELALLOC;
 744			else
 745				type = IO_OVERWRITE;
 746
 747			if (!xfs_imap_valid(inode, imap, offset)) {
 748				done = 1;
 749				continue;
 750			}
 751
 752			lock_buffer(bh);
 753			if (type != IO_OVERWRITE)
 754				xfs_map_at_offset(inode, bh, imap, offset);
 755			xfs_add_to_ioend(inode, bh, offset, type,
 756					 ioendp, done);
 757
 758			page_dirty--;
 759			count++;
 760		} else {
 761			done = 1;
 762		}
 763	} while (offset += len, (bh = bh->b_this_page) != head);
 764
 765	if (uptodate && bh == head)
 766		SetPageUptodate(page);
 767
 768	if (count) {
 769		if (--wbc->nr_to_write <= 0 &&
 770		    wbc->sync_mode == WB_SYNC_NONE)
 771			done = 1;
 772	}
 773	xfs_start_page_writeback(page, !page_dirty, count);
 774
 775	return done;
 776 fail_unlock_page:
 777	unlock_page(page);
 778 fail:
 779	return 1;
 780}
 781
 782/*
 783 * Convert & write out a cluster of pages in the same extent as defined
 784 * by mp and following the start page.
 785 */
 786STATIC void
 787xfs_cluster_write(
 788	struct inode		*inode,
 789	pgoff_t			tindex,
 790	struct xfs_bmbt_irec	*imap,
 791	xfs_ioend_t		**ioendp,
 792	struct writeback_control *wbc,
 793	pgoff_t			tlast)
 794{
 795	struct pagevec		pvec;
 796	int			done = 0, i;
 797
 798	pagevec_init(&pvec, 0);
 799	while (!done && tindex <= tlast) {
 800		unsigned len = min_t(pgoff_t, PAGEVEC_SIZE, tlast - tindex + 1);
 801
 802		if (!pagevec_lookup(&pvec, inode->i_mapping, tindex, len))
 803			break;
 
 804
 805		for (i = 0; i < pagevec_count(&pvec); i++) {
 806			done = xfs_convert_page(inode, pvec.pages[i], tindex++,
 807					imap, ioendp, wbc);
 808			if (done)
 809				break;
 810		}
 811
 812		pagevec_release(&pvec);
 813		cond_resched();
 814	}
 815}
 816
 817STATIC void
 818xfs_vm_invalidatepage(
 819	struct page		*page,
 820	unsigned long		offset)
 
 821{
 822	trace_xfs_invalidatepage(page->mapping->host, page, offset);
 823	block_invalidatepage(page, offset);
 
 824}
 825
 826/*
 827 * If the page has delalloc buffers on it, we need to punch them out before we
 828 * invalidate the page. If we don't, we leave a stale delalloc mapping on the
 829 * inode that can trip a BUG() in xfs_get_blocks() later on if a direct IO read
 830 * is done on that same region - the delalloc extent is returned when none is
 831 * supposed to be there.
 832 *
 833 * We prevent this by truncating away the delalloc regions on the page before
 834 * invalidating it. Because they are delalloc, we can do this without needing a
 835 * transaction. Indeed - if we get ENOSPC errors, we have to be able to do this
 836 * truncation without a transaction as there is no space left for block
 837 * reservation (typically why we see a ENOSPC in writeback).
 838 *
 839 * This is not a performance critical path, so for now just do the punching a
 840 * buffer head at a time.
 841 */
 842STATIC void
 843xfs_aops_discard_page(
 844	struct page		*page)
 845{
 846	struct inode		*inode = page->mapping->host;
 847	struct xfs_inode	*ip = XFS_I(inode);
 848	struct buffer_head	*bh, *head;
 849	loff_t			offset = page_offset(page);
 850
 851	if (!xfs_is_delayed_page(page, IO_DELALLOC))
 852		goto out_invalidate;
 853
 854	if (XFS_FORCED_SHUTDOWN(ip->i_mount))
 855		goto out_invalidate;
 856
 857	xfs_alert(ip->i_mount,
 858		"page discard on page %p, inode 0x%llx, offset %llu.",
 859			page, ip->i_ino, offset);
 860
 861	xfs_ilock(ip, XFS_ILOCK_EXCL);
 862	bh = head = page_buffers(page);
 863	do {
 864		int		error;
 865		xfs_fileoff_t	start_fsb;
 866
 867		if (!buffer_delay(bh))
 868			goto next_buffer;
 869
 870		start_fsb = XFS_B_TO_FSBT(ip->i_mount, offset);
 871		error = xfs_bmap_punch_delalloc_range(ip, start_fsb, 1);
 872		if (error) {
 873			/* something screwed, just bail */
 874			if (!XFS_FORCED_SHUTDOWN(ip->i_mount)) {
 875				xfs_alert(ip->i_mount,
 876			"page discard unable to remove delalloc mapping.");
 877			}
 878			break;
 879		}
 880next_buffer:
 881		offset += 1 << inode->i_blkbits;
 882
 883	} while ((bh = bh->b_this_page) != head);
 884
 885	xfs_iunlock(ip, XFS_ILOCK_EXCL);
 886out_invalidate:
 887	xfs_vm_invalidatepage(page, 0);
 888	return;
 889}
 890
 891/*
 892 * Write out a dirty page.
 893 *
 894 * For delalloc space on the page we need to allocate space and flush it.
 895 * For unwritten space on the page we need to start the conversion to
 896 * regular allocated space.
 897 * For any other dirty buffer heads on the page we should flush them.
 898 */
 899STATIC int
 900xfs_vm_writepage(
 901	struct page		*page,
 902	struct writeback_control *wbc)
 903{
 904	struct inode		*inode = page->mapping->host;
 905	struct buffer_head	*bh, *head;
 906	struct xfs_bmbt_irec	imap;
 907	xfs_ioend_t		*ioend = NULL, *iohead = NULL;
 908	loff_t			offset;
 909	unsigned int		type;
 910	__uint64_t              end_offset;
 911	pgoff_t                 end_index, last_index;
 912	ssize_t			len;
 913	int			err, imap_valid = 0, uptodate = 1;
 914	int			count = 0;
 915	int			nonblocking = 0;
 916
 917	trace_xfs_writepage(inode, page, 0);
 918
 919	ASSERT(page_has_buffers(page));
 920
 921	/*
 922	 * Refuse to write the page out if we are called from reclaim context.
 923	 *
 924	 * This avoids stack overflows when called from deeply used stacks in
 925	 * random callers for direct reclaim or memcg reclaim.  We explicitly
 926	 * allow reclaim from kswapd as the stack usage there is relatively low.
 927	 *
 928	 * This should really be done by the core VM, but until that happens
 929	 * filesystems like XFS, btrfs and ext4 have to take care of this
 930	 * by themselves.
 931	 */
 932	if ((current->flags & (PF_MEMALLOC|PF_KSWAPD)) == PF_MEMALLOC)
 933		goto redirty;
 
 
 
 
 
 934
 935	/*
 936	 * Given that we do not allow direct reclaim to call us, we should
 937	 * never be called while in a filesystem transaction.
 938	 */
 939	if (WARN_ON(current->flags & PF_FSTRANS))
 940		goto redirty;
 
 941
 942	/* Is this page beyond the end of the file? */
 943	offset = i_size_read(inode);
 944	end_index = offset >> PAGE_CACHE_SHIFT;
 945	last_index = (offset - 1) >> PAGE_CACHE_SHIFT;
 946	if (page->index >= end_index) {
 947		if ((page->index >= end_index + 1) ||
 948		    !(i_size_read(inode) & (PAGE_CACHE_SIZE - 1))) {
 949			unlock_page(page);
 950			return 0;
 951		}
 
 
 952	}
 953
 954	end_offset = min_t(unsigned long long,
 955			(xfs_off_t)(page->index + 1) << PAGE_CACHE_SHIFT,
 956			offset);
 957	len = 1 << inode->i_blkbits;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 958
 959	bh = head = page_buffers(page);
 960	offset = page_offset(page);
 961	type = IO_OVERWRITE;
 962
 963	if (wbc->sync_mode == WB_SYNC_NONE)
 964		nonblocking = 1;
 965
 966	do {
 967		int new_ioend = 0;
 968
 969		if (offset >= end_offset)
 970			break;
 971		if (!buffer_uptodate(bh))
 972			uptodate = 0;
 973
 974		/*
 975		 * set_page_dirty dirties all buffers in a page, independent
 976		 * of their state.  The dirty state however is entirely
 977		 * meaningless for holes (!mapped && uptodate), so skip
 978		 * buffers covering holes here.
 979		 */
 980		if (!buffer_mapped(bh) && buffer_uptodate(bh)) {
 981			imap_valid = 0;
 982			continue;
 983		}
 984
 985		if (buffer_unwritten(bh)) {
 986			if (type != IO_UNWRITTEN) {
 987				type = IO_UNWRITTEN;
 988				imap_valid = 0;
 989			}
 990		} else if (buffer_delay(bh)) {
 991			if (type != IO_DELALLOC) {
 992				type = IO_DELALLOC;
 993				imap_valid = 0;
 994			}
 995		} else if (buffer_uptodate(bh)) {
 996			if (type != IO_OVERWRITE) {
 997				type = IO_OVERWRITE;
 998				imap_valid = 0;
 999			}
1000		} else {
1001			if (PageUptodate(page)) {
1002				ASSERT(buffer_mapped(bh));
1003				imap_valid = 0;
1004			}
 
 
 
 
 
1005			continue;
1006		}
1007
1008		if (imap_valid)
1009			imap_valid = xfs_imap_valid(inode, &imap, offset);
1010		if (!imap_valid) {
1011			/*
1012			 * If we didn't have a valid mapping then we need to
1013			 * put the new mapping into a separate ioend structure.
1014			 * This ensures non-contiguous extents always have
1015			 * separate ioends, which is particularly important
1016			 * for unwritten extent conversion at I/O completion
1017			 * time.
1018			 */
1019			new_ioend = 1;
1020			err = xfs_map_blocks(inode, offset, &imap, type,
1021					     nonblocking);
1022			if (err)
1023				goto error;
1024			imap_valid = xfs_imap_valid(inode, &imap, offset);
 
 
 
 
1025		}
1026		if (imap_valid) {
1027			lock_buffer(bh);
1028			if (type != IO_OVERWRITE)
1029				xfs_map_at_offset(inode, bh, &imap, offset);
1030			xfs_add_to_ioend(inode, bh, offset, type, &ioend,
1031					 new_ioend);
1032			count++;
1033		}
1034
1035		if (!iohead)
1036			iohead = ioend;
1037
1038	} while (offset += len, ((bh = bh->b_this_page) != head));
1039
1040	if (uptodate && bh == head)
1041		SetPageUptodate(page);
1042
1043	xfs_start_page_writeback(page, 1, count);
1044
1045	if (ioend && imap_valid) {
1046		xfs_off_t		end_index;
1047
1048		end_index = imap.br_startoff + imap.br_blockcount;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1049
1050		/* to bytes */
1051		end_index <<= inode->i_blkbits;
 
 
 
 
 
1052
1053		/* to pages */
1054		end_index = (end_index - 1) >> PAGE_CACHE_SHIFT;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1055
1056		/* check against file size */
1057		if (end_index > last_index)
1058			end_index = last_index;
1059
1060		xfs_cluster_write(inode, page->index + 1, &imap, &ioend,
1061				  wbc, end_index);
1062	}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1063
1064	if (iohead)
1065		xfs_submit_ioend(wbc, iohead);
1066
1067	return 0;
1068
1069error:
1070	if (iohead)
1071		xfs_cancel_ioend(iohead);
 
 
 
 
 
 
 
 
 
 
1072
1073	if (err == -EAGAIN)
 
 
 
 
1074		goto redirty;
1075
1076	xfs_aops_discard_page(page);
1077	ClearPageUptodate(page);
1078	unlock_page(page);
1079	return err;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1080
1081redirty:
1082	redirty_page_for_writepage(wbc, page);
1083	unlock_page(page);
1084	return 0;
1085}
1086
1087STATIC int
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1088xfs_vm_writepages(
1089	struct address_space	*mapping,
1090	struct writeback_control *wbc)
1091{
 
 
 
 
 
1092	xfs_iflags_clear(XFS_I(mapping->host), XFS_ITRUNCATED);
1093	return generic_writepages(mapping, wbc);
 
 
 
 
 
 
 
1094}
1095
1096/*
1097 * Called to move a page into cleanable state - and from there
1098 * to be released. The page should already be clean. We always
1099 * have buffer heads in this call.
1100 *
1101 * Returns 1 if the page is ok to release, 0 otherwise.
1102 */
1103STATIC int
1104xfs_vm_releasepage(
1105	struct page		*page,
1106	gfp_t			gfp_mask)
1107{
1108	int			delalloc, unwritten;
1109
1110	trace_xfs_releasepage(page->mapping->host, page, 0);
1111
 
 
 
 
 
 
 
 
 
 
 
 
 
1112	xfs_count_page_state(page, &delalloc, &unwritten);
1113
1114	if (WARN_ON(delalloc))
 
1115		return 0;
1116	if (WARN_ON(unwritten))
 
 
1117		return 0;
 
1118
1119	return try_to_free_buffers(page);
1120}
1121
1122STATIC int
1123__xfs_get_blocks(
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1124	struct inode		*inode,
1125	sector_t		iblock,
1126	struct buffer_head	*bh_result,
1127	int			create,
1128	int			direct)
1129{
1130	struct xfs_inode	*ip = XFS_I(inode);
1131	struct xfs_mount	*mp = ip->i_mount;
1132	xfs_fileoff_t		offset_fsb, end_fsb;
1133	int			error = 0;
1134	int			lockmode = 0;
1135	struct xfs_bmbt_irec	imap;
1136	int			nimaps = 1;
1137	xfs_off_t		offset;
1138	ssize_t			size;
1139	int			new = 0;
 
1140
1141	if (XFS_FORCED_SHUTDOWN(mp))
1142		return -XFS_ERROR(EIO);
1143
1144	offset = (xfs_off_t)iblock << inode->i_blkbits;
1145	ASSERT(bh_result->b_size >= (1 << inode->i_blkbits));
1146	size = bh_result->b_size;
1147
1148	if (!create && direct && offset >= i_size_read(inode))
1149		return 0;
1150
1151	if (create) {
1152		lockmode = XFS_ILOCK_EXCL;
1153		xfs_ilock(ip, lockmode);
1154	} else {
1155		lockmode = xfs_ilock_map_shared(ip);
1156	}
1157
1158	ASSERT(offset <= mp->m_maxioffset);
1159	if (offset + size > mp->m_maxioffset)
1160		size = mp->m_maxioffset - offset;
1161	end_fsb = XFS_B_TO_FSB(mp, (xfs_ufsize_t)offset + size);
1162	offset_fsb = XFS_B_TO_FSBT(mp, offset);
1163
1164	error = xfs_bmapi(NULL, ip, offset_fsb, end_fsb - offset_fsb,
1165			  XFS_BMAPI_ENTIRE,  NULL, 0, &imap, &nimaps, NULL);
1166	if (error)
1167		goto out_unlock;
1168
1169	if (create &&
1170	    (!nimaps ||
1171	     (imap.br_startblock == HOLESTARTBLOCK ||
1172	      imap.br_startblock == DELAYSTARTBLOCK))) {
1173		if (direct) {
1174			error = xfs_iomap_write_direct(ip, offset, size,
1175						       &imap, nimaps);
1176		} else {
1177			error = xfs_iomap_write_delay(ip, offset, size, &imap);
1178		}
1179		if (error)
1180			goto out_unlock;
1181
1182		trace_xfs_get_blocks_alloc(ip, offset, size, 0, &imap);
1183	} else if (nimaps) {
1184		trace_xfs_get_blocks_found(ip, offset, size, 0, &imap);
1185	} else {
1186		trace_xfs_get_blocks_notfound(ip, offset, size);
1187		goto out_unlock;
1188	}
1189	xfs_iunlock(ip, lockmode);
1190
 
 
 
 
 
 
 
1191	if (imap.br_startblock != HOLESTARTBLOCK &&
1192	    imap.br_startblock != DELAYSTARTBLOCK) {
1193		/*
1194		 * For unwritten extents do not report a disk address on
1195		 * the read case (treat as if we're reading into a hole).
1196		 */
1197		if (create || !ISUNWRITTEN(&imap))
1198			xfs_map_buffer(inode, bh_result, &imap, offset);
1199		if (create && ISUNWRITTEN(&imap)) {
1200			if (direct)
1201				bh_result->b_private = inode;
1202			set_buffer_unwritten(bh_result);
1203		}
1204	}
1205
1206	/*
1207	 * If this is a realtime file, data may be on a different device.
1208	 * to that pointed to from the buffer_head b_bdev currently.
1209	 */
1210	bh_result->b_bdev = xfs_find_bdev_for_inode(inode);
1211
1212	/*
1213	 * If we previously allocated a block out beyond eof and we are now
1214	 * coming back to use it then we will need to flag it as new even if it
1215	 * has a disk address.
1216	 *
1217	 * With sub-block writes into unwritten extents we also need to mark
1218	 * the buffer as new so that the unwritten parts of the buffer gets
1219	 * correctly zeroed.
1220	 */
1221	if (create &&
1222	    ((!buffer_mapped(bh_result) && !buffer_uptodate(bh_result)) ||
1223	     (offset >= i_size_read(inode)) ||
1224	     (new || ISUNWRITTEN(&imap))))
1225		set_buffer_new(bh_result);
1226
1227	if (imap.br_startblock == DELAYSTARTBLOCK) {
1228		BUG_ON(direct);
1229		if (create) {
1230			set_buffer_uptodate(bh_result);
1231			set_buffer_mapped(bh_result);
1232			set_buffer_delay(bh_result);
1233		}
1234	}
1235
1236	/*
1237	 * If this is O_DIRECT or the mpage code calling tell them how large
1238	 * the mapping is, so that we can avoid repeated get_blocks calls.
1239	 */
1240	if (direct || size > (1 << inode->i_blkbits)) {
1241		xfs_off_t		mapping_size;
1242
1243		mapping_size = imap.br_startoff + imap.br_blockcount - iblock;
1244		mapping_size <<= inode->i_blkbits;
1245
1246		ASSERT(mapping_size > 0);
1247		if (mapping_size > size)
1248			mapping_size = size;
1249		if (mapping_size > LONG_MAX)
1250			mapping_size = LONG_MAX;
1251
1252		bh_result->b_size = mapping_size;
1253	}
1254
1255	return 0;
1256
1257out_unlock:
1258	xfs_iunlock(ip, lockmode);
1259	return -error;
1260}
1261
1262int
1263xfs_get_blocks(
1264	struct inode		*inode,
1265	sector_t		iblock,
1266	struct buffer_head	*bh_result,
1267	int			create)
1268{
1269	return __xfs_get_blocks(inode, iblock, bh_result, create, 0);
1270}
1271
1272STATIC int
1273xfs_get_blocks_direct(
1274	struct inode		*inode,
1275	sector_t		iblock,
1276	struct buffer_head	*bh_result,
1277	int			create)
1278{
1279	return __xfs_get_blocks(inode, iblock, bh_result, create, 1);
1280}
1281
1282/*
1283 * Complete a direct I/O write request.
1284 *
1285 * If the private argument is non-NULL __xfs_get_blocks signals us that we
1286 * need to issue a transaction to convert the range from unwritten to written
1287 * extents.  In case this is regular synchronous I/O we just call xfs_end_io
1288 * to do this and we are done.  But in case this was a successful AIO
1289 * request this handler is called from interrupt context, from which we
1290 * can't start transactions.  In that case offload the I/O completion to
1291 * the workqueues we also use for buffered I/O completion.
1292 */
1293STATIC void
1294xfs_end_io_direct_write(
1295	struct kiocb		*iocb,
1296	loff_t			offset,
1297	ssize_t			size,
1298	void			*private,
1299	int			ret,
1300	bool			is_async)
1301{
1302	struct xfs_ioend	*ioend = iocb->private;
1303	struct inode		*inode = ioend->io_inode;
1304
1305	/*
1306	 * blockdev_direct_IO can return an error even after the I/O
1307	 * completion handler was called.  Thus we need to protect
1308	 * against double-freeing.
1309	 */
1310	iocb->private = NULL;
1311
1312	ioend->io_offset = offset;
1313	ioend->io_size = size;
1314	if (private && size > 0)
1315		ioend->io_type = IO_UNWRITTEN;
1316
1317	if (is_async) {
1318		/*
1319		 * If we are converting an unwritten extent we need to delay
1320		 * the AIO completion until after the unwrittent extent
1321		 * conversion has completed, otherwise do it ASAP.
1322		 */
1323		if (ioend->io_type == IO_UNWRITTEN) {
1324			ioend->io_iocb = iocb;
1325			ioend->io_result = ret;
1326		} else {
1327			aio_complete(iocb, ret, 0);
1328		}
1329		xfs_finish_ioend(ioend);
1330	} else {
1331		xfs_finish_ioend_sync(ioend);
1332	}
1333
1334	/* XXX: probably should move into the real I/O completion handler */
1335	inode_dio_done(inode);
1336}
1337
1338STATIC ssize_t
1339xfs_vm_direct_IO(
1340	int			rw,
1341	struct kiocb		*iocb,
1342	const struct iovec	*iov,
1343	loff_t			offset,
1344	unsigned long		nr_segs)
1345{
1346	struct inode		*inode = iocb->ki_filp->f_mapping->host;
1347	struct block_device	*bdev = xfs_find_bdev_for_inode(inode);
1348	ssize_t			ret;
1349
1350	if (rw & WRITE) {
1351		iocb->private = xfs_alloc_ioend(inode, IO_DIRECT);
1352
1353		ret = __blockdev_direct_IO(rw, iocb, inode, bdev, iov,
1354					    offset, nr_segs,
1355					    xfs_get_blocks_direct,
1356					    xfs_end_io_direct_write, NULL, 0);
1357		if (ret != -EIOCBQUEUED && iocb->private)
1358			xfs_destroy_ioend(iocb->private);
1359	} else {
1360		ret = __blockdev_direct_IO(rw, iocb, inode, bdev, iov,
1361					    offset, nr_segs,
1362					    xfs_get_blocks_direct,
1363					    NULL, NULL, 0);
1364	}
1365
1366	return ret;
1367}
1368
1369STATIC void
1370xfs_vm_write_failed(
1371	struct address_space	*mapping,
1372	loff_t			to)
1373{
1374	struct inode		*inode = mapping->host;
1375
1376	if (to > inode->i_size) {
1377		/*
1378		 * punch out the delalloc blocks we have already allocated. We
1379		 * don't call xfs_setattr() to do this as we may be in the
1380		 * middle of a multi-iovec write and so the vfs inode->i_size
1381		 * will not match the xfs ip->i_size and so it will zero too
1382		 * much. Hence we jus truncate the page cache to zero what is
1383		 * necessary and punch the delalloc blocks directly.
1384		 */
1385		struct xfs_inode	*ip = XFS_I(inode);
1386		xfs_fileoff_t		start_fsb;
1387		xfs_fileoff_t		end_fsb;
1388		int			error;
1389
1390		truncate_pagecache(inode, to, inode->i_size);
1391
1392		/*
1393		 * Check if there are any blocks that are outside of i_size
1394		 * that need to be trimmed back.
1395		 */
1396		start_fsb = XFS_B_TO_FSB(ip->i_mount, inode->i_size) + 1;
1397		end_fsb = XFS_B_TO_FSB(ip->i_mount, to);
1398		if (end_fsb <= start_fsb)
1399			return;
1400
1401		xfs_ilock(ip, XFS_ILOCK_EXCL);
1402		error = xfs_bmap_punch_delalloc_range(ip, start_fsb,
1403							end_fsb - start_fsb);
1404		if (error) {
1405			/* something screwed, just bail */
1406			if (!XFS_FORCED_SHUTDOWN(ip->i_mount)) {
1407				xfs_alert(ip->i_mount,
1408			"xfs_vm_write_failed: unable to clean up ino %lld",
1409						ip->i_ino);
1410			}
1411		}
1412		xfs_iunlock(ip, XFS_ILOCK_EXCL);
1413	}
1414}
1415
1416STATIC int
1417xfs_vm_write_begin(
1418	struct file		*file,
1419	struct address_space	*mapping,
1420	loff_t			pos,
1421	unsigned		len,
1422	unsigned		flags,
1423	struct page		**pagep,
1424	void			**fsdata)
1425{
1426	int			ret;
1427
1428	ret = block_write_begin(mapping, pos, len, flags | AOP_FLAG_NOFS,
1429				pagep, xfs_get_blocks);
1430	if (unlikely(ret))
1431		xfs_vm_write_failed(mapping, pos + len);
1432	return ret;
1433}
1434
1435STATIC int
1436xfs_vm_write_end(
1437	struct file		*file,
1438	struct address_space	*mapping,
1439	loff_t			pos,
1440	unsigned		len,
1441	unsigned		copied,
1442	struct page		*page,
1443	void			*fsdata)
1444{
1445	int			ret;
1446
1447	ret = generic_write_end(file, mapping, pos, len, copied, page, fsdata);
1448	if (unlikely(ret < len))
1449		xfs_vm_write_failed(mapping, pos + len);
1450	return ret;
1451}
1452
1453STATIC sector_t
1454xfs_vm_bmap(
1455	struct address_space	*mapping,
1456	sector_t		block)
1457{
1458	struct inode		*inode = (struct inode *)mapping->host;
1459	struct xfs_inode	*ip = XFS_I(inode);
1460
1461	trace_xfs_vm_bmap(XFS_I(inode));
1462	xfs_ilock(ip, XFS_IOLOCK_SHARED);
1463	xfs_flush_pages(ip, (xfs_off_t)0, -1, 0, FI_REMAPF);
1464	xfs_iunlock(ip, XFS_IOLOCK_SHARED);
 
 
 
 
 
 
 
 
1465	return generic_block_bmap(mapping, block, xfs_get_blocks);
1466}
1467
1468STATIC int
1469xfs_vm_readpage(
1470	struct file		*unused,
1471	struct page		*page)
1472{
 
1473	return mpage_readpage(page, xfs_get_blocks);
1474}
1475
1476STATIC int
1477xfs_vm_readpages(
1478	struct file		*unused,
1479	struct address_space	*mapping,
1480	struct list_head	*pages,
1481	unsigned		nr_pages)
1482{
 
1483	return mpage_readpages(mapping, pages, nr_pages, xfs_get_blocks);
1484}
1485
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1486const struct address_space_operations xfs_address_space_operations = {
1487	.readpage		= xfs_vm_readpage,
1488	.readpages		= xfs_vm_readpages,
1489	.writepage		= xfs_vm_writepage,
1490	.writepages		= xfs_vm_writepages,
 
1491	.releasepage		= xfs_vm_releasepage,
1492	.invalidatepage		= xfs_vm_invalidatepage,
1493	.write_begin		= xfs_vm_write_begin,
1494	.write_end		= xfs_vm_write_end,
1495	.bmap			= xfs_vm_bmap,
1496	.direct_IO		= xfs_vm_direct_IO,
1497	.migratepage		= buffer_migrate_page,
1498	.is_partially_uptodate  = block_is_partially_uptodate,
1499	.error_remove_page	= generic_error_remove_page,
1500};
v4.10.11
   1/*
   2 * Copyright (c) 2000-2005 Silicon Graphics, Inc.
   3 * All Rights Reserved.
   4 *
   5 * This program is free software; you can redistribute it and/or
   6 * modify it under the terms of the GNU General Public License as
   7 * published by the Free Software Foundation.
   8 *
   9 * This program is distributed in the hope that it would be useful,
  10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
  11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  12 * GNU General Public License for more details.
  13 *
  14 * You should have received a copy of the GNU General Public License
  15 * along with this program; if not, write the Free Software Foundation,
  16 * Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  17 */
  18#include "xfs.h"
  19#include "xfs_shared.h"
  20#include "xfs_format.h"
  21#include "xfs_log_format.h"
  22#include "xfs_trans_resv.h"
 
 
  23#include "xfs_mount.h"
 
 
  24#include "xfs_inode.h"
  25#include "xfs_trans.h"
  26#include "xfs_inode_item.h"
  27#include "xfs_alloc.h"
  28#include "xfs_error.h"
 
  29#include "xfs_iomap.h"
 
  30#include "xfs_trace.h"
  31#include "xfs_bmap.h"
  32#include "xfs_bmap_util.h"
  33#include "xfs_bmap_btree.h"
  34#include "xfs_reflink.h"
  35#include <linux/gfp.h>
  36#include <linux/mpage.h>
  37#include <linux/pagevec.h>
  38#include <linux/writeback.h>
  39
 
  40/*
  41 * structure owned by writepages passed to individual writepage calls
  42 */
  43struct xfs_writepage_ctx {
  44	struct xfs_bmbt_irec    imap;
  45	bool			imap_valid;
  46	unsigned int		io_type;
  47	struct xfs_ioend	*ioend;
  48	sector_t		last_block;
  49};
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
  50
  51void
  52xfs_count_page_state(
  53	struct page		*page,
  54	int			*delalloc,
  55	int			*unwritten)
  56{
  57	struct buffer_head	*bh, *head;
  58
  59	*delalloc = *unwritten = 0;
  60
  61	bh = head = page_buffers(page);
  62	do {
  63		if (buffer_unwritten(bh))
  64			(*unwritten) = 1;
  65		else if (buffer_delay(bh))
  66			(*delalloc) = 1;
  67	} while ((bh = bh->b_this_page) != head);
  68}
  69
  70struct block_device *
  71xfs_find_bdev_for_inode(
  72	struct inode		*inode)
  73{
  74	struct xfs_inode	*ip = XFS_I(inode);
  75	struct xfs_mount	*mp = ip->i_mount;
  76
  77	if (XFS_IS_REALTIME_INODE(ip))
  78		return mp->m_rtdev_targp->bt_bdev;
  79	else
  80		return mp->m_ddev_targp->bt_bdev;
  81}
  82
  83/*
  84 * We're now finished for good with this page.  Update the page state via the
  85 * associated buffer_heads, paying attention to the start and end offsets that
  86 * we need to process on the page.
  87 *
  88 * Landmine Warning: bh->b_end_io() will call end_page_writeback() on the last
  89 * buffer in the IO. Once it does this, it is unsafe to access the bufferhead or
  90 * the page at all, as we may be racing with memory reclaim and it can free both
  91 * the bufferhead chain and the page as it will see the page as clean and
  92 * unused.
  93 */
  94static void
  95xfs_finish_page_writeback(
  96	struct inode		*inode,
  97	struct bio_vec		*bvec,
  98	int			error)
  99{
 100	unsigned int		end = bvec->bv_offset + bvec->bv_len - 1;
 101	struct buffer_head	*head, *bh, *next;
 102	unsigned int		off = 0;
 103	unsigned int		bsize;
 104
 105	ASSERT(bvec->bv_offset < PAGE_SIZE);
 106	ASSERT((bvec->bv_offset & ((1 << inode->i_blkbits) - 1)) == 0);
 107	ASSERT(end < PAGE_SIZE);
 108	ASSERT((bvec->bv_len & ((1 << inode->i_blkbits) - 1)) == 0);
 109
 110	bh = head = page_buffers(bvec->bv_page);
 111
 112	bsize = bh->b_size;
 113	do {
 114		next = bh->b_this_page;
 115		if (off < bvec->bv_offset)
 116			goto next_bh;
 117		if (off > end)
 118			break;
 119		bh->b_end_io(bh, !error);
 120next_bh:
 121		off += bsize;
 122	} while ((bh = next) != head);
 123}
 124
 125/*
 126 * We're now finished for good with this ioend structure.  Update the page
 127 * state, release holds on bios, and finally free up memory.  Do not use the
 128 * ioend after this.
 129 */
 130STATIC void
 131xfs_destroy_ioend(
 132	struct xfs_ioend	*ioend,
 133	int			error)
 134{
 135	struct inode		*inode = ioend->io_inode;
 136	struct bio		*last = ioend->io_bio;
 137	struct bio		*bio, *next;
 138
 139	for (bio = &ioend->io_inline_bio; bio; bio = next) {
 140		struct bio_vec	*bvec;
 141		int		i;
 
 142
 143		/*
 144		 * For the last bio, bi_private points to the ioend, so we
 145		 * need to explicitly end the iteration here.
 146		 */
 147		if (bio == last)
 148			next = NULL;
 149		else
 150			next = bio->bi_private;
 
 
 151
 152		/* walk each page on bio, ending page IO on them */
 153		bio_for_each_segment_all(bvec, bio, i)
 154			xfs_finish_page_writeback(inode, bvec, error);
 155
 156		bio_put(bio);
 157	}
 158}
 159
 160/*
 161 * Fast and loose check if this write could update the on-disk inode size.
 
 162 */
 163static inline bool xfs_ioend_is_append(struct xfs_ioend *ioend)
 
 
 164{
 165	return ioend->io_offset + ioend->io_size >
 166		XFS_I(ioend->io_inode)->i_d.di_size;
 167}
 168
 169STATIC int
 170xfs_setfilesize_trans_alloc(
 171	struct xfs_ioend	*ioend)
 172{
 173	struct xfs_mount	*mp = XFS_I(ioend->io_inode)->i_mount;
 174	struct xfs_trans	*tp;
 175	int			error;
 176
 177	error = xfs_trans_alloc(mp, &M_RES(mp)->tr_fsyncts, 0, 0, 0, &tp);
 178	if (error)
 179		return error;
 180
 181	ioend->io_append_trans = tp;
 182
 183	/*
 184	 * We may pass freeze protection with a transaction.  So tell lockdep
 185	 * we released it.
 186	 */
 187	__sb_writers_release(ioend->io_inode->i_sb, SB_FREEZE_FS);
 188	/*
 189	 * We hand off the transaction to the completion thread now, so
 190	 * clear the flag here.
 191	 */
 192	current_restore_flags_nested(&tp->t_pflags, PF_FSTRANS);
 193	return 0;
 194}
 195
 196/*
 197 * Update on-disk file size now that data has been written to disk.
 
 
 
 
 
 
 
 
 198 */
 199STATIC int
 200__xfs_setfilesize(
 201	struct xfs_inode	*ip,
 202	struct xfs_trans	*tp,
 203	xfs_off_t		offset,
 204	size_t			size)
 205{
 
 206	xfs_fsize_t		isize;
 207
 208	xfs_ilock(ip, XFS_ILOCK_EXCL);
 209	isize = xfs_new_eof(ip, offset + size);
 210	if (!isize) {
 211		xfs_iunlock(ip, XFS_ILOCK_EXCL);
 212		xfs_trans_cancel(tp);
 213		return 0;
 214	}
 215
 216	trace_xfs_setfilesize(ip, offset, size);
 
 217
 218	ip->i_d.di_size = isize;
 219	xfs_trans_ijoin(tp, ip, XFS_ILOCK_EXCL);
 220	xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE);
 
 
 
 221
 222	return xfs_trans_commit(tp);
 
 223}
 224
 225int
 226xfs_setfilesize(
 227	struct xfs_inode	*ip,
 228	xfs_off_t		offset,
 229	size_t			size)
 
 230{
 231	struct xfs_mount	*mp = ip->i_mount;
 232	struct xfs_trans	*tp;
 233	int			error;
 234
 235	error = xfs_trans_alloc(mp, &M_RES(mp)->tr_fsyncts, 0, 0, 0, &tp);
 236	if (error)
 237		return error;
 238
 239	return __xfs_setfilesize(ip, tp, offset, size);
 240}
 241
 242STATIC int
 243xfs_setfilesize_ioend(
 244	struct xfs_ioend	*ioend,
 245	int			error)
 246{
 247	struct xfs_inode	*ip = XFS_I(ioend->io_inode);
 248	struct xfs_trans	*tp = ioend->io_append_trans;
 249
 250	/*
 251	 * The transaction may have been allocated in the I/O submission thread,
 252	 * thus we need to mark ourselves as being in a transaction manually.
 253	 * Similarly for freeze protection.
 254	 */
 255	current_set_flags_nested(&tp->t_pflags, PF_FSTRANS);
 256	__sb_writers_acquired(VFS_I(ip)->i_sb, SB_FREEZE_FS);
 257
 258	/* we abort the update if there was an IO error */
 259	if (error) {
 260		xfs_trans_cancel(tp);
 261		return error;
 262	}
 263
 264	return __xfs_setfilesize(ip, tp, ioend->io_offset, ioend->io_size);
 265}
 266
 267/*
 268 * IO write completion.
 269 */
 270STATIC void
 271xfs_end_io(
 272	struct work_struct *work)
 273{
 274	struct xfs_ioend	*ioend =
 275		container_of(work, struct xfs_ioend, io_work);
 276	struct xfs_inode	*ip = XFS_I(ioend->io_inode);
 277	xfs_off_t		offset = ioend->io_offset;
 278	size_t			size = ioend->io_size;
 279	int			error = ioend->io_bio->bi_error;
 280
 281	/*
 282	 * Just clean up the in-memory strutures if the fs has been shut down.
 
 283	 */
 284	if (XFS_FORCED_SHUTDOWN(ip->i_mount)) {
 285		error = -EIO;
 286		goto done;
 
 
 
 
 287	}
 288
 289	/*
 290	 * Clean up any COW blocks on an I/O error.
 
 291	 */
 292	if (unlikely(error)) {
 293		switch (ioend->io_type) {
 294		case XFS_IO_COW:
 295			xfs_reflink_cancel_cow_range(ip, offset, size, true);
 296			break;
 297		}
 298
 299		goto done;
 300	}
 301
 302	/*
 303	 * Success:  commit the COW or unwritten blocks if needed.
 
 
 304	 */
 305	switch (ioend->io_type) {
 306	case XFS_IO_COW:
 307		error = xfs_reflink_end_cow(ip, offset, size);
 308		break;
 309	case XFS_IO_UNWRITTEN:
 310		error = xfs_iomap_write_unwritten(ip, offset, size);
 311		break;
 312	default:
 313		ASSERT(!xfs_ioend_is_append(ioend) || ioend->io_append_trans);
 314		break;
 315	}
 316
 317done:
 318	if (ioend->io_append_trans)
 319		error = xfs_setfilesize_ioend(ioend, error);
 320	xfs_destroy_ioend(ioend, error);
 321}
 322
 
 
 
 323STATIC void
 324xfs_end_bio(
 325	struct bio		*bio)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 326{
 327	struct xfs_ioend	*ioend = bio->bi_private;
 328	struct xfs_mount	*mp = XFS_I(ioend->io_inode)->i_mount;
 
 329
 330	if (ioend->io_type == XFS_IO_UNWRITTEN || ioend->io_type == XFS_IO_COW)
 331		queue_work(mp->m_unwritten_workqueue, &ioend->io_work);
 332	else if (ioend->io_append_trans)
 333		queue_work(mp->m_data_workqueue, &ioend->io_work);
 334	else
 335		xfs_destroy_ioend(ioend, bio->bi_error);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 336}
 337
 338STATIC int
 339xfs_map_blocks(
 340	struct inode		*inode,
 341	loff_t			offset,
 342	struct xfs_bmbt_irec	*imap,
 343	int			type)
 
 344{
 345	struct xfs_inode	*ip = XFS_I(inode);
 346	struct xfs_mount	*mp = ip->i_mount;
 347	ssize_t			count = 1 << inode->i_blkbits;
 348	xfs_fileoff_t		offset_fsb, end_fsb;
 349	int			error = 0;
 350	int			bmapi_flags = XFS_BMAPI_ENTIRE;
 351	int			nimaps = 1;
 352
 353	if (XFS_FORCED_SHUTDOWN(mp))
 354		return -EIO;
 355
 356	ASSERT(type != XFS_IO_COW);
 357	if (type == XFS_IO_UNWRITTEN)
 358		bmapi_flags |= XFS_BMAPI_IGSTATE;
 359
 360	xfs_ilock(ip, XFS_ILOCK_SHARED);
 
 
 
 
 
 361	ASSERT(ip->i_d.di_format != XFS_DINODE_FMT_BTREE ||
 362	       (ip->i_df.if_flags & XFS_IFEXTENTS));
 363	ASSERT(offset <= mp->m_super->s_maxbytes);
 364
 365	if (offset + count > mp->m_super->s_maxbytes)
 366		count = mp->m_super->s_maxbytes - offset;
 367	end_fsb = XFS_B_TO_FSB(mp, (xfs_ufsize_t)offset + count);
 368	offset_fsb = XFS_B_TO_FSBT(mp, offset);
 369	error = xfs_bmapi_read(ip, offset_fsb, end_fsb - offset_fsb,
 370				imap, &nimaps, bmapi_flags);
 371	/*
 372	 * Truncate an overwrite extent if there's a pending CoW
 373	 * reservation before the end of this extent.  This forces us
 374	 * to come back to writepage to take care of the CoW.
 375	 */
 376	if (nimaps && type == XFS_IO_OVERWRITE)
 377		xfs_reflink_trim_irec_to_next_cow(ip, offset_fsb, imap);
 378	xfs_iunlock(ip, XFS_ILOCK_SHARED);
 379
 380	if (error)
 381		return error;
 382
 383	if (type == XFS_IO_DELALLOC &&
 384	    (!nimaps || isnullstartblock(imap->br_startblock))) {
 385		error = xfs_iomap_write_allocate(ip, XFS_DATA_FORK, offset,
 386				imap);
 387		if (!error)
 388			trace_xfs_map_blocks_alloc(ip, offset, count, type, imap);
 389		return error;
 390	}
 391
 392#ifdef DEBUG
 393	if (type == XFS_IO_UNWRITTEN) {
 394		ASSERT(nimaps);
 395		ASSERT(imap->br_startblock != HOLESTARTBLOCK);
 396		ASSERT(imap->br_startblock != DELAYSTARTBLOCK);
 397	}
 398#endif
 399	if (nimaps)
 400		trace_xfs_map_blocks_found(ip, offset, count, type, imap);
 401	return 0;
 402}
 403
 404STATIC bool
 405xfs_imap_valid(
 406	struct inode		*inode,
 407	struct xfs_bmbt_irec	*imap,
 408	xfs_off_t		offset)
 409{
 410	offset >>= inode->i_blkbits;
 411
 412	return offset >= imap->br_startoff &&
 413		offset < imap->br_startoff + imap->br_blockcount;
 414}
 415
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 416STATIC void
 417xfs_start_buffer_writeback(
 418	struct buffer_head	*bh)
 419{
 420	ASSERT(buffer_mapped(bh));
 421	ASSERT(buffer_locked(bh));
 422	ASSERT(!buffer_delay(bh));
 423	ASSERT(!buffer_unwritten(bh));
 424
 425	mark_buffer_async_write(bh);
 426	set_buffer_uptodate(bh);
 427	clear_buffer_dirty(bh);
 428}
 429
 430STATIC void
 431xfs_start_page_writeback(
 432	struct page		*page,
 433	int			clear_dirty)
 
 434{
 435	ASSERT(PageLocked(page));
 436	ASSERT(!PageWriteback(page));
 437
 438	/*
 439	 * if the page was not fully cleaned, we need to ensure that the higher
 440	 * layers come back to it correctly. That means we need to keep the page
 441	 * dirty, and for WB_SYNC_ALL writeback we need to ensure the
 442	 * PAGECACHE_TAG_TOWRITE index mark is not removed so another attempt to
 443	 * write this page in this writeback sweep will be made.
 444	 */
 445	if (clear_dirty) {
 446		clear_page_dirty_for_io(page);
 447		set_page_writeback(page);
 448	} else
 449		set_page_writeback_keepwrite(page);
 450
 451	unlock_page(page);
 
 
 
 452}
 453
 454static inline int xfs_bio_add_buffer(struct bio *bio, struct buffer_head *bh)
 455{
 456	return bio_add_page(bio, bh->b_page, bh->b_size, bh_offset(bh));
 457}
 458
 459/*
 460 * Submit the bio for an ioend. We are passed an ioend with a bio attached to
 461 * it, and we submit that bio. The ioend may be used for multiple bio
 462 * submissions, so we only want to allocate an append transaction for the ioend
 463 * once. In the case of multiple bio submission, each bio will take an IO
 464 * reference to the ioend to ensure that the ioend completion is only done once
 465 * all bios have been submitted and the ioend is really done.
 
 
 
 
 
 
 466 *
 467 * If @fail is non-zero, it means that we have a situation where some part of
 468 * the submission process has failed after we have marked paged for writeback
 469 * and unlocked them. In this situation, we need to fail the bio and ioend
 470 * rather than submit it to IO. This typically only happens on a filesystem
 471 * shutdown.
 472 */
 473STATIC int
 474xfs_submit_ioend(
 475	struct writeback_control *wbc,
 476	struct xfs_ioend	*ioend,
 477	int			status)
 478{
 479	/* Convert CoW extents to regular */
 480	if (!status && ioend->io_type == XFS_IO_COW) {
 481		status = xfs_reflink_convert_cow(XFS_I(ioend->io_inode),
 482				ioend->io_offset, ioend->io_size);
 483	}
 484
 485	/* Reserve log space if we might write beyond the on-disk inode size. */
 486	if (!status &&
 487	    ioend->io_type != XFS_IO_UNWRITTEN &&
 488	    xfs_ioend_is_append(ioend) &&
 489	    !ioend->io_append_trans)
 490		status = xfs_setfilesize_trans_alloc(ioend);
 491
 492	ioend->io_bio->bi_private = ioend;
 493	ioend->io_bio->bi_end_io = xfs_end_bio;
 494	ioend->io_bio->bi_opf = REQ_OP_WRITE | wbc_to_write_flags(wbc);
 495
 496	/*
 497	 * If we are failing the IO now, just mark the ioend with an
 498	 * error and finish it. This will run IO completion immediately
 499	 * as there is only one reference to the ioend at this point in
 500	 * time.
 501	 */
 502	if (status) {
 503		ioend->io_bio->bi_error = status;
 504		bio_endio(ioend->io_bio);
 505		return status;
 506	}
 507
 508	submit_bio(ioend->io_bio);
 509	return 0;
 510}
 
 
 511
 512static void
 513xfs_init_bio_from_bh(
 514	struct bio		*bio,
 515	struct buffer_head	*bh)
 516{
 517	bio->bi_iter.bi_sector = bh->b_blocknr * (bh->b_size >> 9);
 518	bio->bi_bdev = bh->b_bdev;
 519}
 520
 521static struct xfs_ioend *
 522xfs_alloc_ioend(
 523	struct inode		*inode,
 524	unsigned int		type,
 525	xfs_off_t		offset,
 526	struct buffer_head	*bh)
 527{
 528	struct xfs_ioend	*ioend;
 529	struct bio		*bio;
 530
 531	bio = bio_alloc_bioset(GFP_NOFS, BIO_MAX_PAGES, xfs_ioend_bioset);
 532	xfs_init_bio_from_bh(bio, bh);
 
 
 533
 534	ioend = container_of(bio, struct xfs_ioend, io_inline_bio);
 535	INIT_LIST_HEAD(&ioend->io_list);
 536	ioend->io_type = type;
 537	ioend->io_inode = inode;
 538	ioend->io_size = 0;
 539	ioend->io_offset = offset;
 540	INIT_WORK(&ioend->io_work, xfs_end_io);
 541	ioend->io_append_trans = NULL;
 542	ioend->io_bio = bio;
 543	return ioend;
 544}
 545
 546/*
 547 * Allocate a new bio, and chain the old bio to the new one.
 548 *
 549 * Note that we have to do perform the chaining in this unintuitive order
 550 * so that the bi_private linkage is set up in the right direction for the
 551 * traversal in xfs_destroy_ioend().
 552 */
 553static void
 554xfs_chain_bio(
 555	struct xfs_ioend	*ioend,
 556	struct writeback_control *wbc,
 557	struct buffer_head	*bh)
 558{
 559	struct bio *new;
 
 560
 561	new = bio_alloc(GFP_NOFS, BIO_MAX_PAGES);
 562	xfs_init_bio_from_bh(new, bh);
 563
 564	bio_chain(ioend->io_bio, new);
 565	bio_get(ioend->io_bio);		/* for xfs_destroy_ioend */
 566	ioend->io_bio->bi_opf = REQ_OP_WRITE | wbc_to_write_flags(wbc);
 567	submit_bio(ioend->io_bio);
 568	ioend->io_bio = new;
 
 
 
 
 569}
 570
 571/*
 572 * Test to see if we've been building up a completion structure for
 573 * earlier buffers -- if so, we try to append to this ioend if we
 574 * can, otherwise we finish off any current ioend and start another.
 575 * Return the ioend we finished off so that the caller can submit it
 576 * once it has finished processing the dirty page.
 577 */
 578STATIC void
 579xfs_add_to_ioend(
 580	struct inode		*inode,
 581	struct buffer_head	*bh,
 582	xfs_off_t		offset,
 583	struct xfs_writepage_ctx *wpc,
 584	struct writeback_control *wbc,
 585	struct list_head	*iolist)
 586{
 587	if (!wpc->ioend || wpc->io_type != wpc->ioend->io_type ||
 588	    bh->b_blocknr != wpc->last_block + 1 ||
 589	    offset != wpc->ioend->io_offset + wpc->ioend->io_size) {
 590		if (wpc->ioend)
 591			list_add(&wpc->ioend->io_list, iolist);
 592		wpc->ioend = xfs_alloc_ioend(inode, wpc->io_type, offset, bh);
 
 
 
 
 
 
 
 
 
 593	}
 594
 595	/*
 596	 * If the buffer doesn't fit into the bio we need to allocate a new
 597	 * one.  This shouldn't happen more than once for a given buffer.
 598	 */
 599	while (xfs_bio_add_buffer(wpc->ioend->io_bio, bh) != bh->b_size)
 600		xfs_chain_bio(wpc->ioend, wbc, bh);
 601
 602	wpc->ioend->io_size += bh->b_size;
 603	wpc->last_block = bh->b_blocknr;
 604	xfs_start_buffer_writeback(bh);
 605}
 606
 607STATIC void
 608xfs_map_buffer(
 609	struct inode		*inode,
 610	struct buffer_head	*bh,
 611	struct xfs_bmbt_irec	*imap,
 612	xfs_off_t		offset)
 613{
 614	sector_t		bn;
 615	struct xfs_mount	*m = XFS_I(inode)->i_mount;
 616	xfs_off_t		iomap_offset = XFS_FSB_TO_B(m, imap->br_startoff);
 617	xfs_daddr_t		iomap_bn = xfs_fsb_to_db(XFS_I(inode), imap->br_startblock);
 618
 619	ASSERT(imap->br_startblock != HOLESTARTBLOCK);
 620	ASSERT(imap->br_startblock != DELAYSTARTBLOCK);
 621
 622	bn = (iomap_bn >> (inode->i_blkbits - BBSHIFT)) +
 623	      ((offset - iomap_offset) >> inode->i_blkbits);
 624
 625	ASSERT(bn || XFS_IS_REALTIME_INODE(XFS_I(inode)));
 626
 627	bh->b_blocknr = bn;
 628	set_buffer_mapped(bh);
 629}
 630
 631STATIC void
 632xfs_map_at_offset(
 633	struct inode		*inode,
 634	struct buffer_head	*bh,
 635	struct xfs_bmbt_irec	*imap,
 636	xfs_off_t		offset)
 637{
 638	ASSERT(imap->br_startblock != HOLESTARTBLOCK);
 639	ASSERT(imap->br_startblock != DELAYSTARTBLOCK);
 640
 641	xfs_map_buffer(inode, bh, imap, offset);
 642	set_buffer_mapped(bh);
 643	clear_buffer_delay(bh);
 644	clear_buffer_unwritten(bh);
 645}
 646
 647/*
 648 * Test if a given page contains at least one buffer of a given @type.
 649 * If @check_all_buffers is true, then we walk all the buffers in the page to
 650 * try to find one of the type passed in. If it is not set, then the caller only
 651 * needs to check the first buffer on the page for a match.
 652 */
 653STATIC bool
 654xfs_check_page_type(
 655	struct page		*page,
 656	unsigned int		type,
 657	bool			check_all_buffers)
 658{
 659	struct buffer_head	*bh;
 660	struct buffer_head	*head;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 661
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 662	if (PageWriteback(page))
 663		return false;
 664	if (!page->mapping)
 665		return false;
 666	if (!page_has_buffers(page))
 667		return false;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 668
 669	bh = head = page_buffers(page);
 670	do {
 671		if (buffer_unwritten(bh)) {
 672			if (type == XFS_IO_UNWRITTEN)
 673				return true;
 674		} else if (buffer_delay(bh)) {
 675			if (type == XFS_IO_DELALLOC)
 676				return true;
 677		} else if (buffer_dirty(bh) && buffer_mapped(bh)) {
 678			if (type == XFS_IO_OVERWRITE)
 679				return true;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 680		}
 
 
 
 
 
 
 
 
 
 
 
 681
 682		/* If we are only checking the first buffer, we are done now. */
 683		if (!check_all_buffers)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 684			break;
 685	} while ((bh = bh->b_this_page) != head);
 686
 687	return false;
 
 
 
 
 
 
 
 
 
 688}
 689
 690STATIC void
 691xfs_vm_invalidatepage(
 692	struct page		*page,
 693	unsigned int		offset,
 694	unsigned int		length)
 695{
 696	trace_xfs_invalidatepage(page->mapping->host, page, offset,
 697				 length);
 698	block_invalidatepage(page, offset, length);
 699}
 700
 701/*
 702 * If the page has delalloc buffers on it, we need to punch them out before we
 703 * invalidate the page. If we don't, we leave a stale delalloc mapping on the
 704 * inode that can trip a BUG() in xfs_get_blocks() later on if a direct IO read
 705 * is done on that same region - the delalloc extent is returned when none is
 706 * supposed to be there.
 707 *
 708 * We prevent this by truncating away the delalloc regions on the page before
 709 * invalidating it. Because they are delalloc, we can do this without needing a
 710 * transaction. Indeed - if we get ENOSPC errors, we have to be able to do this
 711 * truncation without a transaction as there is no space left for block
 712 * reservation (typically why we see a ENOSPC in writeback).
 713 *
 714 * This is not a performance critical path, so for now just do the punching a
 715 * buffer head at a time.
 716 */
 717STATIC void
 718xfs_aops_discard_page(
 719	struct page		*page)
 720{
 721	struct inode		*inode = page->mapping->host;
 722	struct xfs_inode	*ip = XFS_I(inode);
 723	struct buffer_head	*bh, *head;
 724	loff_t			offset = page_offset(page);
 725
 726	if (!xfs_check_page_type(page, XFS_IO_DELALLOC, true))
 727		goto out_invalidate;
 728
 729	if (XFS_FORCED_SHUTDOWN(ip->i_mount))
 730		goto out_invalidate;
 731
 732	xfs_alert(ip->i_mount,
 733		"page discard on page %p, inode 0x%llx, offset %llu.",
 734			page, ip->i_ino, offset);
 735
 736	xfs_ilock(ip, XFS_ILOCK_EXCL);
 737	bh = head = page_buffers(page);
 738	do {
 739		int		error;
 740		xfs_fileoff_t	start_fsb;
 741
 742		if (!buffer_delay(bh))
 743			goto next_buffer;
 744
 745		start_fsb = XFS_B_TO_FSBT(ip->i_mount, offset);
 746		error = xfs_bmap_punch_delalloc_range(ip, start_fsb, 1);
 747		if (error) {
 748			/* something screwed, just bail */
 749			if (!XFS_FORCED_SHUTDOWN(ip->i_mount)) {
 750				xfs_alert(ip->i_mount,
 751			"page discard unable to remove delalloc mapping.");
 752			}
 753			break;
 754		}
 755next_buffer:
 756		offset += 1 << inode->i_blkbits;
 757
 758	} while ((bh = bh->b_this_page) != head);
 759
 760	xfs_iunlock(ip, XFS_ILOCK_EXCL);
 761out_invalidate:
 762	xfs_vm_invalidatepage(page, 0, PAGE_SIZE);
 763	return;
 764}
 765
 766static int
 767xfs_map_cow(
 768	struct xfs_writepage_ctx *wpc,
 769	struct inode		*inode,
 770	loff_t			offset,
 771	unsigned int		*new_type)
 
 
 
 
 
 
 772{
 773	struct xfs_inode	*ip = XFS_I(inode);
 
 774	struct xfs_bmbt_irec	imap;
 775	bool			is_cow = false;
 776	int			error;
 
 
 
 
 
 
 
 
 
 
 
 777
 778	/*
 779	 * If we already have a valid COW mapping keep using it.
 
 
 
 
 
 
 
 
 780	 */
 781	if (wpc->io_type == XFS_IO_COW) {
 782		wpc->imap_valid = xfs_imap_valid(inode, &wpc->imap, offset);
 783		if (wpc->imap_valid) {
 784			*new_type = XFS_IO_COW;
 785			return 0;
 786		}
 787	}
 788
 789	/*
 790	 * Else we need to check if there is a COW mapping at this offset.
 
 791	 */
 792	xfs_ilock(ip, XFS_ILOCK_SHARED);
 793	is_cow = xfs_reflink_find_cow_mapping(ip, offset, &imap);
 794	xfs_iunlock(ip, XFS_ILOCK_SHARED);
 795
 796	if (!is_cow)
 797		return 0;
 798
 799	/*
 800	 * And if the COW mapping has a delayed extent here we need to
 801	 * allocate real space for it now.
 802	 */
 803	if (isnullstartblock(imap.br_startblock)) {
 804		error = xfs_iomap_write_allocate(ip, XFS_COW_FORK, offset,
 805				&imap);
 806		if (error)
 807			return error;
 808	}
 809
 810	wpc->io_type = *new_type = XFS_IO_COW;
 811	wpc->imap_valid = true;
 812	wpc->imap = imap;
 813	return 0;
 814}
 815
 816/*
 817 * We implement an immediate ioend submission policy here to avoid needing to
 818 * chain multiple ioends and hence nest mempool allocations which can violate
 819 * forward progress guarantees we need to provide. The current ioend we are
 820 * adding buffers to is cached on the writepage context, and if the new buffer
 821 * does not append to the cached ioend it will create a new ioend and cache that
 822 * instead.
 823 *
 824 * If a new ioend is created and cached, the old ioend is returned and queued
 825 * locally for submission once the entire page is processed or an error has been
 826 * detected.  While ioends are submitted immediately after they are completed,
 827 * batching optimisations are provided by higher level block plugging.
 828 *
 829 * At the end of a writeback pass, there will be a cached ioend remaining on the
 830 * writepage context that the caller will need to submit.
 831 */
 832static int
 833xfs_writepage_map(
 834	struct xfs_writepage_ctx *wpc,
 835	struct writeback_control *wbc,
 836	struct inode		*inode,
 837	struct page		*page,
 838	loff_t			offset,
 839	__uint64_t              end_offset)
 840{
 841	LIST_HEAD(submit_list);
 842	struct xfs_ioend	*ioend, *next;
 843	struct buffer_head	*bh, *head;
 844	ssize_t			len = 1 << inode->i_blkbits;
 845	int			error = 0;
 846	int			count = 0;
 847	int			uptodate = 1;
 848	unsigned int		new_type;
 849
 850	bh = head = page_buffers(page);
 851	offset = page_offset(page);
 
 
 
 
 
 852	do {
 
 
 853		if (offset >= end_offset)
 854			break;
 855		if (!buffer_uptodate(bh))
 856			uptodate = 0;
 857
 858		/*
 859		 * set_page_dirty dirties all buffers in a page, independent
 860		 * of their state.  The dirty state however is entirely
 861		 * meaningless for holes (!mapped && uptodate), so skip
 862		 * buffers covering holes here.
 863		 */
 864		if (!buffer_mapped(bh) && buffer_uptodate(bh)) {
 865			wpc->imap_valid = false;
 866			continue;
 867		}
 868
 869		if (buffer_unwritten(bh))
 870			new_type = XFS_IO_UNWRITTEN;
 871		else if (buffer_delay(bh))
 872			new_type = XFS_IO_DELALLOC;
 873		else if (buffer_uptodate(bh))
 874			new_type = XFS_IO_OVERWRITE;
 875		else {
 876			if (PageUptodate(page))
 
 
 
 
 
 
 
 
 
 877				ASSERT(buffer_mapped(bh));
 878			/*
 879			 * This buffer is not uptodate and will not be
 880			 * written to disk.  Ensure that we will put any
 881			 * subsequent writeable buffers into a new
 882			 * ioend.
 883			 */
 884			wpc->imap_valid = false;
 885			continue;
 886		}
 887
 888		if (xfs_is_reflink_inode(XFS_I(inode))) {
 889			error = xfs_map_cow(wpc, inode, offset, &new_type);
 890			if (error)
 891				goto out;
 892		}
 893
 894		if (wpc->io_type != new_type) {
 895			wpc->io_type = new_type;
 896			wpc->imap_valid = false;
 897		}
 898
 899		if (wpc->imap_valid)
 900			wpc->imap_valid = xfs_imap_valid(inode, &wpc->imap,
 901							 offset);
 902		if (!wpc->imap_valid) {
 903			error = xfs_map_blocks(inode, offset, &wpc->imap,
 904					     wpc->io_type);
 905			if (error)
 906				goto out;
 907			wpc->imap_valid = xfs_imap_valid(inode, &wpc->imap,
 908							 offset);
 909		}
 910		if (wpc->imap_valid) {
 911			lock_buffer(bh);
 912			if (wpc->io_type != XFS_IO_OVERWRITE)
 913				xfs_map_at_offset(inode, bh, &wpc->imap, offset);
 914			xfs_add_to_ioend(inode, bh, offset, wpc, wbc, &submit_list);
 
 915			count++;
 916		}
 917
 
 
 
 918	} while (offset += len, ((bh = bh->b_this_page) != head));
 919
 920	if (uptodate && bh == head)
 921		SetPageUptodate(page);
 922
 923	ASSERT(wpc->ioend || list_empty(&submit_list));
 
 
 
 924
 925out:
 926	/*
 927	 * On error, we have to fail the ioend here because we have locked
 928	 * buffers in the ioend. If we don't do this, we'll deadlock
 929	 * invalidating the page as that tries to lock the buffers on the page.
 930	 * Also, because we may have set pages under writeback, we have to make
 931	 * sure we run IO completion to mark the error state of the IO
 932	 * appropriately, so we can't cancel the ioend directly here. That means
 933	 * we have to mark this page as under writeback if we included any
 934	 * buffers from it in the ioend chain so that completion treats it
 935	 * correctly.
 936	 *
 937	 * If we didn't include the page in the ioend, the on error we can
 938	 * simply discard and unlock it as there are no other users of the page
 939	 * or it's buffers right now. The caller will still need to trigger
 940	 * submission of outstanding ioends on the writepage context so they are
 941	 * treated correctly on error.
 942	 */
 943	if (count) {
 944		xfs_start_page_writeback(page, !error);
 945
 946		/*
 947		 * Preserve the original error if there was one, otherwise catch
 948		 * submission errors here and propagate into subsequent ioend
 949		 * submissions.
 950		 */
 951		list_for_each_entry_safe(ioend, next, &submit_list, io_list) {
 952			int error2;
 953
 954			list_del_init(&ioend->io_list);
 955			error2 = xfs_submit_ioend(wbc, ioend, error);
 956			if (error2 && !error)
 957				error = error2;
 958		}
 959	} else if (error) {
 960		xfs_aops_discard_page(page);
 961		ClearPageUptodate(page);
 962		unlock_page(page);
 963	} else {
 964		/*
 965		 * We can end up here with no error and nothing to write if we
 966		 * race with a partial page truncate on a sub-page block sized
 967		 * filesystem. In that case we need to mark the page clean.
 968		 */
 969		xfs_start_page_writeback(page, 1);
 970		end_page_writeback(page);
 971	}
 972
 973	mapping_set_error(page->mapping, error);
 974	return error;
 975}
 976
 977/*
 978 * Write out a dirty page.
 979 *
 980 * For delalloc space on the page we need to allocate space and flush it.
 981 * For unwritten space on the page we need to start the conversion to
 982 * regular allocated space.
 983 * For any other dirty buffer heads on the page we should flush them.
 984 */
 985STATIC int
 986xfs_do_writepage(
 987	struct page		*page,
 988	struct writeback_control *wbc,
 989	void			*data)
 990{
 991	struct xfs_writepage_ctx *wpc = data;
 992	struct inode		*inode = page->mapping->host;
 993	loff_t			offset;
 994	__uint64_t              end_offset;
 995	pgoff_t                 end_index;
 996
 997	trace_xfs_writepage(inode, page, 0, 0);
 
 998
 999	ASSERT(page_has_buffers(page));
1000
1001	/*
1002	 * Refuse to write the page out if we are called from reclaim context.
1003	 *
1004	 * This avoids stack overflows when called from deeply used stacks in
1005	 * random callers for direct reclaim or memcg reclaim.  We explicitly
1006	 * allow reclaim from kswapd as the stack usage there is relatively low.
1007	 *
1008	 * This should never happen except in the case of a VM regression so
1009	 * warn about it.
1010	 */
1011	if (WARN_ON_ONCE((current->flags & (PF_MEMALLOC|PF_KSWAPD)) ==
1012			PF_MEMALLOC))
1013		goto redirty;
1014
1015	/*
1016	 * Given that we do not allow direct reclaim to call us, we should
1017	 * never be called while in a filesystem transaction.
1018	 */
1019	if (WARN_ON_ONCE(current->flags & PF_FSTRANS))
1020		goto redirty;
1021
1022	/*
1023	 * Is this page beyond the end of the file?
1024	 *
1025	 * The page index is less than the end_index, adjust the end_offset
1026	 * to the highest offset that this page should represent.
1027	 * -----------------------------------------------------
1028	 * |			file mapping	       | <EOF> |
1029	 * -----------------------------------------------------
1030	 * | Page ... | Page N-2 | Page N-1 |  Page N  |       |
1031	 * ^--------------------------------^----------|--------
1032	 * |     desired writeback range    |      see else    |
1033	 * ---------------------------------^------------------|
1034	 */
1035	offset = i_size_read(inode);
1036	end_index = offset >> PAGE_SHIFT;
1037	if (page->index < end_index)
1038		end_offset = (xfs_off_t)(page->index + 1) << PAGE_SHIFT;
1039	else {
1040		/*
1041		 * Check whether the page to write out is beyond or straddles
1042		 * i_size or not.
1043		 * -------------------------------------------------------
1044		 * |		file mapping		        | <EOF>  |
1045		 * -------------------------------------------------------
1046		 * | Page ... | Page N-2 | Page N-1 |  Page N   | Beyond |
1047		 * ^--------------------------------^-----------|---------
1048		 * |				    |      Straddles     |
1049		 * ---------------------------------^-----------|--------|
1050		 */
1051		unsigned offset_into_page = offset & (PAGE_SIZE - 1);
1052
1053		/*
1054		 * Skip the page if it is fully outside i_size, e.g. due to a
1055		 * truncate operation that is in progress. We must redirty the
1056		 * page so that reclaim stops reclaiming it. Otherwise
1057		 * xfs_vm_releasepage() is called on it and gets confused.
1058		 *
1059		 * Note that the end_index is unsigned long, it would overflow
1060		 * if the given offset is greater than 16TB on 32-bit system
1061		 * and if we do check the page is fully outside i_size or not
1062		 * via "if (page->index >= end_index + 1)" as "end_index + 1"
1063		 * will be evaluated to 0.  Hence this page will be redirtied
1064		 * and be written out repeatedly which would result in an
1065		 * infinite loop, the user program that perform this operation
1066		 * will hang.  Instead, we can verify this situation by checking
1067		 * if the page to write is totally beyond the i_size or if it's
1068		 * offset is just equal to the EOF.
1069		 */
1070		if (page->index > end_index ||
1071		    (page->index == end_index && offset_into_page == 0))
1072			goto redirty;
1073
1074		/*
1075		 * The page straddles i_size.  It must be zeroed out on each
1076		 * and every writepage invocation because it may be mmapped.
1077		 * "A file is mapped in multiples of the page size.  For a file
1078		 * that is not a multiple of the page size, the remaining
1079		 * memory is zeroed when mapped, and writes to that region are
1080		 * not written out to the file."
1081		 */
1082		zero_user_segment(page, offset_into_page, PAGE_SIZE);
1083
1084		/* Adjust the end_offset to the end of file */
1085		end_offset = offset;
1086	}
1087
1088	return xfs_writepage_map(wpc, wbc, inode, page, offset, end_offset);
1089
1090redirty:
1091	redirty_page_for_writepage(wbc, page);
1092	unlock_page(page);
1093	return 0;
1094}
1095
1096STATIC int
1097xfs_vm_writepage(
1098	struct page		*page,
1099	struct writeback_control *wbc)
1100{
1101	struct xfs_writepage_ctx wpc = {
1102		.io_type = XFS_IO_INVALID,
1103	};
1104	int			ret;
1105
1106	ret = xfs_do_writepage(page, wbc, &wpc);
1107	if (wpc.ioend)
1108		ret = xfs_submit_ioend(wbc, wpc.ioend, ret);
1109	return ret;
1110}
1111
1112STATIC int
1113xfs_vm_writepages(
1114	struct address_space	*mapping,
1115	struct writeback_control *wbc)
1116{
1117	struct xfs_writepage_ctx wpc = {
1118		.io_type = XFS_IO_INVALID,
1119	};
1120	int			ret;
1121
1122	xfs_iflags_clear(XFS_I(mapping->host), XFS_ITRUNCATED);
1123	if (dax_mapping(mapping))
1124		return dax_writeback_mapping_range(mapping,
1125				xfs_find_bdev_for_inode(mapping->host), wbc);
1126
1127	ret = write_cache_pages(mapping, wbc, xfs_do_writepage, &wpc);
1128	if (wpc.ioend)
1129		ret = xfs_submit_ioend(wbc, wpc.ioend, ret);
1130	return ret;
1131}
1132
1133/*
1134 * Called to move a page into cleanable state - and from there
1135 * to be released. The page should already be clean. We always
1136 * have buffer heads in this call.
1137 *
1138 * Returns 1 if the page is ok to release, 0 otherwise.
1139 */
1140STATIC int
1141xfs_vm_releasepage(
1142	struct page		*page,
1143	gfp_t			gfp_mask)
1144{
1145	int			delalloc, unwritten;
1146
1147	trace_xfs_releasepage(page->mapping->host, page, 0, 0);
1148
1149	/*
1150	 * mm accommodates an old ext3 case where clean pages might not have had
1151	 * the dirty bit cleared. Thus, it can send actual dirty pages to
1152	 * ->releasepage() via shrink_active_list(). Conversely,
1153	 * block_invalidatepage() can send pages that are still marked dirty
1154	 * but otherwise have invalidated buffers.
1155	 *
1156	 * We want to release the latter to avoid unnecessary buildup of the
1157	 * LRU, skip the former and warn if we've left any lingering
1158	 * delalloc/unwritten buffers on clean pages. Skip pages with delalloc
1159	 * or unwritten buffers and warn if the page is not dirty. Otherwise
1160	 * try to release the buffers.
1161	 */
1162	xfs_count_page_state(page, &delalloc, &unwritten);
1163
1164	if (delalloc) {
1165		WARN_ON_ONCE(!PageDirty(page));
1166		return 0;
1167	}
1168	if (unwritten) {
1169		WARN_ON_ONCE(!PageDirty(page));
1170		return 0;
1171	}
1172
1173	return try_to_free_buffers(page);
1174}
1175
1176/*
1177 * If this is O_DIRECT or the mpage code calling tell them how large the mapping
1178 * is, so that we can avoid repeated get_blocks calls.
1179 *
1180 * If the mapping spans EOF, then we have to break the mapping up as the mapping
1181 * for blocks beyond EOF must be marked new so that sub block regions can be
1182 * correctly zeroed. We can't do this for mappings within EOF unless the mapping
1183 * was just allocated or is unwritten, otherwise the callers would overwrite
1184 * existing data with zeros. Hence we have to split the mapping into a range up
1185 * to and including EOF, and a second mapping for beyond EOF.
1186 */
1187static void
1188xfs_map_trim_size(
1189	struct inode		*inode,
1190	sector_t		iblock,
1191	struct buffer_head	*bh_result,
1192	struct xfs_bmbt_irec	*imap,
1193	xfs_off_t		offset,
1194	ssize_t			size)
1195{
1196	xfs_off_t		mapping_size;
1197
1198	mapping_size = imap->br_startoff + imap->br_blockcount - iblock;
1199	mapping_size <<= inode->i_blkbits;
1200
1201	ASSERT(mapping_size > 0);
1202	if (mapping_size > size)
1203		mapping_size = size;
1204	if (offset < i_size_read(inode) &&
1205	    offset + mapping_size >= i_size_read(inode)) {
1206		/* limit mapping to block that spans EOF */
1207		mapping_size = roundup_64(i_size_read(inode) - offset,
1208					  1 << inode->i_blkbits);
1209	}
1210	if (mapping_size > LONG_MAX)
1211		mapping_size = LONG_MAX;
1212
1213	bh_result->b_size = mapping_size;
1214}
1215
1216static int
1217xfs_get_blocks(
1218	struct inode		*inode,
1219	sector_t		iblock,
1220	struct buffer_head	*bh_result,
1221	int			create)
 
1222{
1223	struct xfs_inode	*ip = XFS_I(inode);
1224	struct xfs_mount	*mp = ip->i_mount;
1225	xfs_fileoff_t		offset_fsb, end_fsb;
1226	int			error = 0;
1227	int			lockmode = 0;
1228	struct xfs_bmbt_irec	imap;
1229	int			nimaps = 1;
1230	xfs_off_t		offset;
1231	ssize_t			size;
1232
1233	BUG_ON(create);
1234
1235	if (XFS_FORCED_SHUTDOWN(mp))
1236		return -EIO;
1237
1238	offset = (xfs_off_t)iblock << inode->i_blkbits;
1239	ASSERT(bh_result->b_size >= (1 << inode->i_blkbits));
1240	size = bh_result->b_size;
1241
1242	if (offset >= i_size_read(inode))
1243		return 0;
1244
1245	/*
1246	 * Direct I/O is usually done on preallocated files, so try getting
1247	 * a block mapping without an exclusive lock first.
1248	 */
1249	lockmode = xfs_ilock_data_map_shared(ip);
 
1250
1251	ASSERT(offset <= mp->m_super->s_maxbytes);
1252	if (offset + size > mp->m_super->s_maxbytes)
1253		size = mp->m_super->s_maxbytes - offset;
1254	end_fsb = XFS_B_TO_FSB(mp, (xfs_ufsize_t)offset + size);
1255	offset_fsb = XFS_B_TO_FSBT(mp, offset);
1256
1257	error = xfs_bmapi_read(ip, offset_fsb, end_fsb - offset_fsb,
1258				&imap, &nimaps, XFS_BMAPI_ENTIRE);
1259	if (error)
1260		goto out_unlock;
1261
1262	if (nimaps) {
1263		trace_xfs_get_blocks_found(ip, offset, size,
1264				ISUNWRITTEN(&imap) ? XFS_IO_UNWRITTEN
1265						   : XFS_IO_OVERWRITE, &imap);
1266		xfs_iunlock(ip, lockmode);
 
 
 
 
 
 
 
 
 
 
 
1267	} else {
1268		trace_xfs_get_blocks_notfound(ip, offset, size);
1269		goto out_unlock;
1270	}
 
1271
1272	/* trim mapping down to size requested */
1273	xfs_map_trim_size(inode, iblock, bh_result, &imap, offset, size);
1274
1275	/*
1276	 * For unwritten extents do not report a disk address in the buffered
1277	 * read case (treat as if we're reading into a hole).
1278	 */
1279	if (imap.br_startblock != HOLESTARTBLOCK &&
1280	    imap.br_startblock != DELAYSTARTBLOCK &&
1281	    !ISUNWRITTEN(&imap))
1282		xfs_map_buffer(inode, bh_result, &imap, offset);
 
 
 
 
 
 
 
 
 
 
1283
1284	/*
1285	 * If this is a realtime file, data may be on a different device.
1286	 * to that pointed to from the buffer_head b_bdev currently.
1287	 */
1288	bh_result->b_bdev = xfs_find_bdev_for_inode(inode);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1289	return 0;
1290
1291out_unlock:
1292	xfs_iunlock(ip, lockmode);
1293	return error;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1294}
1295
1296STATIC ssize_t
1297xfs_vm_direct_IO(
 
1298	struct kiocb		*iocb,
1299	struct iov_iter		*iter)
 
 
1300{
1301	/*
1302	 * We just need the method present so that open/fcntl allow direct I/O.
1303	 */
1304	return -EINVAL;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1305}
1306
1307STATIC sector_t
1308xfs_vm_bmap(
1309	struct address_space	*mapping,
1310	sector_t		block)
1311{
1312	struct inode		*inode = (struct inode *)mapping->host;
1313	struct xfs_inode	*ip = XFS_I(inode);
1314
1315	trace_xfs_vm_bmap(XFS_I(inode));
1316
1317	/*
1318	 * The swap code (ab-)uses ->bmap to get a block mapping and then
1319	 * bypasseѕ the file system for actual I/O.  We really can't allow
1320	 * that on reflinks inodes, so we have to skip out here.  And yes,
1321	 * 0 is the magic code for a bmap error..
1322	 */
1323	if (xfs_is_reflink_inode(ip))
1324		return 0;
1325
1326	filemap_write_and_wait(mapping);
1327	return generic_block_bmap(mapping, block, xfs_get_blocks);
1328}
1329
1330STATIC int
1331xfs_vm_readpage(
1332	struct file		*unused,
1333	struct page		*page)
1334{
1335	trace_xfs_vm_readpage(page->mapping->host, 1);
1336	return mpage_readpage(page, xfs_get_blocks);
1337}
1338
1339STATIC int
1340xfs_vm_readpages(
1341	struct file		*unused,
1342	struct address_space	*mapping,
1343	struct list_head	*pages,
1344	unsigned		nr_pages)
1345{
1346	trace_xfs_vm_readpages(mapping->host, nr_pages);
1347	return mpage_readpages(mapping, pages, nr_pages, xfs_get_blocks);
1348}
1349
1350/*
1351 * This is basically a copy of __set_page_dirty_buffers() with one
1352 * small tweak: buffers beyond EOF do not get marked dirty. If we mark them
1353 * dirty, we'll never be able to clean them because we don't write buffers
1354 * beyond EOF, and that means we can't invalidate pages that span EOF
1355 * that have been marked dirty. Further, the dirty state can leak into
1356 * the file interior if the file is extended, resulting in all sorts of
1357 * bad things happening as the state does not match the underlying data.
1358 *
1359 * XXX: this really indicates that bufferheads in XFS need to die. Warts like
1360 * this only exist because of bufferheads and how the generic code manages them.
1361 */
1362STATIC int
1363xfs_vm_set_page_dirty(
1364	struct page		*page)
1365{
1366	struct address_space	*mapping = page->mapping;
1367	struct inode		*inode = mapping->host;
1368	loff_t			end_offset;
1369	loff_t			offset;
1370	int			newly_dirty;
1371
1372	if (unlikely(!mapping))
1373		return !TestSetPageDirty(page);
1374
1375	end_offset = i_size_read(inode);
1376	offset = page_offset(page);
1377
1378	spin_lock(&mapping->private_lock);
1379	if (page_has_buffers(page)) {
1380		struct buffer_head *head = page_buffers(page);
1381		struct buffer_head *bh = head;
1382
1383		do {
1384			if (offset < end_offset)
1385				set_buffer_dirty(bh);
1386			bh = bh->b_this_page;
1387			offset += 1 << inode->i_blkbits;
1388		} while (bh != head);
1389	}
1390	/*
1391	 * Lock out page->mem_cgroup migration to keep PageDirty
1392	 * synchronized with per-memcg dirty page counters.
1393	 */
1394	lock_page_memcg(page);
1395	newly_dirty = !TestSetPageDirty(page);
1396	spin_unlock(&mapping->private_lock);
1397
1398	if (newly_dirty) {
1399		/* sigh - __set_page_dirty() is static, so copy it here, too */
1400		unsigned long flags;
1401
1402		spin_lock_irqsave(&mapping->tree_lock, flags);
1403		if (page->mapping) {	/* Race with truncate? */
1404			WARN_ON_ONCE(!PageUptodate(page));
1405			account_page_dirtied(page, mapping);
1406			radix_tree_tag_set(&mapping->page_tree,
1407					page_index(page), PAGECACHE_TAG_DIRTY);
1408		}
1409		spin_unlock_irqrestore(&mapping->tree_lock, flags);
1410	}
1411	unlock_page_memcg(page);
1412	if (newly_dirty)
1413		__mark_inode_dirty(mapping->host, I_DIRTY_PAGES);
1414	return newly_dirty;
1415}
1416
1417const struct address_space_operations xfs_address_space_operations = {
1418	.readpage		= xfs_vm_readpage,
1419	.readpages		= xfs_vm_readpages,
1420	.writepage		= xfs_vm_writepage,
1421	.writepages		= xfs_vm_writepages,
1422	.set_page_dirty		= xfs_vm_set_page_dirty,
1423	.releasepage		= xfs_vm_releasepage,
1424	.invalidatepage		= xfs_vm_invalidatepage,
 
 
1425	.bmap			= xfs_vm_bmap,
1426	.direct_IO		= xfs_vm_direct_IO,
1427	.migratepage		= buffer_migrate_page,
1428	.is_partially_uptodate  = block_is_partially_uptodate,
1429	.error_remove_page	= generic_error_remove_page,
1430};