Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9462544f authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge branch 'for-linus' of git://oss.sgi.com:8090/xfs/xfs-2.6

* 'for-linus' of git://oss.sgi.com:8090/xfs/xfs-2.6:
  [XFS] Write at EOF may not update filesize correctly.
parents 7f397dcd df3c7244
Loading
Loading
Loading
Loading
+17 −9
Original line number Diff line number Diff line
@@ -701,7 +701,7 @@ xfs_is_delayed_page(
			else if (buffer_delay(bh))
				acceptable = (type == IOMAP_DELAY);
			else if (buffer_dirty(bh) && buffer_mapped(bh))
				acceptable = (type == 0);
				acceptable = (type == IOMAP_NEW);
			else
				break;
		} while ((bh = bh->b_this_page) != head);
@@ -810,7 +810,7 @@ xfs_convert_page(
			page_dirty--;
			count++;
		} else {
			type = 0;
			type = IOMAP_NEW;
			if (buffer_mapped(bh) && all_bh && startio) {
				lock_buffer(bh);
				xfs_add_to_ioend(inode, bh, offset,
@@ -968,8 +968,8 @@ xfs_page_state_convert(

	bh = head = page_buffers(page);
	offset = page_offset(page);
	flags = -1;
	type = IOMAP_READ;
	flags = BMAPI_READ;
	type = IOMAP_NEW;

	/* TODO: cleanup count and page_dirty */

@@ -1055,7 +1055,7 @@ xfs_page_state_convert(
			 * That means it must already have extents allocated
			 * underneath it. Map the extent by reading it.
			 */
			if (!iomap_valid || type != IOMAP_READ) {
			if (!iomap_valid || flags != BMAPI_READ) {
				flags = BMAPI_READ;
				size = xfs_probe_cluster(inode, page, bh,
								head, 1);
@@ -1066,7 +1066,15 @@ xfs_page_state_convert(
				iomap_valid = xfs_iomap_valid(&iomap, offset);
			}

			type = IOMAP_READ;
			/*
			 * We set the type to IOMAP_NEW in case we are doing a
			 * small write at EOF that is extending the file but
			 * without needing an allocation. We need to update the
			 * file size on I/O completion in this case so it is
			 * the same case as having just allocated a new extent
			 * that we are writing into for the first time.
			 */
			type = IOMAP_NEW;
			if (!test_and_set_bit(BH_Lock, &bh->b_state)) {
				ASSERT(buffer_mapped(bh));
				if (iomap_valid)