From: Greg Kroah-Hartman Date: Tue, 5 Feb 2013 17:36:19 +0000 (-0800) Subject: 3.4-stable patches X-Git-Tag: v3.0.63~12 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=b7375701fa1e2bdf8b5a9085d6239ab02eff1db5;p=thirdparty%2Fkernel%2Fstable-queue.git 3.4-stable patches 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 --- 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 index 00000000000..7574c483ab0 --- /dev/null +++ b/queue-3.4/drivers-rtc-rtc-isl1208.c-call-rtc_update_irq-from-the-alarm-irq-handler.patch @@ -0,0 +1,42 @@ +From 72fca4a4b32dc778b5b885c3498700e42b610d49 Mon Sep 17 00:00:00 2001 +From: Jan Luebbe +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 + +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 +Cc: Alessandro Zummo +Signed-off-by: Andrew Morton +Signed-off-by: Linus Torvalds +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..bcceeb9e36b --- /dev/null +++ b/queue-3.4/nilfs2-fix-fix-very-long-mount-time-issue.patch @@ -0,0 +1,80 @@ +From a9bae189542e71f91e61a4428adf6e5a7dfe8063 Mon Sep 17 00:00:00 2001 +From: Vyacheslav Dubeyko +Date: Mon, 4 Feb 2013 14:28:41 -0800 +Subject: nilfs2: fix fix very long mount time issue + +From: Vyacheslav Dubeyko + +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= 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 +Signed-off-by: Vyacheslav Dubeyko +Tested-by: Vyacheslav Dubeyko +Acked-by: Ryusuke Konishi +Tested-by: Ryusuke Konishi +Signed-off-by: Andrew Morton +Signed-off-by: Linus Torvalds +Signed-off-by: Greg Kroah-Hartman + +--- + 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); diff --git a/queue-3.4/series b/queue-3.4/series index 43b13849dc9..d7d30db61f8 100644 --- a/queue-3.4/series +++ b/queue-3.4/series @@ -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