It looks like the problem is in the following line in decode_device() p = xdr_inline_decode(&stream, cnt << 2); p is set to NULL is there a limitation in xdr to decode a stream that is bigger than 4096? it works fine for cnt of 1024 but not 1512 Marc. From: Marc Eshel/Almaden/IBM To: Tom Haynes <thomas.haynes@xxxxxxxxxxxxxxx>, Cc: linux-nfs@xxxxxxxxxxxxxxx, linux-nfs-owner@xxxxxxxxxxxxxxx, Marc Eshel/Almaden/IBM@IBMUS, Trond Myklebust <trond.myklebust@xxxxxxxxxxxxxxx> Date: 10/08/2014 08:05 AM Subject: Re: decode_device linux-nfs-owner@xxxxxxxxxxxxxxx wrote on 10/08/2014 05:46:24 AM: > From: Tom Haynes <thomas.haynes@xxxxxxxxxxxxxxx> > To: Marc Eshel/Almaden/IBM@IBMUS, > Cc: Trond Myklebust <trond.myklebust@xxxxxxxxxxxxxxx>, linux- > nfs@xxxxxxxxxxxxxxx > Date: 10/08/2014 05:46 AM > Subject: Re: decode_device > Sent by: linux-nfs-owner@xxxxxxxxxxxxxxx > > > On Oct 7, 2014, at 9:33 PM, Marc Eshel <eshel@xxxxxxxxxx> wrote: > > > I see that NFS4_PNFS_MAX_STRIPE_CNT is 4096 but when give the client a cnt > > that is bigger than 1024 it fails, is that the limitation of kcalloc() ? > > > > 366341.304362] <-- _nfs4_proc_getdeviceinfo status=0 > > [366341.304364] filelayout_get_device_info getdevice info returns 0 > > [366341.304368] decode_device stripe count 1512 > > [366341.304370] decode_device ERROR: returning NULL > > [366341.304372] NFS: decode_and_add_device: Could not decode or add device > > [366341.304428] <-- filelayout_get_device_info dsaddr (null) > > [366341.304430] --> filelayout_check_layout returns -22 > > [366341.304433] pnfs_layout_process: Could not allocate layout: error -12 > > > > decode_device() > > > > ... > > dprintk("%s stripe count %d\n", __func__, cnt); > > if (cnt > NFS4_PNFS_MAX_STRIPE_CNT) { > > printk(KERN_WARNING "NFS: %s: stripe count %d greater than > > " > > "supported maximum %d\n", __func__, > > cnt, NFS4_PNFS_MAX_STRIPE_CNT); > > goto out_err_free_scratch; > > } > > > > /* read stripe indices */ > > stripe_indices = kcalloc(cnt, sizeof(u8), gfp_flags); > > if (!stripe_indices) > > goto out_err_free_scratch; > > > > > > Thanks, Marc. > > > > Hi Marc, > > You are asking for 1512 bytes of memory. That would be looking for a 2k slab. > > What flags are being passed down in gfp_flags? > > Are you experiencing any other memory issues? Hi Tom, It was working fine for a list of up to 1024 so I assumed it was a kcalloc, I will have to add more debugging to find the problem. Thanks, Marc. > > Tom > -- > To unsubscribe from this list: send the line "unsubscribe linux-nfs" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html > -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html