Re: decode_device

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



linux-nfs-owner@xxxxxxxxxxxxxxx wrote on 10/09/2014 08:33:35 AM:

> From: Peng Tao <bergwolf@xxxxxxxxxxxxxxx>
> To: Marc Eshel/Almaden/IBM@IBMUS, 
> Cc: Tom Haynes <thomas.haynes@xxxxxxxxxxxxxxx>, Linux NFS Mailing 
> List <linux-nfs@xxxxxxxxxxxxxxx>, linux-nfs-owner@xxxxxxxxxxxxxxx, 
> Trond Myklebust <trond.myklebust@xxxxxxxxxxxxxxx>
> Date: 10/09/2014 08:40 AM
> Subject: Re: decode_device
> Sent by: linux-nfs-owner@xxxxxxxxxxxxxxx
> 
> On Wed, Oct 8, 2014 at 2:41 PM, Marc Eshel <eshel@xxxxxxxxxx> wrote:
> > 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?
> Here's the limitation in decode_device():
>  78         /* set up xdr stream */
>  79         scratch = alloc_page(gfp_flags);
>  80         if (!scratch)
>  81                 goto out_err;
>  82
>  83         xdr_init_decode_pages(&stream, &buf, pdev->pages, 
pdev->pglen);
>  84         xdr_set_scratch_buffer(&stream, page_address(scratch), 
PAGE_SIZE);

Yes, so NFS4_PNFS_MAX_STRIPE_CNT that is now set to 4096 will not be 
possible it can only be 1024 if we are limited to page size.
Is it possible to fix xdr or do we have to accept this limit?
Thanks, Marc.

> 
> > 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
> --
> 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




[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux