[GIT PULL] Please pull more NFS client changes

From: Trond Myklebust
Date: Mon Jan 16 2012 - 17:07:54 EST


Hi Linus,

Please pull from the signed tag "nfs-for-3.3-2" in the repository at

git pull git://git.linux-nfs.org/projects/trondmy/linux-nfs.git tag nfs-for-3.3-2

This will update the following files through the appended changesets.

Cheers,
Trond

----
fs/nfs/blocklayout/blocklayout.c | 202 ++++++++++++++++++++++++-------------
fs/nfs/blocklayout/blocklayout.h | 12 ++-
fs/nfs/blocklayout/extents.c | 176 ++++++++++++++-------------------
fs/nfs/callback.h | 2 +-
fs/nfs/callback_xdr.c | 4 +
fs/nfs/nfs4filelayoutdev.c | 2 +-
fs/nfs/nfs4proc.c | 2 +-
7 files changed, 222 insertions(+), 178 deletions(-)

commit 7c5465d6ccd759caa959828e2add5603518dafc4
Author: Peng Tao <bergwolf@xxxxxxxxx>
Date: Thu Jan 12 23:18:46 2012 +0800

pnfsblock: alloc short extent before submit bio

As discussed earlier, it is better for block client to allocate memory for
tracking extents state before submitting bio. So the patch does it by allocating
a short_extent for every INVALID extent touched by write pagelist and for
every zeroing page we created, saving them in layout header. Then in end_io we
can just use them to create commit list items and avoid memory allocation there.

Signed-off-by: Peng Tao <peng_tao@xxxxxxx>
Signed-off-by: Benny Halevy <bhalevy@xxxxxxxxxx>
Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx>

commit c0411a94a8f318379464e29dd81db806249dbca6
Author: Peng Tao <bergwolf@xxxxxxxxx>
Date: Thu Jan 12 23:18:44 2012 +0800

pnfsblock: remove rpc_call_ops from struct parallel_io

block layout can just make use of generic read/write_done.

Signed-off-by: Peng Tao <peng_tao@xxxxxxx>
Signed-off-by: Benny Halevy <bhalevy@xxxxxxxxxx>
Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx>

commit 72c508879979522de347bcec706507e00d7c443d
Author: Peng Tao <bergwolf@xxxxxxxxx>
Date: Thu Jan 12 23:18:42 2012 +0800

pnfsblock: move find lock page logic out of bl_write_pagelist

Also avoid unnecessary lock_page if page is handled by others.

Signed-off-by: Peng Tao <peng_tao@xxxxxxx>
Signed-off-by: Benny Halevy <bhalevy@xxxxxxxxxx>
Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx>

commit 60c52e3a72fda10e82f38b6f979956eb2dcb3d4e
Author: Peng Tao <bergwolf@xxxxxxxxx>
Date: Thu Jan 12 23:18:40 2012 +0800

pnfsblock: cleanup bl_mark_sectors_init

It does not need to manipulate on partial initialized blocks.
Writeback code takes care of it.

Signed-off-by: Peng Tao <peng_tao@xxxxxxx>
Signed-off-by: Benny Halevy <bhalevy@xxxxxxxxxx>
Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx>

commit 74a6eeb44ca6174d9cc93b9b8b4d58211c57bc80
Author: Peng Tao <bergwolf@xxxxxxxxx>
Date: Thu Jan 12 23:18:48 2012 +0800

pnfsblock: limit bio page count

One bio can have at most BIO_MAX_PAGES pages. We should limit it bec otherwise
bio_alloc will fail when there are many pages in one read/write_pagelist.

Cc: <stable@xxxxxxxxxxxxxxx> #3.1+
Signed-off-by: Peng Tao <peng_tao@xxxxxxx>
Signed-off-by: Benny Halevy <bhalevy@xxxxxxxxxx>
Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx>

commit 93a3844ee0f843b05a1df4b52e1a19ff26b98d24
Author: Peng Tao <bergwolf@xxxxxxxxx>
Date: Thu Jan 12 23:18:47 2012 +0800

pnfsblock: don't spinlock when freeing block_dev

bl_free_block_dev() may sleep. We can not call it with spinlock held.
Besides, there is no need to take bm_lock as we are last user freeing bm_devlist.

