xfs: protect xfs_sync_worker with s_umount semaphore
xfs_sync_worker checks the MS_ACTIVE flag in s_flags to avoid doing
work during mount and unmount.  This flag can be cleared by unmount
after the xfs_sync_worker checks it but before the work is completed.
The has caused crashes in the completion handler for the dummy
transaction commited by xfs_sync_worker:
PID: 27544  TASK: 
ffff88013544e040  CPU: 3   COMMAND: "kworker/3:0"
 #0 [
ffff88016fdff930] machine_kexec at 
ffffffff810244e9
 #1 [
ffff88016fdff9a0] crash_kexec at 
ffffffff8108d053
 #2 [
ffff88016fdffa70] oops_end at 
ffffffff813ad1b8
 #3 [
ffff88016fdffaa0] no_context at 
ffffffff8102bd48
 #4 [
ffff88016fdffaf0] __bad_area_nosemaphore at 
ffffffff8102c04d
 #5 [
ffff88016fdffb40] bad_area_nosemaphore at 
ffffffff8102c12e
 #6 [
ffff88016fdffb50] do_page_fault at 
ffffffff813afaee
 #7 [
ffff88016fdffc60] page_fault at 
ffffffff813ac635
    [exception RIP: xlog_get_lowest_lsn+0x30]
    RIP: 
ffffffffa04a9910  RSP: 
ffff88016fdffd10  RFLAGS: 
00010246
    RAX: 
ffffc90014e48000  RBX: 
ffff88014d879980  RCX: 
ffff88014d879980
    RDX: 
ffff8802214ee4c0  RSI: 
0000000000000000  RDI: 
0000000000000000
    RBP: 
ffff88016fdffd10   R8: 
ffff88014d879a80   R9: 
0000000000000000
    R10: 
0000000000000001  R11: 
0000000000000000  R12: 
ffff8802214ee400
    R13: 
ffff88014d879980  R14: 
0000000000000000  R15: 
ffff88022fd96605
    ORIG_RAX: 
ffffffffffffffff  CS: 0010  SS: 0018
 #8 [
ffff88016fdffd18] xlog_state_do_callback at 
ffffffffa04aa186 [xfs]
 #9 [
ffff88016fdffd98] xlog_state_done_syncing at 
ffffffffa04aa568 [xfs]
Protect xfs_sync_worker by using the s_umount semaphore at the read
level to provide exclusion with unmount while work is progressing.
Reviewed-by: Mark Tinguely <tinguely@sgi.com>
Signed-off-by: Ben Myers <bpm@sgi.com>