]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
3.4-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 5 Feb 2013 17:36:19 +0000 (09:36 -0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 5 Feb 2013 17:36:19 +0000 (09:36 -0800)
added patches:
drivers-rtc-rtc-isl1208.c-call-rtc_update_irq-from-the-alarm-irq-handler.patch
nilfs2-fix-fix-very-long-mount-time-issue.patch

queue-3.4/drivers-rtc-rtc-isl1208.c-call-rtc_update_irq-from-the-alarm-irq-handler.patch [new file with mode: 0644]
queue-3.4/nilfs2-fix-fix-very-long-mount-time-issue.patch [new file with mode: 0644]
queue-3.4/series

diff --git a/queue-3.4/drivers-rtc-rtc-isl1208.c-call-rtc_update_irq-from-the-alarm-irq-handler.patch b/queue-3.4/drivers-rtc-rtc-isl1208.c-call-rtc_update_irq-from-the-alarm-irq-handler.patch
new file mode 100644 (file)
index 0000000..7574c48
--- /dev/null
@@ -0,0 +1,42 @@
+From 72fca4a4b32dc778b5b885c3498700e42b610d49 Mon Sep 17 00:00:00 2001
+From: Jan Luebbe <jlu@pengutronix.de>
+Date: Mon, 4 Feb 2013 14:28:53 -0800
+Subject: drivers/rtc/rtc-isl1208.c: call rtc_update_irq() from the alarm irq handler
+
+From: Jan Luebbe <jlu@pengutronix.de>
+
+commit 72fca4a4b32dc778b5b885c3498700e42b610d49 upstream.
+
+Previously the alarm event was not propagated into the RTC subsystem.
+By adding a call to rtc_update_irq, this fixes a timeout problem with
+the hwclock utility.
+
+Signed-off-by: Jan Luebbe <jlu@pengutronix.de>
+Cc: Alessandro Zummo <a.zummo@towertech.it>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/rtc/rtc-isl1208.c |    3 +++
+ 1 file changed, 3 insertions(+)
+
+--- a/drivers/rtc/rtc-isl1208.c
++++ b/drivers/rtc/rtc-isl1208.c
+@@ -494,6 +494,7 @@ isl1208_rtc_interrupt(int irq, void *dat
+ {
+       unsigned long timeout = jiffies + msecs_to_jiffies(1000);
+       struct i2c_client *client = data;
++      struct rtc_device *rtc = i2c_get_clientdata(client);
+       int handled = 0, sr, err;
+       /*
+@@ -516,6 +517,8 @@ isl1208_rtc_interrupt(int irq, void *dat
+       if (sr & ISL1208_REG_SR_ALM) {
+               dev_dbg(&client->dev, "alarm!\n");
++              rtc_update_irq(rtc, 1, RTC_IRQF | RTC_AF);
++
+               /* Clear the alarm */
+               sr &= ~ISL1208_REG_SR_ALM;
+               sr = i2c_smbus_write_byte_data(client, ISL1208_REG_SR, sr);
diff --git a/queue-3.4/nilfs2-fix-fix-very-long-mount-time-issue.patch b/queue-3.4/nilfs2-fix-fix-very-long-mount-time-issue.patch
new file mode 100644 (file)
index 0000000..bcceeb9
--- /dev/null
@@ -0,0 +1,80 @@
+From a9bae189542e71f91e61a4428adf6e5a7dfe8063 Mon Sep 17 00:00:00 2001
+From: Vyacheslav Dubeyko <slava@dubeyko.com>
+Date: Mon, 4 Feb 2013 14:28:41 -0800
+Subject: nilfs2: fix fix very long mount time issue
+
+From: Vyacheslav Dubeyko <slava@dubeyko.com>
+
+commit a9bae189542e71f91e61a4428adf6e5a7dfe8063 upstream.
+
+There exists a situation when GC can work in background alone without
+any other filesystem activity during significant time.
+
+The nilfs_clean_segments() method calls nilfs_segctor_construct() that
+updates superblocks in the case of NILFS_SC_SUPER_ROOT and
+THE_NILFS_DISCONTINUED flags are set.  But when GC is working alone the
+nilfs_clean_segments() is called with unset THE_NILFS_DISCONTINUED flag.
+As a result, the update of superblocks doesn't occurred all this time
+and in the case of SPOR superblocks keep very old values of last super
+root placement.
+
+SYMPTOMS:
+
+Trying to mount a NILFS2 volume after SPOR in such environment ends with
+very long mounting time (it can achieve about several hours in some
+cases).
+
+REPRODUCING PATH:
+
+1. It needs to use external USB HDD, disable automount and doesn't
+   make any additional filesystem activity on the NILFS2 volume.
+
+2. Generate temporary file with size about 100 - 500 GB (for example,
+   dd if=/dev/zero of=<file_name> bs=1073741824 count=200).  The size of
+   file defines duration of GC working.
+
+3. Then it needs to delete file.
+
+4. Start GC manually by means of command "nilfs-clean -p 0".  When you
+   start GC by means of such way then, at the end, superblocks is updated
+   by once.  So, for simulation of SPOR, it needs to wait sometime (15 -
+   40 minutes) and simply switch off USB HDD manually.
+
+5. Switch on USB HDD again and try to mount NILFS2 volume.  As a
+   result, NILFS2 volume will mount during very long time.
+
+REPRODUCIBILITY: 100%
+
+FIX:
+
+This patch adds checking that superblocks need to update and set
+THE_NILFS_DISCONTINUED flag before nilfs_clean_segments() call.
+
+Reported-by: Sergey Alexandrov <splavgm@gmail.com>
+Signed-off-by: Vyacheslav Dubeyko <slava@dubeyko.com>
+Tested-by: Vyacheslav Dubeyko <slava@dubeyko.com>
+Acked-by: Ryusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>
+Tested-by: Ryusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ fs/nilfs2/ioctl.c |    5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+--- a/fs/nilfs2/ioctl.c
++++ b/fs/nilfs2/ioctl.c
+@@ -666,8 +666,11 @@ static int nilfs_ioctl_clean_segments(st
+       if (ret < 0)
+               printk(KERN_ERR "NILFS: GC failed during preparation: "
+                       "cannot read source blocks: err=%d\n", ret);
+-      else
++      else {
++              if (nilfs_sb_need_update(nilfs))
++                      set_nilfs_discontinued(nilfs);
+               ret = nilfs_clean_segments(inode->i_sb, argv, kbufs);
++      }
+       nilfs_remove_all_gcinodes(nilfs);
+       clear_nilfs_gc_running(nilfs);
index 43b13849dc99ece2c537805392a378e3b4cf50a4..d7d30db61f83d1f1e014c643be264ce333c35075 100644 (file)
@@ -7,3 +7,5 @@ drm-radeon-prevent-crash-in-the-ring-space-allocation.patch
 drm-radeon-calling-object_unrefer-when-creating-fb-failure.patch
 x86-64-replace-left-over-sti-cli-in-ia32-audit-exit-code.patch
 sched-rt-use-root_domain-of-rt_rq-not-current-processor.patch
+nilfs2-fix-fix-very-long-mount-time-issue.patch
+drivers-rtc-rtc-isl1208.c-call-rtc_update_irq-from-the-alarm-irq-handler.patch