linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: linux-kernel@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	stable@vger.kernel.org, Filipe Manana <fdmanana@suse.com>,
	Chris Mason <clm@fb.com>
Subject: [PATCH 3.19 073/177] Btrfs: fix data loss in the fast fsync path
Date: Mon, 16 Mar 2015 15:08:00 +0100	[thread overview]
Message-ID: <20150316140816.419674043@linuxfoundation.org> (raw)
In-Reply-To: <20150316140813.085032723@linuxfoundation.org>

3.19-stable review patch.  If anyone has any objections, please let me know.

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

From: Filipe Manana <fdmanana@suse.com>

commit 3a8b36f378060d20062a0918e99fae39ff077bf0 upstream.

When using the fast file fsync code path we can miss the fact that new
writes happened since the last file fsync and therefore return without
waiting for the IO to finish and write the new extents to the fsync log.

Here's an example scenario where the fsync will miss the fact that new
file data exists that wasn't yet durably persisted:

1. fs_info->last_trans_committed == N - 1 and current transaction is
   transaction N (fs_info->generation == N);

2. do a buffered write;

3. fsync our inode, this clears our inode's full sync flag, starts
   an ordered extent and waits for it to complete - when it completes
   at btrfs_finish_ordered_io(), the inode's last_trans is set to the
   value N (via btrfs_update_inode_fallback -> btrfs_update_inode ->
   btrfs_set_inode_last_trans);

4. transaction N is committed, so fs_info->last_trans_committed is now
   set to the value N and fs_info->generation remains with the value N;

5. do another buffered write, when this happens btrfs_file_write_iter
   sets our inode's last_trans to the value N + 1 (that is
   fs_info->generation + 1 == N + 1);

6. transaction N + 1 is started and fs_info->generation now has the
   value N + 1;

7. transaction N + 1 is committed, so fs_info->last_trans_committed
   is set to the value N + 1;

8. fsync our inode - because it doesn't have the full sync flag set,
   we only start the ordered extent, we don't wait for it to complete
   (only in a later phase) therefore its last_trans field has the
   value N + 1 set previously by btrfs_file_write_iter(), and so we
   have:

       inode->last_trans <= fs_info->last_trans_committed
           (N + 1)              (N + 1)

   Which made us not log the last buffered write and exit the fsync
   handler immediately, returning success (0) to user space and resulting
   in data loss after a crash.

This can actually be triggered deterministically and the following excerpt
from a testcase I made for xfstests triggers the issue. It moves a dummy
file across directories and then fsyncs the old parent directory - this
is just to trigger a transaction commit, so moving files around isn't
directly related to the issue but it was chosen because running 'sync' for
example does more than just committing the current transaction, as it
flushes/waits for all file data to be persisted. The issue can also happen
at random periods, since the transaction kthread periodicaly commits the
current transaction (about every 30 seconds by default).
The body of the test is:

  _scratch_mkfs >> $seqres.full 2>&1
  _init_flakey
  _mount_flakey

  # Create our main test file 'foo', the one we check for data loss.
  # By doing an fsync against our file, it makes btrfs clear the 'needs_full_sync'
  # bit from its flags (btrfs inode specific flags).
  $XFS_IO_PROG -f -c "pwrite -S 0xaa 0 8K" \
                  -c "fsync" $SCRATCH_MNT/foo | _filter_xfs_io

  # Now create one other file and 2 directories. We will move this second file
  # from one directory to the other later because it forces btrfs to commit its
  # currently open transaction if we fsync the old parent directory. This is
  # necessary to trigger the data loss bug that affected btrfs.
  mkdir $SCRATCH_MNT/testdir_1
  touch $SCRATCH_MNT/testdir_1/bar
  mkdir $SCRATCH_MNT/testdir_2

  # Make sure everything is durably persisted.
  sync

  # Write more 8Kb of data to our file.
  $XFS_IO_PROG -c "pwrite -S 0xbb 8K 8K" $SCRATCH_MNT/foo | _filter_xfs_io

  # Move our 'bar' file into a new directory.
  mv $SCRATCH_MNT/testdir_1/bar $SCRATCH_MNT/testdir_2/bar

  # Fsync our first directory. Because it had a file moved into some other
  # directory, this made btrfs commit the currently open transaction. This is
  # a condition necessary to trigger the data loss bug.
  $XFS_IO_PROG -c "fsync" $SCRATCH_MNT/testdir_1

  # Now fsync our main test file. If the fsync succeeds, we expect the 8Kb of
  # data we wrote previously to be persisted and available if a crash happens.
  # This did not happen with btrfs, because of the transaction commit that
  # happened when we fsynced the parent directory.
  $XFS_IO_PROG -c "fsync" $SCRATCH_MNT/foo

  # Simulate a crash/power loss.
  _load_flakey_table $FLAKEY_DROP_WRITES
  _unmount_flakey

  _load_flakey_table $FLAKEY_ALLOW_WRITES
  _mount_flakey

  # Now check that all data we wrote before are available.
  echo "File content after log replay:"
  od -t x1 $SCRATCH_MNT/foo

  status=0
  exit

