Peng Tao
f40eb5d044
nfs41: make a helper function to send layoutreturn
...
It allows to specify different iomode to return.
Signed-off-by: Peng Tao <tao.peng@primarydata.com >
Signed-off-by: Tom Haynes <Thomas.Haynes@primarydata.com >
2015-02-03 11:06:41 -08:00
Peng Tao
4579d6b897
nfs41: pass iomode through layoutreturn args
...
So that it is possible to return a specific iomode layouts.
Signed-off-by: Peng Tao <tao.peng@primarydata.com >
Signed-off-by: Tom Haynes <Thomas.Haynes@primarydata.com >
2015-02-03 11:06:40 -08:00
Peng Tao
aabff4ddca
nfs: save server READ/WRITE/COMMIT status
...
Flexfiles layout would want to use them to report DS IO status.
Signed-off-by: Peng Tao <tao.peng@primarydata.com >
Signed-off-by: Tom Haynes <Thomas.Haynes@primarydata.com >
2015-02-03 11:06:40 -08:00
Peng Tao
9bf87482dd
nfs41: serialize first layoutget of a file
...
Per RFC 5661 Errata 3208:
| A client MAY always forget its layout state and associated
| layout stateid at any time (See also section 12.5.5.1).
| In such case, the client MUST use a non-layout stateid for the next
| LAYOUTGET operation. This will signal the server that the client has
| no more layouts on the file and its respective layout state can be
| released before issuing a new layout in response to LAYOUTGET.
In order to make such a signal unique to server, client needs to serialize
all layoutgets using non-layout stateid. We implement this by serializing
layoutgets when client has no layout segments at hand.
Signed-off-by: Peng Tao <tao.peng@primarydata.com >
Signed-off-by: Tom Haynes <Thomas.Haynes@primarydata.com >
2015-02-03 11:06:39 -08:00
Peng Tao
abb9a0079c
nfs41: close a small race window when adding new layout to global list
...
Signed-off-by: Peng Tao <tao.peng@primarydata.com >
Signed-off-by: Tom Haynes <Thomas.Haynes@primarydata.com >
2015-02-03 11:06:39 -08:00
Peng Tao
72cff4494e
nfs/flexclient: export pnfs_layoutcommit_inode
...
flexfiles needs to start layoutcommit when necessary
Signed-off-by: Peng Tao <tao.peng@primarydata.com >
2015-02-03 11:06:38 -08:00
Peng Tao
36d3e3dcc9
nfs: set hostname when creating nfsv3 ds connection
...
lockd assumes hostname exists otherwise kernel oops.
It can be reproduced by following steps:
1. mount flexfile MDS
2. write some files
3. mount DS via nfsv3
BUG: unable to handle kernel NULL pointer dereference at (null)
IP: [<ffffffff8134f332>] strlen+0x2/0x20
PGD 0
Oops: 0000 [#1 ] SMP
Modules linked in: nfsd(F) nfs_layout_flexfiles(F) rpcsec_gss_krb5(F) auth_rpcgss(F) nfsv4(F) dns_resolver(F) nfsv3(F) nfs_acl(F) nfs(F) lockd(F) sunrpc(F) fscache(F) ebtable_nat(F) nf_conntrack_netbios_ns(F) nf_conntrack_broadcast(F) ipt_MASQUERADE(F) ip6table_nat(F) nf_nat_ipv6(F) ip6table_mangle(F) ip6t_REJECT(F) nf_conntrack_ipv6(F) nf_defrag_ipv6(F) iptable_nat(F) nf_nat_ipv4(F) nf_nat(F) iptable_mangle(F) nf_conntrack_ipv4(F) nf_defrag_ipv4(F) xt_conntrack(F) nf_conntrack(F) ebtable_filter(F) ebtables(F) ip6table_filter(F) ip6_tables(F) bnep(F) snd_ens1371(F) snd_rawmidi(F) snd_ac97_codec(F) btusb(F) ac97_bus(F) snd_seq(F) snd_seq_device(F) snd_pcm(F) ppdev(F) bluetooth(F) 6lowpan_iphc(F) rfkill(F) vmw_balloon(F) snd_timer(F) snd(F) soundcore(F) gameport(F) i2c_piix4(F) e1000(F) vmw_vmci(F) parport_pc(F) parport(F) shpchp(F) uinput(F) xfs(F) libcrc32c(F) vmwgfx(F) ttm(F) drm(F) mptspi(F) scsi_transport_spi(F) mptscsih(F) mptbase(F) i2c_core(F)
CPU: 0 PID: 10397 Comm: mount.nfs Tainted: GF 3.14.7-100.pd_client.001.fc16.x86_64 #1
Hardware name: VMware, Inc. VMware Virtual Platform/440BX Desktop Reference Platform, BIOS 6.00 07/31/2013
task: ffff880008942600 ti: ffff880007990000 task.ti: ffff880007990000
RIP: 0010:[<ffffffff8134f332>] [<ffffffff8134f332>] strlen+0x2/0x20
RSP: 0018:ffff880007991aa0 EFLAGS: 00010246
RAX: 0000000000000000 RBX: ffff880038d39c20 RCX: 0000000000000004
RDX: 0000000000000006 RSI: 0000000000000010 RDI: 0000000000000000
RBP: ffff880007991b38 R08: 0000000000000000 R09: 0000000000000000
R10: 0000000000014600 R11: 0000000000000400 R12: ffffffff81cc8580
R13: 0000000000000000 R14: 0000000000000000 R15: 0000000000000004
FS: 00007f90cd2ef880(0000) GS:ffff88003f600000(0000) knlGS:0000000000000000
CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 0000000000000000 CR3: 0000000001710000 CR4: 00000000001407f0
Stack:
ffffffffa045f52c ffff880001782230 ffff880004141e28 0006880007991ac8
ffffffff816dc14b ffff880000000000 ffff880038d39c20 0000000000000010
0000000481cc0006 0000000000000000 ffffffffa0410be8 000000000000c014
Call Trace:
[<ffffffffa045f52c>] ? nlmclnt_lookup_host+0x4c/0x2c0 [lockd]
[<ffffffff816dc14b>] ? _raw_spin_unlock_bh+0x1b/0x20
[<ffffffffa0410be8>] ? svc_destroy+0xb8/0x140 [sunrpc]
[<ffffffffa045c323>] nlmclnt_init+0x53/0xc0 [lockd]
[<ffffffffa047d2dc>] ? nfs_get_client+0x1cc/0x340 [nfs]
[<ffffffffa047c2e7>] nfs_start_lockd+0xa7/0xd0 [nfs]
[<ffffffffa047df71>] nfs_create_server+0x181/0x5c0 [nfs]
[<ffffffffa04460f3>] nfs3_create_server+0x13/0x30 [nfsv3]
[<ffffffffa048a0bc>] nfs_try_mount+0x21c/0x300 [nfs]
[<ffffffff811ca32d>] ? __kmalloc_track_caller+0x1ad/0x240
[<ffffffffa048b677>] ? nfs_fs_mount+0xc37/0xd80 [nfs]
[<ffffffffa048ad05>] nfs_fs_mount+0x2c5/0xd80 [nfs]
[<ffffffffa048a830>] ? nfs_clone_super+0x140/0x140 [nfs]
[<ffffffffa048a240>] ? nfs_clone_sb_security+0x40/0x40 [nfs]
[<ffffffff811e7e43>] mount_fs+0x43/0x1b0
[<ffffffff81193100>] ? __alloc_percpu+0x10/0x20
[<ffffffff812026e6>] vfs_kern_mount+0x76/0x120
[<ffffffff81204917>] do_mount+0x237/0xa80
Signed-off-by: Peng Tao <tao.peng@primarydata.com >
Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com >
2015-02-03 11:06:38 -08:00
Weston Andros Adamson
840210fc48
sunrpc: add rpc_count_iostats_idx
...
Add a call to tally stats for a task under a different statsidx than
what's contained in the task structure.
This is needed to properly account for pnfs reads/writes when the
DS nfs version != the MDS version.
Signed-off-by: Weston Andros Adamson <dros@primarydata.com >
Signed-off-by: Tom Haynes <Thomas.Haynes@primarydata.com >
2015-02-03 11:06:38 -08:00
Trond Myklebust
16cecdf620
NFSv4.1/NFSv3: Add pNFS callbacks for nfs3_(read|write|commit)_done()
...
Enable pNFS callbacks to allow flex files to work correctly with a
NFSv3-enabled data server.
Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com >
2015-02-03 11:06:37 -08:00
Peng Tao
46a5ab4754
nfs: allow to specify cred in nfs_initiate_pgio
...
so that flexfile layout client can pass in DS credential instead of
using user cred, which will be done in the next patch.
Signed-off-by: Peng Tao <tao.peng@primarydata.com >
Signed-off-by: Tom Haynes <Thomas.Haynes@primarydata.com >
2015-02-03 11:06:37 -08:00
Peng Tao
2c4b131dea
nfs4: export nfs4_sequence_done
...
Signed-off-by: Peng Tao <tao.peng@primarydata.com >
Signed-off-by: Tom Haynes <Thomas.Haynes@primarydata.com >
2015-02-03 11:06:36 -08:00
Peng Tao
cb04ad2a2b
nfs4: pass slot table to nfs40_setup_sequence
...
flexclient needs this as there is no nfs_server to DS connection.
Signed-off-by: Peng Tao <tao.peng@primarydata.com >
Signed-off-by: Tom Haynes <Thomas.Haynes@primarydata.com >
2015-02-03 11:06:36 -08:00
Peng Tao
c36aae9ad9
nfs: allow different protocol in nfs_initiate_commit
...
pnfs flexfile layout client may want to use NFSv3 ops rather
than the default MDS v4 ops.
Signed-off-by: Peng Tao <tao.peng@primarydata.com >
Signed-off-by: Tom Haynes <Thomas.Haynes@primarydata.com >
2015-02-03 11:06:35 -08:00
Tom Haynes
abde71f4d3
pnfs: Add nfs_rpc_ops in calls to nfs_initiate_pgio
...
Signed-off-by: Tom Haynes <loghyr@primarydata.com >
2015-02-03 11:06:35 -08:00
Peng Tao
5f01d95394
nfs41: create NFSv3 DS connection if specified
...
Signed-off-by: Peng Tao <tao.peng@primarydata.com >
Signed-off-by: Tom Haynes <Thomas.Haynes@primarydata.com >
2015-02-03 11:06:35 -08:00
Peng Tao
30626f9c32
nfs41: allow LD to choose DS connection version/minor_version
...
flexfile layout may need to set such when making DS connections.
Signed-off-by: Peng Tao <tao.peng@primarydata.com >
Signed-off-by: Tom Haynes <Thomas.Haynes@primarydata.com >
2015-02-03 11:06:34 -08:00
Peng Tao
1a04c6e1a2
nfsv3: introduce nfs3_set_ds_client
...
The flexfiles layout wants to create DS connection over NFSv3.
Add nfs3_set_ds_client to allow that to happen.
Signed-off-by: Peng Tao <tao.peng@primarydata.com >
Signed-off-by: Tom Haynes <Thomas.Haynes@primarydata.com >
2015-02-03 11:06:34 -08:00
Peng Tao
39280a5ae8
nfs41: move file layout macros to generic pnfs
...
They can be reused by flexfile layout as well.
Also add a code such that if read fails on one DS and
there are other DSes available to use, don't resend
through MDS but through pNFS so that client can read
from other DSes.
Reviewed-by: Jeff Layton <jlayton@primarydata.com >
Signed-off-by: Peng Tao <tao.peng@primarydata.com >
Signed-off-by: Tom Haynes <Thomas.Haynes@primarydata.com >
2015-02-03 11:06:33 -08:00
Peng Tao
064172f345
nfs41: allow LD to choose DS connection auth flavor
...
flexfile layout may use different auth flavor as specified by MDS.
Reviewed-by: Jeff Layton <jlayton@primarydata.com >
Signed-off-by: Peng Tao <tao.peng@primarydata.com >
Signed-off-by: Tom Haynes <Thomas.Haynes@primarydata.com >
2015-02-03 11:06:33 -08:00
Peng Tao
7405f9e195
nfs41: pull nfs4_ds_connect from file layout to generic pnfs
...
It can be reused by flexfiles layout client.
Reviewed-by: Jeff Layton <jlayton@primarydata.com >
Signed-off-by: Peng Tao <tao.peng@primarydata.com >
Signed-off-by: Tom Haynes <Thomas.Haynes@primarydata.com >
2015-02-03 11:06:32 -08:00
Peng Tao
6b7f3cf963
nfs41: pull decode_ds_addr from file layout to generic pnfs
...
It can be reused by flexfile layout.
Reviewed-by: Jeff Layton <jlayton@primarydata.com >
Signed-off-by: Peng Tao <tao.peng@primarydata.com >
Signed-off-by: Tom Haynes <Thomas.Haynes@primarydata.com >
2015-02-03 11:06:32 -08:00
Peng Tao
875ae0694b
nfs41: pull data server cache from file layout to generic pnfs
...
Also pull nfs4_pnfs_ds_addr and nfs4_pnfs_ds to generic pnfs.
They can all be reused by flexfile layout as well.
Reviewed-by: Jeff Layton <jlayton@primarydata.com >
Signed-off-by: Peng Tao <tao.peng@primarydata.com >
Signed-off-by: Tom Haynes <Thomas.Haynes@primarydata.com >
2015-02-03 11:06:32 -08:00
Tom Haynes
085d1e33a6
pnfs: Do not grab the commit_info lock twice when rescheduling writes
...
Acked-by: Jeff Layton <jlayton@primarydata.com >
Signed-off-by: Tom Haynes <loghyr@primarydata.com >
2015-02-03 11:06:31 -08:00
Tom Haynes
f54bcf2ece
pnfs: Prepare for flexfiles by pulling out common code
...
The flexfilelayout driver will share some common code
with the filelayout driver. This set of changes refactors
that common code out to avoid any module depenencies.
Signed-off-by: Tom Haynes <loghyr@primarydata.com >
2015-02-03 11:06:31 -08:00
Linus Torvalds
ec6f34e5b5
Linux 3.19-rc5
2015-01-18 18:02:20 +12:00