projects
/
GitHub
/
mt8127
/
android_kernel_alcatel_ttab.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
6fb8a90
)
xfs: stop the sync worker before xfs_unmountfs
author
Ben Myers
<bpm@sgi.com>
Thu, 13 Sep 2012 21:18:47 +0000
(16:18 -0500)
committer
Ben Myers
<bpm@sgi.com>
Tue, 18 Sep 2012 21:51:26 +0000
(16:51 -0500)
Cancel work of the xfs_sync_worker before teardown of the log in
xfs_unmountfs. This prevents occasional crashes on unmount like so:
PID: 21602 TASK:
ee9df060
CPU: 0 COMMAND: "kworker/0:3"
#0 [
c5377d28
] crash_kexec at
c0292c94
#1 [
c5377d80
] oops_end at
c07090c2
#2 [
c5377d98
] no_context at
c06f614e
#3 [
c5377dbc
] __bad_area_nosemaphore at
c06f6281
#4 [
c5377df4
] bad_area_nosemaphore at
c06f629b
#5 [
c5377e00
] do_page_fault at
c070b0cb
#6 [
c5377e7c
] error_code (via page_fault) at
c070892c
EAX:
f300c6a8
EBX:
f300c6a8
ECX:
000000c0
EDX:
000000c0
EBP:
c5377ed0
DS: 007b ESI:
00000000
ES: 007b EDI:
00000001
GS:
ffffad20
CS: 0060 EIP:
c0481ad0
ERR:
ffffffff
EFLAGS:
00010246
#7 [
c5377eb0
] atomic64_read_cx8 at
c0481ad0
#8 [
c5377ebc
] xlog_assign_tail_lsn_locked at
f7cc7c6e
[xfs]
#9 [
c5377ed4
] xfs_trans_ail_delete_bulk at
f7ccd520
[xfs]
#10 [
c5377f0c
] xfs_buf_iodone at
f7ccb602
[xfs]
#11 [
c5377f24
] xfs_buf_do_callbacks at
f7cca524
[xfs]
#12 [
c5377f30
] xfs_buf_iodone_callbacks at
f7cca5da
[xfs]
#13 [
c5377f4c
] xfs_buf_iodone_work at
f7c718d0
[xfs]
#14 [
c5377f58
] process_one_work at
c024ee4c
#15 [
c5377f98
] worker_thread at
c024f43d
#16 [
c5377fbc
] kthread at
c025326b
#17 [
c5377fe8
] kernel_thread_helper at
c070e834
PID: 26653 TASK:
e79143b0
CPU: 3 COMMAND: "umount"
#0 [
cde0fda0
] __schedule at
c0706595
#1 [
cde0fe28
] schedule at
c0706b89
#2 [
cde0fe30
] schedule_timeout at
c0705600
#3 [
cde0fe94
] __down_common at
c0706098
#4 [
cde0fec8
] __down at
c0706122
#5 [
cde0fed0
] down at
c025936f
#6 [
cde0fee0
] xfs_buf_lock at
f7c7131d
[xfs]
#7 [
cde0ff00
] xfs_freesb at
f7cc2236
[xfs]
#8 [
cde0ff10
] xfs_fs_put_super at
f7c80f21
[xfs]
#9 [
cde0ff1c
] generic_shutdown_super at
c0333d7a
#10 [
cde0ff38
] kill_block_super at
c0333e0f
#11 [
cde0ff48
] deactivate_locked_super at
c0334218
#12 [
cde0ff58
] deactivate_super at
c033495d
#13 [
cde0ff68
] mntput_no_expire at
c034bc13
#14 [
cde0ff7c
] sys_umount at
c034cc69
#15 [
cde0ffa0
] sys_oldumount at
c034ccd4
#16 [
cde0ffb0
] system_call at
c0707e66
commit
11159a05
added this to xfs_log_unmount and needs to be cleaned up
at a later date.
Signed-off-by: Ben Myers <bpm@sgi.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Mark Tinguely <tinguely@sgi.com>
fs/xfs/xfs_super.c
patch
|
blob
|
blame
|
history
diff --git
a/fs/xfs/xfs_super.c
b/fs/xfs/xfs_super.c
index bdaf4cb9f4a2d19fc8b781f232f61d88c529ac2a..19e2380fb8679d2e8641e691eaeb0b200456bfb4 100644
(file)
--- a/
fs/xfs/xfs_super.c
+++ b/
fs/xfs/xfs_super.c
@@
-919,6
+919,7
@@
xfs_fs_put_super(
struct xfs_mount *mp = XFS_M(sb);
xfs_filestream_unmount(mp);
+ cancel_delayed_work_sync(&mp->m_sync_work);
xfs_unmountfs(mp);
xfs_syncd_stop(mp);
xfs_freesb(mp);