The expected golden output for the test, which is what we get with this
fix applied (or when running against ext3/4 and xfs), is:

  wrote 8192/8192 bytes at offset 0
  XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
  wrote 8192/8192 bytes at offset 8192
  XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
  File content after log replay:
  0000000 aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
  *
  0020000 bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb
  *
  0040000

Without this fix applied, the output shows the test file does not have
the second 8Kb extent that we successfully fsynced:

  wrote 8192/8192 bytes at offset 0
  XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
  wrote 8192/8192 bytes at offset 8192
  XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
  File content after log replay:
  0000000 aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
  *
  0020000

So fix this by skipping the fsync only if we're doing a full sync and
if the inode's last_trans is <= fs_info->last_trans_committed, or if
the inode is already in the log. Also remove setting the inode's
last_trans in btrfs_file_write_iter since it's useless/unreliable.

Also because btrfs_file_write_iter no longer sets inode->last_trans to
fs_info->generation + 1, don't set last_trans to 0 if we bail out and don't
bail out if last_trans is 0, otherwise something as simple as the following
example wouldn't log the second write on the last fsync:

  1. write to file

  2. fsync file

  3. fsync file
       |--> btrfs_inode_in_log() returns true and it set last_trans to 0

  4. write to file
       |--> btrfs_file_write_iter() no longers sets last_trans, so it
            remained with a value of 0
  5. fsync
       |--> inode->last_trans == 0, so it bails out without logging the
            second write

A test case for xfstests will be sent soon.

Signed-off-by: Filipe Manana <fdmanana@suse.com>
Signed-off-by: Chris Mason <clm@fb.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 fs/btrfs/file.c |   56 ++++++++++++++++++++++++++++----------------------------
 1 file changed, 28 insertions(+), 28 deletions(-)