Cc: <stable@xxxxxxxxxxxxxxx> #3.1+
Signed-off-by: Peng Tao <peng_tao@xxxxxxx>
Signed-off-by: Benny Halevy <bhalevy@xxxxxxxxxx>
Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx>

commit 57582b372f63d0f655b1a35b0d306d73d1a46775
Author: Peng Tao <bergwolf@xxxxxxxxx>
Date: Thu Jan 12 23:18:45 2012 +0800

pnfsblock: clean up _add_entry

It is wrong to kmalloc in _add_entry() as it is inside
spinlock. memory should be already allocated _add_entry() is called.

Signed-off-by: Peng Tao <peng_tao@xxxxxxx>
Signed-off-by: Benny Halevy <bhalevy@xxxxxxxxxx>
Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx>

commit 82b906d6550ee5fe0d5553359b3c9692dd0aed31
Author: Peng Tao <bergwolf@xxxxxxxxx>
Date: Thu Jan 12 23:18:43 2012 +0800

pnfsblock: set read/write tk_status to pnfs_error

To pass the IO status to upper layer.

Signed-off-by: Peng Tao <peng_tao@xxxxxxx>
Signed-off-by: Benny Halevy <bhalevy@xxxxxxxxxx>
Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx>

commit 39e567ae36fe03c2b446e1b83ee3d39bea08f90b
Author: Peng Tao <bergwolf@xxxxxxxxx>
Date: Thu Jan 12 23:18:41 2012 +0800

pnfsblock: acquire im_lock in _preload_range

When calling _add_entry, we should take the im_lock to protect
agains other modifiers.

Cc: <stable@xxxxxxxxxxxxxxx> #3.1+
Signed-off-by: Peng Tao <peng_tao@xxxxxxx>
Signed-off-by: Benny Halevy <bhalevy@xxxxxxxxxx>
Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx>

commit de040beccd52bb5fcac90031505384d037b1111c
Author: Peng Tao <bergwolf@xxxxxxxxx>
Date: Tue Jan 10 22:42:47 2012 +0800

NFS4: fix compile warnings in nfs4proc.c

compile in nfs-for-3.3 branch shows following warnings. Fix it here.

fs/nfs/nfs4proc.c: In function â__nfs4_get_acl_uncachedâ:
fs/nfs/nfs4proc.c:3589: warning: format â%ldâ expects type âlong intâ, but argument 4 has type âsize_tâ
fs/nfs/nfs4proc.c:3589: warning: format â%ldâ expects type âlong intâ, but argument 6 has type âsize_tâ

Signed-off-by: Peng Tao <peng_tao@xxxxxxx>
Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx>

commit 363e0df057ea8da539645fe4c3c227e3d44054cc
Author: Dan Carpenter <dan.carpenter@xxxxxxxxxx>
Date: Thu Jan 12 10:16:14 2012 +0300

nfs: check for integer overflow in decode_devicenotify_args()

On 32 bit, if n is too large then "n * sizeof(*args->devs)" could
overflow and args->devs would be smaller than expected.

Signed-off-by: Dan Carpenter <dan.carpenter@xxxxxxxxxx>
Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx>

commit 13fff2f35fd21d69ee84ef6a78610420e1a42818
Author: Dan Carpenter <dan.carpenter@xxxxxxxxxx>
Date: Thu Jan 12 10:07:35 2012 +0300

NFS: cleanup endian type in decode_ds_addr()

port is supposed to be a __be16 here. The existing code should work
fine, but this is a cleanup.

Signed-off-by: Dan Carpenter <dan.carpenter@xxxxxxxxxx>
Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx>

commit 0e0243dc35a2349b3946e54f90e874be396fdb8b
Author: Dan Carpenter <dan.carpenter@xxxxxxxxxx>
Date: Thu Jan 12 10:06:05 2012 +0300

NFS: add an endian notation

This function returns a big endian value. The implementation in
fs/nfs/callback_proc.c is declared with "__be32" but the .h file uses
"unsigned" instead. It makes sparse complain:

fs/nfs/callback_proc.c:232:8: error:
symbol 'nfs4_callback_layoutrecall' redeclared with different
type (originally declared at fs/nfs/callback.h:165) - different
base types

Signed-off-by: Dan Carpenter <dan.carpenter@xxxxxxxxxx>
Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx>


--
Trond Myklebust
Linux NFS client maintainer

NetApp
Trond.Myklebust@xxxxxxxxxx
www.netapp.com

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/