From: Kinglong Mee <kinglongmee@gmail.com>
To: Trond Myklebust <trond.myklebust@primarydata.com>
Cc: "linux-nfs@vger.kernel.org" <linux-nfs@vger.kernel.org>,
Weston Andros Adamson <dros@primarydata.com>,
kinglongmee@gmail.com
Subject: Re: [PATCH] NFS: Skip checking ds_cinfo.buckets when lseg's commit_through_mds is set
Date: Tue, 22 Sep 2015 06:42:32 +0800 [thread overview]
Message-ID: <560087D8.7050403@gmail.com> (raw)
In-Reply-To: <CAHQdGtRyw+FXn05CHQj5izVe1XeUVN4VZOZ_rg7RzH2ZDEyGtw@mail.gmail.com>
On 9/22/2015 01:10, Trond Myklebust wrote:
> On Mon, Sep 21, 2015 at 6:03 AM, Kinglong Mee <kinglongmee@gmail.com> wrote:
>> When lseg's commit_through_mds is set, pnfs client always WARN once
>> in nfs_direct_select_verf when checking ds_cinfo.nbuckets.
>>
>> But, filelayout_alloc_commit_info will not initialize the ds_cinfo.nbuckets.
>> It's wrong of checking ds_cinfo.nbuckets, client should skip it.
>>
>> [17844.666094] ------------[ cut here ]------------
>> [17844.667071] WARNING: CPU: 0 PID: 21758 at /root/source/linux-pnfs/fs/nfs/direct.c:174 nfs_direct_select_verf+0x5a/0x70 [nfs]()
>> [17844.668650] Modules linked in: nfs_layout_nfsv41_files(OE) nfsv4(OE) nfs(OE) fscache(E) nfsd(OE) xfs libcrc32c btrfs ppdev coretemp crct10dif_pclmul auth_rpcgss crc32_pclmul crc32c_intel nfs_acl ghash_clmulni_intel lockd vmw_balloon xor vmw_vmci grace raid6_pq shpchp sunrpc parport_pc i2c_piix4 parport vmwgfx drm_kms_helper ttm drm serio_raw mptspi e1000 scsi_transport_spi mptscsih mptbase ata_generic pata_acpi [last unloaded: fscache]
>> [17844.686676] CPU: 0 PID: 21758 Comm: kworker/0:1 Tainted: G W OE 4.3.0-rc1-pnfs+ #245
>> [17844.687352] Hardware name: VMware, Inc. VMware Virtual Platform/440BX Desktop Reference Platform, BIOS 6.00 05/20/2014
>> [17844.698502] Workqueue: nfsiod rpc_async_release [sunrpc]
>> [17844.699212] 0000000000000009 0000000043e58010 ffff8800454fbc10 ffffffff813680c4
>> [17844.699990] ffff8800454fbc48 ffffffff8108b49d ffff88004eb20000 ffff88004eb20000
>> [17844.700844] ffff880062e26000 0000000000000000 0000000000000001 ffff8800454fbc58
>> [17844.701637] Call Trace:
>> [17844.725252] [<ffffffff813680c4>] dump_stack+0x19/0x25
>> [17844.732693] [<ffffffff8108b49d>] warn_slowpath_common+0x7d/0xb0
>> [17844.733855] [<ffffffff8108b5da>] warn_slowpath_null+0x1a/0x20
>> [17844.735015] [<ffffffffa04a27ca>] nfs_direct_select_verf+0x5a/0x70 [nfs]
>> [17844.735999] [<ffffffffa04a2b83>] nfs_direct_set_hdr_verf+0x23/0x90 [nfs]
>> [17844.736846] [<ffffffffa04a2e17>] nfs_direct_write_completion+0x227/0x260 [nfs]
>> [17844.737782] [<ffffffffa04a433c>] nfs_pgio_release+0x1c/0x20 [nfs]
>> [17844.738597] [<ffffffffa0502df3>] pnfs_generic_rw_release+0x23/0x30 [nfsv4]
>> [17844.739486] [<ffffffffa01cbbea>] rpc_free_task+0x2a/0x70 [sunrpc]
>> [17844.740326] [<ffffffffa01cbcd5>] rpc_async_release+0x15/0x20 [sunrpc]
>> [17844.741173] [<ffffffff810a387c>] process_one_work+0x21c/0x4c0
>> [17844.741984] [<ffffffff810a37cd>] ? process_one_work+0x16d/0x4c0
>> [17844.742837] [<ffffffff810a3b6a>] worker_thread+0x4a/0x440
>> [17844.743639] [<ffffffff810a3b20>] ? process_one_work+0x4c0/0x4c0
>> [17844.744399] [<ffffffff810a3b20>] ? process_one_work+0x4c0/0x4c0
>> [17844.745176] [<ffffffff810a8d75>] kthread+0xf5/0x110
>> [17844.745927] [<ffffffff810a8c80>] ? kthread_create_on_node+0x240/0x240
>> [17844.747105] [<ffffffff8172ce1f>] ret_from_fork+0x3f/0x70
>> [17844.747856] [<ffffffff810a8c80>] ? kthread_create_on_node+0x240/0x240
>> [17844.748642] ---[ end trace 336a2845d42b83f0 ]---
>>
>> Signed-off-by: Kinglong Mee <kinglongmee@gmail.com>
>> ---
>> fs/nfs/direct.c | 2 +-
>> fs/nfs/filelayout/filelayout.c | 5 ++++-
>> include/linux/nfs_xdr.h | 1 +
>> 3 files changed, 6 insertions(+), 2 deletions(-)
>>
>> diff --git a/fs/nfs/direct.c b/fs/nfs/direct.c
>> index 38678d9..df3b6f4 100644
>> --- a/fs/nfs/direct.c
>> +++ b/fs/nfs/direct.c
>> @@ -166,7 +166,7 @@ nfs_direct_select_verf(struct nfs_direct_req *dreq,
>> struct nfs_writeverf *verfp = &dreq->verf;
>>
>> #ifdef CONFIG_NFS_V4_1
>> - if (ds_clp) {
>> + if (ds_clp && !dreq->ds_cinfo.through_mds) {
>
> Why we can't just test for dreq->ds_cinfo.nbuckets > 0?
Yes, that's okay by checking dreq->ds_cinfo.nbuckets or dreq->ds_cinfo.buckets here.
The current code is harmless, only the noise of WARN_ONCE.
At first glance, I plan to remove the WARN_ONCE.
I add a through_mds here for stronger logical.
Without adding new values, I'd prefer using dreq->ds_cinfo.nbuckets.
A new patch will be post, thanks.
>
>> /* pNFS is in use, use the DS verf */
>> if (commit_idx >= 0 && commit_idx < dreq->ds_cinfo.nbuckets)
>> verfp = &dreq->ds_cinfo.buckets[commit_idx].direct_verf;
thanks,
Kinglong Mee
next prev parent reply other threads:[~2015-09-21 22:42 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-09-21 10:03 [PATCH] NFS: Skip checking ds_cinfo.buckets when lseg's commit_through_mds is set Kinglong Mee
2015-09-21 17:10 ` Trond Myklebust
2015-09-21 22:42 ` Kinglong Mee [this message]
2015-09-21 22:54 ` [PATCH v2] " Kinglong Mee
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=560087D8.7050403@gmail.com \
--to=kinglongmee@gmail.com \
--cc=dros@primarydata.com \
--cc=linux-nfs@vger.kernel.org \
--cc=trond.myklebust@primarydata.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.