--- a/fs/btrfs/file.c
+++ b/fs/btrfs/file.c
@@ -1811,22 +1811,10 @@ static ssize_t btrfs_file_write_iter(str
 	mutex_unlock(&inode->i_mutex);
 
 	/*
-	 * we want to make sure fsync finds this change
-	 * but we haven't joined a transaction running right now.
-	 *
-	 * Later on, someone is sure to update the inode and get the
-	 * real transid recorded.
-	 *
-	 * We set last_trans now to the fs_info generation + 1,
-	 * this will either be one more than the running transaction
-	 * or the generation used for the next transaction if there isn't
-	 * one running right now.
-	 *
 	 * We also have to set last_sub_trans to the current log transid,
 	 * otherwise subsequent syncs to a file that's been synced in this
 	 * transaction will appear to have already occured.
 	 */
-	BTRFS_I(inode)->last_trans = root->fs_info->generation + 1;
 	BTRFS_I(inode)->last_sub_trans = root->log_transid;
 	if (num_written > 0) {
 		err = generic_write_sync(file, pos, num_written);
@@ -1959,25 +1947,37 @@ int btrfs_sync_file(struct file *file, l
 	atomic_inc(&root->log_batch);
 
 	/*
-	 * check the transaction that last modified this inode
-	 * and see if its already been committed
-	 */
-	if (!BTRFS_I(inode)->last_trans) {
-		mutex_unlock(&inode->i_mutex);
-		goto out;
-	}
-
-	/*
-	 * if the last transaction that changed this file was before
-	 * the current transaction, we can bail out now without any
-	 * syncing
+	 * If the last transaction that changed this file was before the current
+	 * transaction and we have the full sync flag set in our inode, we can
+	 * bail out now without any syncing.
+	 *
+	 * Note that we can't bail out if the full sync flag isn't set. This is
+	 * because when the full sync flag is set we start all ordered extents
+	 * and wait for them to fully complete - when they complete they update
+	 * the inode's last_trans field through:
+	 *
+	 *     btrfs_finish_ordered_io() ->
+	 *         btrfs_update_inode_fallback() ->
+	 *             btrfs_update_inode() ->
+	 *                 btrfs_set_inode_last_trans()
+	 *
+	 * So we are sure that last_trans is up to date and can do this check to
+	 * bail out safely. For the fast path, when the full sync flag is not
+	 * set in our inode, we can not do it because we start only our ordered
+	 * extents and don't wait for them to complete (that is when
+	 * btrfs_finish_ordered_io runs), so here at this point their last_trans
+	 * value might be less than or equals to fs_info->last_trans_committed,
+	 * and setting a speculative last_trans for an inode when a buffered
+	 * write is made (such as fs_info->generation + 1 for example) would not
+	 * be reliable since after setting the value and before fsync is called
+	 * any number of transactions can start and commit (transaction kthread
+	 * commits the current transaction periodically), and a transaction
+	 * commit does not start nor waits for ordered extents to complete.
 	 */
 	smp_mb();
 	if (btrfs_inode_in_log(inode, root->fs_info->generation) ||
-	    BTRFS_I(inode)->last_trans <=
-	    root->fs_info->last_trans_committed) {
-		BTRFS_I(inode)->last_trans = 0;
-
+	    (full_sync && BTRFS_I(inode)->last_trans <=
+	     root->fs_info->last_trans_committed)) {
 		/*
 		 * We'v had everything committed since the last time we were
 		 * modified so clear this flag in case it was set for whatever



  parent reply	other threads:[~2015-03-16 15:51 UTC|newest]

Thread overview: 164+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-03-16 14:06 [PATCH 3.19 000/177] 3.19.2-stable review Greg Kroah-Hartman
2015-03-16 14:06 ` [PATCH 3.19 002/177] ipv6: addrconf: add missing validate_link_af handler Greg Kroah-Hartman
2015-03-16 14:06 ` [PATCH 3.19 003/177] pktgen: fix UDP checksum computation Greg Kroah-Hartman
2015-03-16 14:06 ` [PATCH 3.19 004/177] rtnetlink: ifla_vf_policy: fix misuses of NLA_BINARY Greg Kroah-Hartman
2015-03-16 14:06 ` [PATCH 3.19 005/177] ipv6: Fix fragment id assignment on LE arches Greg Kroah-Hartman
2015-03-16 14:06 ` [PATCH 3.19 006/177] ipv6: Make __ipv6_select_ident static Greg Kroah-Hartman
2015-03-16 14:06 ` [PATCH 3.19 007/177] tcp: make sure skb is not shared before using skb_get() Greg Kroah-Hartman
2015-03-16 14:06 ` [PATCH 3.19 008/177] ipv6: fix ipv6_cow_metrics for non DST_HOST case Greg Kroah-Hartman
2015-03-16 14:06 ` [PATCH 3.19 009/177] rtnetlink: call ->dellink on failure when ->newlink exists Greg Kroah-Hartman
2015-03-16 14:06 ` [PATCH 3.19 011/177] ipv4: ip_check_defrag should correctly check return value of skb_copy_bits Greg Kroah-Hartman
2015-03-16 14:06 ` [PATCH 3.19 012/177] ipv4: ip_check_defrag should not assume that skb_network_offset is zero Greg Kroah-Hartman
2015-03-16 14:07 ` [PATCH 3.19 013/177] net: phy: Fix verification of EEE support in phy_init_eee Greg Kroah-Hartman
2015-03-16 14:07 ` [PATCH 3.19 015/177] openvswitch: Fix net exit Greg Kroah-Hartman
2015-03-16 14:07 ` [PATCH 3.19 016/177] sock: sock_dequeue_err_skb() needs hard irq safety Greg Kroah-Hartman
2015-03-16 14:07 ` [PATCH 3.19 017/177] net: reject creation of netdev names with colons Greg Kroah-Hartman
2015-03-16 14:07 ` [PATCH 3.19 018/177] Revert "r8169: add support for Byte Queue Limits" Greg Kroah-Hartman
2015-03-16 14:07 ` [PATCH 3.19 019/177] net: pktgen: disable xmit_clone on virtual devices Greg Kroah-Hartman
2015-03-16 14:07 ` [PATCH 3.19 020/177] team: fix possible null pointer dereference in team_handle_frame Greg Kroah-Hartman
2015-03-16 14:07 ` [PATCH 3.19 021/177] net: compat: Ignore MSG_CMSG_COMPAT in compat_sys_{send, recv}msg Greg Kroah-Hartman
2015-03-16 14:07 ` [PATCH 3.19 022/177] macvtap: make sure neighbour code can push ethernet header Greg Kroah-Hartman
2015-03-16 14:07 ` [PATCH 3.19 023/177] net: bcmgenet: fix throughtput regression Greg Kroah-Hartman
2015-03-16 14:07 ` [PATCH 3.19 024/177] net: bcmgenet: fix software maintained statistics Greg Kroah-Hartman
2015-03-16 14:07 ` [PATCH 3.19 025/177] sh_eth: Fix lost MAC address on kexec Greg Kroah-Hartman
2015-03-16 14:07 ` [PATCH 3.19 026/177] net: do not use rcu in rtnl_dump_ifinfo() Greg Kroah-Hartman
2015-03-16 14:07 ` [PATCH 3.19 027/177] usb: plusb: Add support for National Instruments host-to-host cable Greg Kroah-Hartman
2015-03-16 14:07 ` [PATCH 3.19 028/177] udp: only allow UFO for packets from SOCK_DGRAM sockets Greg Kroah-Hartman
2015-03-16 14:07 ` [PATCH 3.19 029/177] net: ping: Return EAFNOSUPPORT when appropriate Greg Kroah-Hartman
2015-03-16 14:07 ` [PATCH 3.19 030/177] team: dont traverse port list using rcu in team_set_mac_address Greg Kroah-Hartman
2015-03-16 14:07 ` [PATCH 3.19 031/177] mm/hugetlb: fix getting refcount 0 page in hugetlb_fault() Greg Kroah-Hartman
2015-03-16 14:07 ` [PATCH 3.19 032/177] mm/hugetlb: add migration/hwpoisoned entry check in hugetlb_change_protection Greg Kroah-Hartman
2015-03-16 14:07 ` [PATCH 3.19 033/177] mm/hugetlb: add migration entry check in __unmap_hugepage_range Greg Kroah-Hartman
2015-03-16 14:07 ` [PATCH 3.19 034/177] mm, hugetlb: remove unnecessary lower bound on sysctl handlers"? Greg Kroah-Hartman
2015-03-16 14:07 ` [PATCH 3.19 035/177] mm: when stealing freepages, also take pages created by splitting buddy page Greg Kroah-Hartman
2015-03-16 14:07 ` [PATCH 3.19 036/177] mm/mmap.c: fix arithmetic overflow in __vm_enough_memory() Greg Kroah-Hartman
2015-03-16 14:07 ` [PATCH 3.19 037/177] mm/nommu.c: " Greg Kroah-Hartman
2015-03-16 14:07 ` [PATCH 3.19 038/177] mm/compaction: fix wrong order check in compact_finished() Greg Kroah-Hartman
2015-03-16 14:07 ` [PATCH 3.19 039/177] mm/memory.c: actually remap enough memory Greg Kroah-Hartman
2015-03-16 14:07 ` [PATCH 3.19 040/177] mm: hwpoison: drop lru_add_drain_all() in __soft_offline_page() Greg Kroah-Hartman
2015-03-16 14:07 ` [PATCH 3.19 041/177] mm: fix negative nr_isolated counts Greg Kroah-Hartman
2015-03-16 14:07 ` [PATCH 3.19 042/177] mm/nommu: fix memory leak Greg Kroah-Hartman
2015-03-16 14:07 ` [PATCH 3.19 043/177] mm: page_alloc: revert inadvertent !__GFP_FS retry behavior change Greg Kroah-Hartman
2015-03-16 14:07 ` [PATCH 3.19 044/177] drm/tegra: Use correct relocation target offsets Greg Kroah-Hartman
2015-03-16 14:07 ` [PATCH 3.19 048/177] drm/radeon/dp: Set EDP_CONFIGURATION_SET for bridge chips if necessary Greg Kroah-Hartman
2015-03-16 14:07 ` [PATCH 3.19 049/177] drm/radeon: fix voltage setup on hawaii Greg Kroah-Hartman
2015-03-16 14:07 ` [PATCH 3.19 050/177] drm/i915: Insert a command barrier on BLT/BSD cache flushes Greg Kroah-Hartman
2015-03-16 14:07 ` [PATCH 3.19 051/177] drm/i915: Drop vblank wait from intel_dp_link_down Greg Kroah-Hartman
2015-03-16 14:07 ` [PATCH 3.19 054/177] drm/i915: Clamp efficient frequency to valid range Greg Kroah-Hartman
2015-03-16 14:07 ` [PATCH 3.19 055/177] target: Fix PR_APTPL_BUF_LEN buffer size limitation Greg Kroah-Hartman
2015-03-16 14:07 ` [PATCH 3.19 056/177] target: Add missing WRITE_SAME end-of-device sanity check Greg Kroah-Hartman
2015-03-16 14:07 ` [PATCH 3.19 057/177] target: Check for LBA + sectors wrap-around in sbc_parse_cdb Greg Kroah-Hartman
2015-03-16 14:07 ` [PATCH 3.19 058/177] x86/asm/entry/64: Remove a bogus ret_from_fork optimization Greg Kroah-Hartman
2015-03-16 14:07 ` [PATCH 3.19 059/177] x86/fpu/xsaves: Fix improper uses of __ex_table Greg Kroah-Hartman
2015-03-16 14:07 ` [PATCH 3.19 060/177] iio: mxs-lradc: fix iio channel map regression Greg Kroah-Hartman
2015-03-16 14:07 ` [PATCH 3.19 061/177] iio: imu: adis16400: Fix sign extension Greg Kroah-Hartman
2015-03-16 14:07 ` [PATCH 3.19 067/177] iio:adc:mcp3422 Fix incorrect scales table Greg Kroah-Hartman
2015-03-16 14:07 ` [PATCH 3.19 068/177] IIO: si7020: Allocate correct amount of memory in devm_iio_device_alloc Greg Kroah-Hartman
2015-03-16 14:07 ` [PATCH 3.19 069/177] Revert "iio:humidity:si7020: fix pointer to i2c client" Greg Kroah-Hartman
2015-03-16 14:07 ` [PATCH 3.19 070/177] mei: make device disabled on stop unconditionally Greg Kroah-Hartman
2015-03-16 14:07 ` [PATCH 3.19 071/177] Btrfs: fix fsync race leading to ordered extent memory leaks Greg Kroah-Hartman
2015-03-16 14:07 ` [PATCH 3.19 072/177] btrfs: fix lost return value due to variable shadowing Greg Kroah-Hartman
2015-03-16 14:08 ` Greg Kroah-Hartman [this message]
2015-03-16 14:08 ` [PATCH 3.19 074/177] Btrfs:__add_inode_ref: out of bounds memory read when looking for extended ref Greg Kroah-Hartman
2015-03-16 14:08 ` [PATCH 3.19 075/177] KVM: emulate: fix CMPXCHG8B on 32-bit hosts Greg Kroah-Hartman
2015-03-16 14:08 ` [PATCH 3.19 076/177] KVM: MIPS: Fix trace event to save PC directly Greg Kroah-Hartman
2015-03-16 14:08 ` [PATCH 3.19 077/177] uas: Add US_FL_NO_REPORT_OPCODES for JMicron JMS539 Greg Kroah-Hartman
2015-03-16 14:08 ` [PATCH 3.19 078/177] Revert "USB: serial: make bulk_out_size a lower limit" Greg Kroah-Hartman
2015-03-16 14:08 ` [PATCH 3.19 079/177] USB: serial: cp210x: Adding Seletek device ids Greg Kroah-Hartman
2015-03-16 14:08 ` [PATCH 3.19 080/177] USB: mxuport: fix null deref when used as a console Greg Kroah-Hartman
2015-03-16 14:08 ` [PATCH 3.19 081/177] USB: usbfs: dont leak kernel data in siginfo Greg Kroah-Hartman
2015-03-16 14:08 ` [PATCH 3.19 082/177] USB: ftdi_sio: add PIDs for Actisense USB devices Greg Kroah-Hartman
2015-03-16 14:08 ` [PATCH 3.19 083/177] usb: ftdi_sio: Add jtag quirk support for Cyber Cortex AV boards Greg Kroah-Hartman
2015-03-16 14:08 ` [PATCH 3.19 084/177] usb: dwc3: dwc3-omap: Fix disable IRQ Greg Kroah-Hartman
2015-03-16 14:08 ` [PATCH 3.19 085/177] usb: gadget: configfs: dont NUL-terminate (sub)compatible ids Greg Kroah-Hartman
2015-03-16 14:08 ` [PATCH 3.19 086/177] usb: XHCI: platform: Move the Marvell quirks after the enabling the clocks Greg Kroah-Hartman
2015-03-16 14:08 ` [PATCH 3.19 087/177] xhci: Allocate correct amount of scratchpad buffers Greg Kroah-Hartman
2015-03-16 14:08 ` [PATCH 3.19 088/177] xhci: fix reporting of 0-sized URBs in control endpoint Greg Kroah-Hartman
2015-03-16 14:08 ` [PATCH 3.19 089/177] xhci: Workaround for PME stuck issues in Intel xhci Greg Kroah-Hartman
2015-03-16 14:08 ` [PATCH 3.19 090/177] mac80211: Send EAPOL frames at lowest rate Greg Kroah-Hartman
2015-03-16 14:08 ` [PATCH 3.19 091/177] mac80211: notify channel switch at the end of ieee80211_chswitch_post_beacon() Greg Kroah-Hartman
2015-03-16 14:08 ` [PATCH 3.19 092/177] net: irda: fix wait_until_sent poll timeout Greg Kroah-Hartman
2015-03-16 14:08 ` [PATCH 3.19 093/177] USB: serial: fix infinite wait_until_sent timeout Greg Kroah-Hartman
2015-03-16 14:08 ` [PATCH 3.19 094/177] TTY: fix tty_wait_until_sent on 64-bit machines Greg Kroah-Hartman
2015-03-16 14:08 ` [PATCH 3.19 095/177] USB: serial: fix potential use-after-free after failed probe Greg Kroah-Hartman
2015-03-16 14:08 ` [PATCH 3.19 096/177] USB: serial: fix tty-device error handling at probe Greg Kroah-Hartman
2015-03-16 14:08 ` [PATCH 3.19 097/177] autofs4 copy_dev_ioctl(): keep the value of ->size wed used for allocation Greg Kroah-Hartman
2015-03-16 14:08 ` [PATCH 3.19 098/177] autofs4: Wrong format for printing dentry Greg Kroah-Hartman
2015-03-16 14:08 ` [PATCH 3.19 099/177] debugfs: leave freeing a symlink body until inode eviction Greg Kroah-Hartman
2015-03-16 14:08 ` [PATCH 3.19 100/177] procfs: fix race between symlink removals and traversals Greg Kroah-Hartman
2015-03-16 14:08 ` [PATCH 3.19 101/177] sunrpc: fix braino in ->poll() Greg Kroah-Hartman
2015-03-16 14:08 ` [PATCH 3.19 102/177] SUNRPC: Always manipulate rpc_rqst::rq_bc_pa_list under xprt->bc_pa_lock Greg Kroah-Hartman
2015-03-16 14:08 ` [PATCH 3.19 103/177] ARC: Fix KSTK_ESP() Greg Kroah-Hartman
2015-03-16 14:08 ` [PATCH 3.19 104/177] tty: fix up atime/mtime mess, take four Greg Kroah-Hartman
2015-03-16 14:08 ` [PATCH 3.19 105/177] serial: 8250: Revert "tty: serial: 8250_core: read only RX if there is something in the FIFO" Greg Kroah-Hartman
2015-03-16 14:08 ` [PATCH 3.19 106/177] ALSA: pcm: Dont leave PREPARED state after draining Greg Kroah-Hartman
2015-03-16 14:08 ` [PATCH 3.19 107/177] ALSA: hda - Add pin configs for ASUS mobo with IDT 92HD73XX codec Greg Kroah-Hartman
2015-03-16 14:08 ` [PATCH 3.19 108/177] ALSA: fireworks/bebob/dice/oxfw: add reference-counting for FireWire unit Greg Kroah-Hartman
2015-03-16 14:08 ` [PATCH 3.19 109/177] ALSA: firewire-lib: remove reference counting Greg Kroah-Hartman
2015-03-16 14:08 ` [PATCH 3.19 110/177] ALSA: fireworks/bebob/dice/oxfw: allow stream destructor after releasing runtime Greg Kroah-Hartman
2015-03-16 14:08 ` [PATCH 3.19 111/177] ALSA: fireworks/bebob/dice/oxfw: make it possible to shutdown safely Greg Kroah-Hartman
2015-03-16 14:08 ` [PATCH 3.19 112/177] ALSA: hda: controller code - do not export static functions Greg Kroah-Hartman
2015-03-16 14:08 ` [PATCH 3.19 113/177] ALSA: hda - Disable runtime PM for Panther Point again Greg Kroah-Hartman
2015-03-16 14:08 ` [PATCH 3.19 114/177] ALSA: oxfw: fix a condition and return code in start_stream() Greg Kroah-Hartman
2015-03-16 14:08 ` [PATCH 3.19 115/177] ALSA: hda - One more Dell macine needs DELL1_MIC_NO_PRESENCE quirk Greg Kroah-Hartman
2015-03-16 14:08 ` [PATCH 3.19 116/177] locking/rtmutex: Avoid a NULL pointer dereference on deadlock Greg Kroah-Hartman
2015-03-16 14:08 ` [PATCH 3.19 117/177] sg: fix read() error reporting Greg Kroah-Hartman
2015-03-16 14:08 ` [PATCH 3.19 118/177] IB/qib: Do not write EEPROM Greg Kroah-Hartman
2015-03-16 14:08 ` [PATCH 3.19 119/177] IB/iser: Fix memory regions possible leak Greg Kroah-Hartman
2015-03-16 14:08 ` [PATCH 3.19 120/177] IB/iser: Use correct dma direction when unmapping SGs Greg Kroah-Hartman
2015-03-16 14:08 ` [PATCH 3.19 121/177] IB/mlx5: Fix error code in get_port_caps() Greg Kroah-Hartman
2015-03-16 14:08 ` [PATCH 3.19 122/177] IB/mlx4: Fix memory leak in __mlx4_ib_modify_qp Greg Kroah-Hartman
2015-03-16 14:08 ` [PATCH 3.19 123/177] IB/mlx4: Fix wrong usage of IPv4 protocol for multicast attach/detach Greg Kroah-Hartman
2015-03-16 14:08 ` [PATCH 3.19 124/177] IB/core: Fix deadlock on uverbs modify_qp error flow Greg Kroah-Hartman
2015-03-16 14:08 ` [PATCH 3.19 125/177] IB/core: Properly handle registration of on-demand paging MRs after dereg Greg Kroah-Hartman
2015-03-16 14:08 ` [PATCH 3.19 126/177] IB/core: When marshaling ucma path from user-space, clear unused fields Greg Kroah-Hartman
2015-03-16 14:08 ` [PATCH 3.19 127/177] nilfs2: fix potential memory overrun on inode Greg Kroah-Hartman
2015-03-16 14:08 ` [PATCH 3.19 128/177] wd719x: add missing .module to wd719x_template Greg Kroah-Hartman
2015-03-16 14:08 ` [PATCH 3.19 129/177] fixed invalid assignment of 64bit mask to host dma_boundary for scatter gather segment boundary limit Greg Kroah-Hartman
2015-03-16 14:08 ` [PATCH 3.19 130/177] clk: zynq: Force CPU_2X clock to be ungated Greg Kroah-Hartman
2015-03-16 14:08 ` [PATCH 3.19 131/177] clk: Fix debugfs clk removal before inited Greg Kroah-Hartman
2015-03-16 14:08 ` [PATCH 3.19 132/177] sunxi: clk: Set sun6i-pll1 n_start = 1 Greg Kroah-Hartman
2015-03-16 14:09 ` [PATCH 3.19 133/177] staging: comedi: comedi_compat32.c: fix COMEDI_CMD copy back Greg Kroah-Hartman
2015-03-16 14:09 ` [PATCH 3.19 134/177] dm mirror: do not degrade the mirror on discard error Greg Kroah-Hartman
2015-03-16 14:09 ` [PATCH 3.19 135/177] dm io: reject unsupported DISCARD requests with EOPNOTSUPP Greg Kroah-Hartman
2015-03-16 14:09 ` [PATCH 3.19 136/177] dm: fix a race condition in dm_get_md Greg Kroah-Hartman
2015-03-16 14:09 ` [PATCH 3.19 137/177] dm snapshot: fix a possible invalid memory access on unload Greg Kroah-Hartman
2015-03-16 14:09 ` [PATCH 3.19 138/177] firmware: dmi_scan: Fix dmi_len type Greg Kroah-Hartman
2015-03-16 14:09 ` [PATCH 3.19 139/177] firmware: dmi_scan: Fix dmi scan to handle "End of Table" structure Greg Kroah-Hartman
2015-03-16 14:09 ` [PATCH 3.19 140/177] staging: comedi: cb_pcidas64: fix incorrect AI range code handling Greg Kroah-Hartman
2015-03-16 14:09 ` [PATCH 3.19 141/177] HID: input: fix confusion on conflicting mappings Greg Kroah-Hartman
2015-03-16 14:09 ` [PATCH 3.19 142/177] HID: fixup the conflicting keyboard mappings quirk Greg Kroah-Hartman
2015-03-16 14:09 ` [PATCH 3.19 143/177] HID: wacom: Report ABS_MISC event for Cintiq Companion Hybrid Greg Kroah-Hartman
2015-03-16 14:09 ` [PATCH 3.19 144/177] drm/radeon: enable native backlight control on old macs Greg Kroah-Hartman
2015-03-16 14:09 ` [PATCH 3.19 145/177] drm/radeon: use drm_mode_vrefresh() rather than mode->vrefresh Greg Kroah-Hartman
2015-03-16 14:09 ` [PATCH 3.19 146/177] drm/radeon: fix 1 RB harvest config setup for TN/RL Greg Kroah-Hartman
2015-03-16 14:09 ` [PATCH 3.19 147/177] drm/i915/bdw: PCI IDs ending in 0xb are ULT Greg Kroah-Hartman
2015-03-16 14:09 ` [PATCH 3.19 148/177] drm/i915: Check obj->vma_list under the struct_mutex Greg Kroah-Hartman
2015-03-16 14:09 ` [PATCH 3.19 149/177] drm/i915: Dell Chromebook 11 has PWM backlight Greg Kroah-Hartman
2015-03-16 14:09 ` [PATCH 3.19 150/177] drm/i915: avoid processing spurious/shared interrupts in low-power states Greg Kroah-Hartman
2015-03-16 14:09 ` [PATCH 3.19 151/177] drm/i915: Check for driver readyness before handling an underrun interrupt Greg Kroah-Hartman
2015-03-16 14:09 ` [PATCH 3.19 153/177] nfsd: fix clp->cl_revoked list deletion causing softlock in nfsd Greg Kroah-Hartman
2015-03-16 14:09 ` [PATCH 3.19 154/177] efi: Small leak on error in runtime map code Greg Kroah-Hartman
2015-03-16 14:09 ` [PATCH 3.19 155/177] efi/libstub: Fix boundary checking in efi_high_alloc() Greg Kroah-Hartman
2015-03-16 14:09 ` [PATCH 3.19 156/177] eCryptfs: dont pass fs-specific ioctl commands through Greg Kroah-Hartman
2015-03-16 14:09 ` [PATCH 3.19 157/177] ACPI / video: Load the module even if ACPI is disabled Greg Kroah-Hartman
2015-03-16 14:09 ` [PATCH 3.19 158/177] ACPI / LPSS: provide con_id for the clkdev Greg Kroah-Hartman
2015-03-16 14:09 ` [PATCH 3.19 159/177] NFS: Dont invalidate a submounted dentry in nfs_prime_dcache() Greg Kroah-Hartman
2015-03-16 14:09 ` [PATCH 3.19 160/177] NFSv4: Dont call put_rpccred() under the rcu_read_lock() Greg Kroah-Hartman
2015-03-16 14:09 ` [PATCH 3.19 161/177] ASoC: omap-pcm: Correct dma mask Greg Kroah-Hartman
2015-03-16 14:09 ` [PATCH 3.19 162/177] ASoC: rt5670: Set RT5670_IRQ_CTRL1 non volatile Greg Kroah-Hartman
2015-03-16 14:09 ` [PATCH 3.19 163/177] stable_kernel_rules: reorganize and update submission options Greg Kroah-Hartman
2015-03-16 14:09 ` [PATCH 3.19 164/177] coresight-etm: unlock on error paths in mode_store() Greg Kroah-Hartman
2015-03-16 14:09 ` [PATCH 3.19 165/177] sched: Fix hrtick_start() on UP Greg Kroah-Hartman
2015-03-16 14:09 ` [PATCH 3.19 166/177] of/pci: Free resources on failure in of_pci_get_host_bridge_resources() Greg Kroah-Hartman
2015-03-16 14:09 ` [PATCH 3.19 167/177] GFS2: Fix crash during ACL deletion in acl max entry check in gfs2_set_acl() Greg Kroah-Hartman
2015-03-16 14:09 ` [PATCH 3.19 168/177] ath5k: fix spontaneus AR5312 freezes Greg Kroah-Hartman
2015-03-16 14:09 ` [PATCH 3.19 171/177] vmstat: do not use deferrable delayed work for vmstat_update Greg Kroah-Hartman
2015-03-16 14:09 ` [PATCH 3.19 172/177] sched/autogroup: Fix failure to set cpu.rt_runtime_us Greg Kroah-Hartman
2015-03-16 14:09 ` [PATCH 3.19 173/177] clk-gate: fix bit # check in clk_register_gate() Greg Kroah-Hartman
2015-03-16 14:09 ` [PATCH 3.19 174/177] cxl: Use image state defaults for reloading FPGA Greg Kroah-Hartman
2015-03-16 14:09 ` [PATCH 3.19 175/177] cxl: Fix device_node reference counting Greg Kroah-Hartman
2015-03-16 14:09 ` [PATCH 3.19 176/177] cxl: Add missing return statement after handling AFU errror Greg Kroah-Hartman
2015-03-16 14:09 ` [PATCH 3.19 177/177] Revert "netfilter: xt_recent: relax ip_pkt_list_tot restrictions" Greg Kroah-Hartman
2015-03-16 19:59 ` [PATCH 3.19 000/177] 3.19.2-stable review Guenter Roeck
2015-03-16 20:16   ` Greg Kroah-Hartman

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=20150316140816.419674043@linuxfoundation.org \
    --to=gregkh@linuxfoundation.org \
    --cc=clm@fb.com \
    --cc=fdmanana@suse.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=stable@vger.kernel.org \
    /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;
as well as URLs for NNTP newsgroup(s).