projects
/
GitHub
/
LineageOS
/
G12
/
android_kernel_amlogic_linux-4.9.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
2a60618
)
NFS41: fix list splice type
author
Peng Tao
<tao.peng@primarydata.com>
Fri, 21 Aug 2015 02:32:50 +0000
(10:32 +0800)
committer
Trond Myklebust
<trond.myklebust@primarydata.com>
Thu, 20 Aug 2015 18:43:53 +0000
(13:43 -0500)
We want to move commiting pages to pages list instead.
Otherwise it causes pnfs small writes crash like:
[34560.037692] BUG: unable to handle kernel NULL pointer dereference at
0000000000000068
[34560.038557] IP: [<
ffffffffa05423d6
>] nfs_init_commit+0x26/0x130 [nfs]
[34560.039400] PGD
69f5a067
PUD
69f59067
PMD 0
[34560.040207] Oops: 0000 [#1] SMP
[34560.041014] Modules linked in: nfsv3(OE) nfs_layout_flexfiles(OE) nfsv4(OE) nfs(OE) fscache(E) rpcsec_gss_krb5(E) xt_addrtype(E) xt_conntrack(E) ipt_MASQUERADE(E) nf_nat_masquerade_ipv4(E) iptable_nat(E) nf_conntrack_ipv4(E) nf_defrag_ipv4(E) nf_nat_ipv4(E) iptable_filter(E) ip_tables(E) x_tables(E) nf_nat(E) nf_conntrack(E) bridge(E) stp(E) llc(E) dm_thin_pool(E) dm_persistent_data(E) dm_bio_prison(E) dm_bufio(E) ppdev(E) vmw_balloon(E) coretemp(E) crc32_pclmul(E) ghash_clmulni_intel(E) aesni_intel(E) aes_x86_64(E) glue_helper(E) lrw(E) gf128mul(E) ablk_helper(E) cryptd(E) psmouse(E) serio_raw(E) vmw_vmci(E) i2c_piix4(E) shpchp(E) parport_pc(E) parport(E) mac_hid(E) nfsd(E) auth_rpcgss(E) nfs_acl(E) lockd(E) grace(E) sunrpc(E) xfs(E) libcrc32c(E) hid_generic(E) usbhid(E) hid(E) e1000(E) mptspi(E)
[34560.045106] mptscsih(E) mptbase(E) vmwgfx(E) drm_kms_helper(E) ttm(E) drm(E) autofs4(E) [last unloaded: fscache]
[34560.045897] CPU: 0 PID: 130543 Comm: bash Tainted: G OE
4.2.0-rc5-dp-00057-gf993a93
#11
[34560.046699] Hardware name: VMware, Inc. VMware Virtual Platform/440BX Desktop Reference Platform, BIOS 6.00 05/20/2014
[34560.047525] task:
ffff880031b0a980
ti:
ffff880045fec000
task.ti:
ffff880045fec000
[34560.048264] RIP: 0010:[<
ffffffffa05423d6
>] [<
ffffffffa05423d6
>] nfs_init_commit+0x26/0x130 [nfs]
[34560.049000] RSP: 0018:
ffff880045fefc18
EFLAGS:
00010246
[34560.049717] RAX:
0000000000000000
RBX:
ffff8800208fbc80
RCX:
ffff880045fefd50
[34560.050396] RDX:
ffff880031c19ec0
RSI:
ffff880045fefc88
RDI:
ffff8800208fbc80
[34560.051041] RBP:
ffff880045fefc28
R08:
ffff8800208fbe68
R09:
ffff880045fefc88
[34560.051666] R10:
0000000000000000
R11:
0000000000000000
R12:
ffff880045fefc78
[34560.052247] R13:
ffff880045fefc88
R14:
ffff880045fefa90
R15:
ffff880045fefd50
[34560.052825] FS:
00007fa02d58c740
(0000) GS:
ffff88006d600000
(0000) knlGS:
0000000000000000
[34560.053410] CS: 0010 DS: 0000 ES: 0000 CR0:
0000000080050033
[34560.053992] CR2:
0000000000000068
CR3:
000000003b37a000
CR4:
00000000001406f0
[34560.054615] Stack:
[34560.055200]
ffff8800208fbc80
ffff8800208fbc80
ffff880045fefcc8
ffffffffa05c1a5b
[34560.055800]
ffff880045fefcc8
ffff880045fefd50
0000000045fefcb8
ffff880045fefd40
[34560.056418]
ffff8800420608e0
ffffffffa04f3910
0000000100000001
ffff880045fefd50
[34560.057013] Call Trace:
[34560.057672] [<
ffffffffa05c1a5b
>] pnfs_generic_commit_pagelist+0x1cb/0x300 [nfsv4]
[34560.058277] [<
ffffffffa04f3910
>] ? ff_layout_commit_pagelist+0x20/0x20 [nfs_layout_flexfiles]
[34560.058907] [<
ffffffffa04f3905
>] ff_layout_commit_pagelist+0x15/0x20 [nfs_layout_flexfiles]
[34560.059557] [<
ffffffffa0543fc1
>] nfs_generic_commit_list+0xb1/0xf0 [nfs]
[34560.060214] [<
ffffffffa0543e47
>] ? nfs_scan_commit+0x37/0xa0 [nfs]
[34560.060825] [<
ffffffffa0544081
>] nfs_commit_inode+0x81/0x150 [nfs]
[34560.061432] [<
ffffffffa05443ae
>] nfs_wb_all+0x1ae/0x400 [nfs]
[34560.062035] [<
ffffffffa05380ad
>] nfs_getattr+0x33d/0x510 [nfs]
[34560.062630] [<
ffffffff8122499c
>] vfs_getattr_nosec+0x2c/0x40
[34560.063223] [<
ffffffff81224a66
>] vfs_getattr+0x26/0x30
[34560.063818] [<
ffffffff81224b35
>] vfs_fstatat+0x65/0xa0
[34560.064413] [<
ffffffff81224f3f
>] SYSC_newstat+0x1f/0x40
[34560.065016] [<
ffffffff8102b176
>] ? do_audit_syscall_entry+0x66/0x70
[34560.065626] [<
ffffffff8102c773
>] ? syscall_trace_enter_phase1+0x113/0x170
[34560.066245] [<
ffffffff81003017
>] ? trace_hardirqs_on_thunk+0x17/0x19
[34560.066868] [<
ffffffff812251ae
>] SyS_newstat+0xe/0x10
[34560.067533] [<
ffffffff817a5df2
>] entry_SYSCALL_64_fastpath+0x16/0x7a
[34560.068173] Code: 0f 1f 44 00 00 0f 1f 44 00 00 55 4c 8d 87 e8 01 00 00 48 89 e5 53 48 89 fb 48 83 ec 08 4c 8b 0e 49 8b 41 18 4c 39 ce 48 8b 40 40 <4c> 8b 50 68 74 24 48 8b 87 e8 01 00 00 48 8b 7e 08 4d 89 41 08
[34560.069609] RIP [<
ffffffffa05423d6
>] nfs_init_commit+0x26/0x130 [nfs]
[34560.070295] RSP <
ffff880045fefc18
>
[34560.071008] CR2:
0000000000000068
[34560.073207] ---[ end trace
f85f873260977406
]---
[fixes
27571297a7e
(pNFS: Tighten up locking around DS commit buckets)]
Signed-off-by: Peng Tao <tao.peng@primarydata.com>
Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
fs/nfs/pnfs_nfs.c
patch
|
blob
|
blame
|
history
diff --git
a/fs/nfs/pnfs_nfs.c
b/fs/nfs/pnfs_nfs.c
index bbd407b6bc1ff7809ca8fed178d345d1d9b34e06..24655b807d442596e14c360b29c81d4cedca9ef0 100644
(file)
--- a/
fs/nfs/pnfs_nfs.c
+++ b/
fs/nfs/pnfs_nfs.c
@@
-239,7
+239,7
@@
void pnfs_fetch_commit_bucket_list(struct list_head *pages,
bucket = &cinfo->ds->buckets[data->ds_commit_index];
spin_lock(cinfo->lock);
- list_splice_init(
pages, &bucket->committing
);
+ list_splice_init(
&bucket->committing, pages
);
data->lseg = bucket->clseg;
bucket->clseg = NULL;
spin_unlock(cinfo->lock);