Revision tags: v3.18-rc6, v3.18-rc5 |
|
#
48d635f1 |
| 09-Nov-2014 |
Peng Tao <tao.peng@primarydata.com> |
nfs: add nfs_pgio_current_mirror helper
Let it return current nfs_pgio_mirror in use depending on pg_mirror_count. For read, we always use pg_mirrors[0], so this effectively gives us freedom to use
nfs: add nfs_pgio_current_mirror helper
Let it return current nfs_pgio_mirror in use depending on pg_mirror_count. For read, we always use pg_mirrors[0], so this effectively gives us freedom to use pg_mirror_idx to track the actual mirror to read from through out the IO stack.
Signed-off-by: Peng Tao <tao.peng@primarydata.com> Signed-off-by: Tom Haynes <loghyr@primarydata.com>
show more ...
|
#
47af81f2 |
| 09-Nov-2014 |
Peng Tao <tao.peng@primarydata.com> |
nfs: only reset desc->pg_mirror_idx when mirroring is supported
so that we don't reset desc->pg_mirror_idx for read unnecessarily. Remove WARN_ON_ONCE from __nfs_pageio_add_request to allow LD to se
nfs: only reset desc->pg_mirror_idx when mirroring is supported
so that we don't reset desc->pg_mirror_idx for read unnecessarily. Remove WARN_ON_ONCE from __nfs_pageio_add_request to allow LD to set pg_mirror_idx for read where pg_mirror_count is always 1.
Signed-off-by: Peng Tao <tao.peng@primarydata.com> Signed-off-by: Tom Haynes <loghyr@primarydata.com>
show more ...
|
Revision tags: v3.18-rc4, v3.18-rc3, v3.18-rc2, v3.18-rc1, v3.17, v3.17-rc7, v3.17-rc6 |
|
#
a7d42ddb |
| 19-Sep-2014 |
Weston Andros Adamson <dros@primarydata.com> |
nfs: add mirroring support to pgio layer
This patch adds mirrored write support to the pgio layer. The default is to use one mirror, but pgio callers may define callbacks to change this to any value
nfs: add mirroring support to pgio layer
This patch adds mirrored write support to the pgio layer. The default is to use one mirror, but pgio callers may define callbacks to change this to any value up to the (arbitrarily selected) limit of 16.
The basic idea is to break out members of nfs_pageio_descriptor that cannot be shared between mirrored DSes and put them in a new structure.
Signed-off-by: Weston Andros Adamson <dros@primarydata.com>
show more ...
|
Revision tags: v3.17-rc5, v3.17-rc4 |
|
#
b57ff130 |
| 05-Sep-2014 |
Weston Andros Adamson <dros@primarydata.com> |
pnfs: pass ds_commit_idx through the commit path
Pass ds_commit_idx through the nfs commit path. It's used to select the commit bucket when using pnfs and is ignored when not using pnfs. Several fun
pnfs: pass ds_commit_idx through the commit path
Pass ds_commit_idx through the nfs commit path. It's used to select the commit bucket when using pnfs and is ignored when not using pnfs. Several functions had to be changed: nfs_retry_commit, nfs_mark_request_commit, pnfs_mark_request_commit and the pnfs layout driver .mark_request_commit functions.
Signed-off-by: Tom Haynes <loghyr@primarydata.com>
show more ...
|
Revision tags: v3.17-rc3, v3.17-rc2, v3.17-rc1, v3.16, v3.16-rc7, v3.16-rc6, v3.16-rc5, v3.16-rc4, v3.16-rc3, v3.16-rc2, v3.16-rc1 |
|
#
46a5ab47 |
| 13-Jun-2014 |
Peng Tao <tao.peng@primarydata.com> |
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 <t
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>
show more ...
|
#
c36aae9a |
| 08-Jun-2014 |
Peng Tao <tao.peng@primarydata.com> |
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> Sig
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>
show more ...
|
#
abde71f4 |
| 09-Jun-2014 |
Tom Haynes <loghyr@primarydata.com> |
pnfs: Add nfs_rpc_ops in calls to nfs_initiate_pgio
Signed-off-by: Tom Haynes <loghyr@primarydata.com>
|
Revision tags: v3.15, v3.15-rc8 |
|
#
30626f9c |
| 30-May-2014 |
Peng Tao <tao.peng@primarydata.com> |
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
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>
show more ...
|
#
1a04c6e1 |
| 30-May-2014 |
Peng Tao <tao.peng@primarydata.com> |
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>
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>
show more ...
|
#
064172f3 |
| 29-May-2014 |
Peng Tao <tao.peng@primarydata.com> |
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 <ta
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>
show more ...
|
#
2ef47eb1 |
| 09-Dec-2014 |
Anna Schumaker <Anna.Schumaker@netapp.com> |
NFS: Fix use of nfs_attr_use_mounted_on_fileid()
This function call was being optimized out during nfs_fhget(), leading to situations where we have a valid fileid but still want to use the mounted_o
NFS: Fix use of nfs_attr_use_mounted_on_fileid()
This function call was being optimized out during nfs_fhget(), leading to situations where we have a valid fileid but still want to use the mounted_on_fileid. For example, imagine we have our server configured like this:
server % df Filesystem Size Used Avail Use% Mounted on /dev/vda1 9.1G 6.5G 1.9G 78% / /dev/vdb1 487M 2.3M 456M 1% /exports /dev/vdc1 487M 2.3M 456M 1% /exports/vol1 /dev/vdd1 487M 2.3M 456M 1% /exports/vol2
If our client mounts /exports and tries to do a "chown -R" across the entire mountpoint, we will get a nasty message warning us about a circular directory structure. Running chown with strace tells me that each directory has the same device and inode number:
newfstatat(AT_FDCWD, "/nfs/", {st_dev=makedev(0, 38), st_ino=2, ...}) = 0 newfstatat(4, "vol1", {st_dev=makedev(0, 38), st_ino=2, ...}) = 0 newfstatat(4, "vol2", {st_dev=makedev(0, 38), st_ino=2, ...}) = 0
With this patch the mounted_on_fileid values are used for st_ino, so the directory loop warning isn't reported.
Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com> Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
show more ...
|
#
7b14a213 |
| 14-Jan-2015 |
Christoph Hellwig <hch@lst.de> |
nfs: don't call bdi_unregister
bdi_destroy already does all the work, and if we delay freeing the anon bdev we can get away with just that single call.
Addintionally remove the call during mount fa
nfs: don't call bdi_unregister
bdi_destroy already does all the work, and if we delay freeing the anon bdev we can get away with just that single call.
Addintionally remove the call during mount failure, as deactivate_super_locked will already call ->kill_sb and clean up the bdi for us.
Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Jan Kara <jack@suse.cz> Signed-off-by: Jens Axboe <axboe@fb.com>
show more ...
|
#
00a36a10 |
| 03-Sep-2014 |
Anna Schumaker <Anna.Schumaker@netapp.com> |
NFS: Move v3 declarations out of internal.h
I am generally against the "one big header file" approach, and everything in the client includes this file. Let's move all the NFS v3 declarations into a
NFS: Move v3 declarations out of internal.h
I am generally against the "one big header file" approach, and everything in the client includes this file. Let's move all the NFS v3 declarations into a v3-only header file.
Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com> Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
show more ...
|
#
1c994a09 |
| 27-Aug-2014 |
Jeff Layton <jlayton@primarydata.com> |
locks: consolidate "nolease" routines
GFS2 and NFS have setlease routines that always just return -EINVAL. Turn that into a generic routine that can live in fs/libfs.c.
Cc: <linux-nfs@vger.kernel.o
locks: consolidate "nolease" routines
GFS2 and NFS have setlease routines that always just return -EINVAL. Turn that into a generic routine that can live in fs/libfs.c.
Cc: <linux-nfs@vger.kernel.org> Cc: Steven Whitehouse <swhiteho@redhat.com> Cc: <cluster-devel@redhat.com> Signed-off-by: Jeff Layton <jlayton@primarydata.com> Acked-by: Trond Myklebust <trond.myklebust@primarydata.com> Reviewed-by: Christoph Hellwig <hch@lst.de>
show more ...
|
#
65b38851 |
| 31-Jul-2014 |
Eric W. Biederman <ebiederm@xmission.com> |
NFS: Fix /proc/fs/nfsfs/servers and /proc/fs/nfsfs/volumes
The usage of pid_ns->child_reaper->nsproxy->net_ns in nfs_server_list_open and nfs_client_list_open is not safe.
/proc for a pid namespace
NFS: Fix /proc/fs/nfsfs/servers and /proc/fs/nfsfs/volumes
The usage of pid_ns->child_reaper->nsproxy->net_ns in nfs_server_list_open and nfs_client_list_open is not safe.
/proc for a pid namespace can remain mounted after the all of the process in that pid namespace have exited. There are also times before the initial process in a pid namespace has started or after the initial process in a pid namespace has exited where pid_ns->child_reaper can be NULL or stale. Making the idiom pid_ns->child_reaper->nsproxy a double whammy of problems.
Luckily all that needs to happen is to move /proc/fs/nfsfs/servers and /proc/fs/nfsfs/volumes under /proc/net to /proc/net/nfsfs/servers and /proc/net/nfsfs/volumes and add a symlink from the original location, and to use seq_open_net as it has been designed.
Cc: stable@vger.kernel.org Cc: Trond Myklebust <trond.myklebust@primarydata.com> Cc: Stanislav Kinsbursky <skinsbursky@parallels.com> Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
show more ...
|
#
c1221321 |
| 07-Jul-2014 |
NeilBrown <neilb@suse.de> |
sched: Allow wait_on_bit_action() functions to support a timeout
It is currently not possible for various wait_on_bit functions to implement a timeout.
While the "action" function that is called to
sched: Allow wait_on_bit_action() functions to support a timeout
It is currently not possible for various wait_on_bit functions to implement a timeout.
While the "action" function that is called to do the waiting could certainly use schedule_timeout(), there is no way to carry forward the remaining timeout after a false wake-up. As false-wakeups a clearly possible at least due to possible hash collisions in bit_waitqueue(), this is a real problem.
The 'action' function is currently passed a pointer to the word containing the bit being waited on. No current action functions use this pointer. So changing it to something else will be a little noisy but will have no immediate effect.
This patch changes the 'action' function to take a pointer to the "struct wait_bit_key", which contains a pointer to the word containing the bit so nothing is really lost.
It also adds a 'private' field to "struct wait_bit_key", which is initialized to zero.
An action function can now implement a timeout with something like
static int timed_out_waiter(struct wait_bit_key *key) { unsigned long waited; if (key->private == 0) { key->private = jiffies; if (key->private == 0) key->private -= 1; } waited = jiffies - key->private; if (waited > 10 * HZ) return -EAGAIN; schedule_timeout(waited - 10 * HZ); return 0; }
If any other need for context in a waiter were found it would be easy to use ->private for some other purpose, or even extend "struct wait_bit_key".
My particular need is to support timeouts in nfs_release_page() to avoid deadlocks with loopback mounted NFS.
While wait_on_bit_timeout() would be a cleaner interface, it will not meet my need. I need the timeout to be sensitive to the state of the connection with the server, which could change. So I need to use an 'action' interface.
Signed-off-by: NeilBrown <neilb@suse.de> Acked-by: Peter Zijlstra <peterz@infradead.org> Cc: Oleg Nesterov <oleg@redhat.com> Cc: Steve French <sfrench@samba.org> Cc: David Howells <dhowells@redhat.com> Cc: Steven Whitehouse <swhiteho@redhat.com> Cc: Linus Torvalds <torvalds@linux-foundation.org> Link: http://lkml.kernel.org/r/20140707051604.28027.41257.stgit@notabene.brown Signed-off-by: Ingo Molnar <mingo@kernel.org>
show more ...
|
#
d4581383 |
| 11-Jul-2014 |
Weston Andros Adamson <dros@primarydata.com> |
nfs: handle multiple reqs in nfs_page_async_flush
Change nfs_find_and_lock_request so nfs_page_async_flush can handle multiple requests in a page. There is only one request for a page the first time
nfs: handle multiple reqs in nfs_page_async_flush
Change nfs_find_and_lock_request so nfs_page_async_flush can handle multiple requests in a page. There is only one request for a page the first time nfs_page_async_flush is called, but if a write or commit fails, async_flush is called again and there may be multiple requests associated with the page. The solution is to merge all the requests in a page group into a single request before calling nfs_pageio_add_request.
Rename nfs_find_and_lock_request to nfs_lock_and_join_requests and change it to first lock all requests for the page, then cancel and merge all subrequests into the head request.
Signed-off-by: Weston Andros Adamson <dros@primarydata.com> Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
show more ...
|
#
c65e6254 |
| 09-Jun-2014 |
Weston Andros Adamson <dros@primarydata.com> |
nfs: remove unused writeverf code
Remove duplicate writeverf structure from merge of nfs_pgio_header and nfs_pgio_data and remove writeverf related flags and logic to handle more than one RPC per nf
nfs: remove unused writeverf code
Remove duplicate writeverf structure from merge of nfs_pgio_header and nfs_pgio_data and remove writeverf related flags and logic to handle more than one RPC per nfs_pgio_header.
Signed-off-by: Weston Andros Adamson <dros@primarydata.com> Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
show more ...
|
#
d45f60c6 |
| 09-Jun-2014 |
Weston Andros Adamson <dros@primarydata.com> |
nfs: merge nfs_pgio_data into _header
struct nfs_pgio_data only exists as a member of nfs_pgio_header, but is passed around everywhere, because there used to be multiple _data structs per _header. M
nfs: merge nfs_pgio_data into _header
struct nfs_pgio_data only exists as a member of nfs_pgio_header, but is passed around everywhere, because there used to be multiple _data structs per _header. Many of these functions then use the _data to find a pointer to the _header. This patch cleans this up by merging the nfs_pgio_data structure into nfs_pgio_header and passing nfs_pgio_header around instead.
Reviewed-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Weston Andros Adamson <dros@primarydata.com> Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
show more ...
|
#
1e7f3a48 |
| 09-Jun-2014 |
Weston Andros Adamson <dros@primarydata.com> |
nfs: move nfs_pgio_data and remove nfs_rw_header
nfs_rw_header was used to allocate an nfs_pgio_header along with an nfs_pgio_data, because a _header would need at least one _data.
Now there is onl
nfs: move nfs_pgio_data and remove nfs_rw_header
nfs_rw_header was used to allocate an nfs_pgio_header along with an nfs_pgio_data, because a _header would need at least one _data.
Now there is only ever one nfs_pgio_data for each nfs_pgio_header -- move it to nfs_pgio_header and get rid of nfs_rw_header.
Reviewed-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Weston Andros Adamson <dros@primarydata.com> Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
show more ...
|
Revision tags: v3.15-rc7, v3.15-rc6, v3.15-rc5, v3.15-rc4, v3.15-rc3, v3.15-rc2, v3.15-rc1 |
|
#
4da54c21 |
| 05-Apr-2014 |
Al Viro <viro@zeniv.linux.org.uk> |
nfs: switch to iter_splice_write_file()
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
|
#
41d8d5b7 |
| 06-May-2014 |
Anna Schumaker <Anna.Schumaker@netapp.com> |
NFS: Create a common nfs_pageio_ops struct
At this point the read and write structures look identical, so combine them into something shared by both.
Signed-off-by: Anna Schumaker <Anna.Schumaker@N
NFS: Create a common nfs_pageio_ops struct
At this point the read and write structures look identical, so combine them into something shared by both.
Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com> Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
show more ...
|
#
cf485fcd |
| 06-May-2014 |
Anna Schumaker <Anna.Schumaker@netapp.com> |
NFS: Create a common generic_pg_pgios()
What we have here is two functions that look identical. Let's share some more code!
Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com> Signed-off-by:
NFS: Create a common generic_pg_pgios()
What we have here is two functions that look identical. Let's share some more code!
Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com> Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
show more ...
|
#
c3766276 |
| 06-May-2014 |
Anna Schumaker <Anna.Schumaker@netapp.com> |
NFS: Create a common multiple_pgios() function
Once again, these two functions look identical in the read and write case. Time to combine them together!
Signed-off-by: Anna Schumaker <Anna.Schumak
NFS: Create a common multiple_pgios() function
Once again, these two functions look identical in the read and write case. Time to combine them together!
Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com> Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
show more ...
|
#
1ed26f33 |
| 06-May-2014 |
Anna Schumaker <Anna.Schumaker@netapp.com> |
NFS: Create a common initiate_pgio() function
Most of this code is the same for both the read and write paths, so combine everything and use the rw_ops when necessary.
Signed-off-by: Anna Schumaker
NFS: Create a common initiate_pgio() function
Most of this code is the same for both the read and write paths, so combine everything and use the rw_ops when necessary.
Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com> Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
show more ...
|