mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Greg KH <gregkh@suse.de>
To: linux-kernel@vger.kernel.org, stable@kernel.org
Cc: stable-review@kernel.org, torvalds@linux-foundation.org,
	akpm@linux-foundation.org, alan@lxorguk.ukuu.org.uk,
	"Theodore Tso" <tytso@mit.edu>
Subject: [21/35] ext4: fix nomblk_io_submit option so it correctly converts uninit blocks
Date: Fri, 26 Aug 2011 14:49:38 -0700	[thread overview]
Message-ID: <20110826215055.048187376@clark.kroah.org> (raw)
In-Reply-To: <20110826215139.GA11498@kroah.com>

3.0-stable review patch.  If anyone has any objections, please let us know.

------------------

From: Theodore Ts'o <tytso@mit.edu>

commit 9dd75f1f1a02d656a11a7b9b9e6c2759b9c1e946 upstream.

Bug discovered by Jan Kara:

Finally, commit 1449032be17abb69116dbc393f67ceb8bd034f92 returned back
the old IO submission code but apparently it forgot to return the old
handling of uninitialized buffers so we unconditionnaly call
block_write_full_page() without specifying end_io function. So AFAICS
we never convert unwritten extents to written in some cases. For
example when I mount the fs as: mount -t ext4 -o
nomblk_io_submit,dioread_nolock /dev/ubdb /mnt and do
        int fd = open(argv[1], O_RDWR | O_CREAT | O_TRUNC, 0600);
        char buf[1024];
        memset(buf, 'a', sizeof(buf));
        fallocate(fd, 0, 0, 16384);
        write(fd, buf, sizeof(buf));

I get a file full of zeros (after remounting the filesystem so that
pagecache is dropped) instead of seeing the first KB contain 'a's.

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

---
 fs/ext4/inode.c |    7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

--- a/fs/ext4/inode.c
+++ b/fs/ext4/inode.c
@@ -2156,7 +2156,12 @@ static int mpage_da_submit_io(struct mpa
 			else if (test_opt(inode->i_sb, MBLK_IO_SUBMIT))
 				err = ext4_bio_write_page(&io_submit, page,
 							  len, mpd->wbc);
-			else
+			else if (buffer_uninit(page_bufs)) {
+				ext4_set_bh_endio(page_bufs, inode);
+				err = block_write_full_page_endio(page,
+					noalloc_get_block_write,
+					mpd->wbc, ext4_end_io_buffer_write);
+			} else
 				err = block_write_full_page(page,
 					noalloc_get_block_write, mpd->wbc);
 



  parent reply	other threads:[~2011-08-27 14:58 UTC|newest]

Thread overview: 38+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-08-26 21:51 [00/35] 3.0.4-stable review Greg KH
2011-08-26 21:49 ` [01/35] genirq: Fix wrong bit operation Greg KH
2011-08-26 21:49 ` [02/35] cifs: demote cERROR in build_path_from_dentry to cFYI Greg KH
2011-08-26 21:49 ` [03/35] befs: Validate length of long symbolic links Greg KH
2011-08-26 21:49 ` [04/35] i7core_edac: fixed typo in error count calculation Greg KH
2011-08-26 21:49 ` [05/35] [CIFS] possible memory corruption on mount Greg KH
2011-08-26 21:49 ` [06/35] x86, intel, power: Correct the MSR_IA32_ENERGY_PERF_BIAS message Greg KH
2011-08-26 21:49 ` [07/35] pnfs-obj: Fix the comp_index != 0 case Greg KH
2011-08-26 21:49 ` [08/35] pnfs-obj: Bug when we are running out of bio Greg KH
2011-08-26 21:49 ` [09/35] NFSv4.1: Fix the callback highest_used_slotid behaviour Greg KH
2011-08-26 21:49 ` [10/35] NFSv4.1: Return NFS4ERR_BADSESSION to callbacks during session resets Greg KH
2011-08-26 21:49 ` [11/35] x86, mtrr: lock stop machine during MTRR rendezvous sequence Greg KH
2011-08-26 21:49 ` [12/35] Btrfs: detect wether a device supports discard Greg KH
2011-08-26 21:49 ` [13/35] loop: fix deadlock when sysfs and LOOP_CLR_FD race against each other Greg KH
2011-08-26 21:49 ` [14/35] Btrfs: fix an oops of log replay Greg KH
2011-08-26 21:49 ` [15/35] ALSA: usb-audio - Fix missing mixer dB information Greg KH
2011-08-26 21:49 ` [16/35] ALSA: snd_usb_caiaq: track submitted output urbs Greg KH
2011-08-26 21:49 ` [17/35] ALSA: ac97: Add HP Compaq dc5100 SFF(PT003AW) to Headphone Jack Sense whitelist Greg KH
2011-08-26 21:49 ` [18/35] ext4: Fix ext4_should_writeback_data() for no-journal mode Greg KH
2011-08-26 21:49 ` [19/35] ext4: call ext4_ioend_wait and ext4_flush_completed_IO in ext4_evict_inode Greg KH
2011-08-26 21:49 ` [20/35] ext4: Resolve the hang of direct i/o read in handling EXT4_IO_END_UNWRITTEN Greg KH
2011-08-26 21:49 ` Greg KH [this message]
2011-08-26 21:49 ` [22/35] xen-blkfront: Drop name and minor adjustments for emulated scsi devices Greg KH
2011-08-26 21:49 ` [23/35] xen-blkfront: Fix one off warning about name clash Greg KH
2011-08-26 21:49 ` [24/35] xen/x86: replace order-based range checking of M2P table by linear one Greg KH
2011-08-26 21:49 ` [25/35] xen: Do not enable PV IPIs when vector callback not present Greg KH
2011-08-26 21:49 ` [26/35] x86, olpc: Wait for last byte of EC command to be accepted Greg KH
2011-08-26 21:49 ` [27/35] x86-32, vdso: On system call restart after SYSENTER, use int $0x80 Greg KH
2011-08-26 21:49 ` [28/35] x86, UV: Remove UV delay in starting slave cpus Greg KH
2011-08-26 21:49 ` [29/35] drm/ttm: fix ttm_bo_add_ttm(user) failure path Greg KH
2011-08-26 21:49 ` [30/35] drm/radeon: Extended DDC Probing for Toshiba L300D Radeon Mobility X1100 HDMI-A Connector Greg KH
2011-08-26 21:49 ` [31/35] fuse: check size of FUSE_NOTIFY_INVAL_ENTRY message Greg KH
2011-08-26 21:49 ` [32/35] rt2x00: fix order of entry flags modification Greg KH
2011-08-29  8:29   ` Stanislaw Gruszka
2011-08-30 21:53     ` [stable] " Greg KH
2011-08-26 21:49 ` [33/35] mmc: sdhci: fix retuning timer wrongly deleted in sdhci_tasklet_finish Greg KH
2011-08-26 21:49 ` [34/35] igb: Fix lack of flush after register write and before delay Greg KH
2011-08-26 21:49 ` [35/35] Add a personality to report 2.6.x version numbers Greg KH

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20110826215055.048187376@clark.kroah.org \
    --to=gregkh@suse.de \
    --cc=akpm@linux-foundation.org \
    --cc=alan@lxorguk.ukuu.org.uk \
    --cc=linux-kernel@vger.kernel.org \
    --cc=stable-review@kernel.org \
    --cc=stable@kernel.org \
    --cc=torvalds@linux-foundation.org \
    --cc=tytso@mit.edu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®