Re: non-contiguous write across SCSI layout

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

 



> On Jun 8, 2016, at 10:45 AM, Benjamin Coddington <bcodding@xxxxxxxxxx> wrote:
> 
> Hi Dros,
> 
> The client takes this WARN_ON_ONCE path pretty often in
> pnfs_generic_pg_test() with SCSI layout type and generic/010:
> 
> 1925     if (pgio->pg_lseg) {
> 1926         seg_end = end_offset(pgio->pg_lseg->pls_range.offset,
> 1927                      pgio->pg_lseg->pls_range.length);
> 1928         req_start = req_offset(req);
> 1929         WARN_ON_ONCE(req_start >= seg_end);
> 1930         /* start of request is past the last byte of this segment */
> 1931         if (req_start >= seg_end) {
> 1932             /* reference the new lseg */
> 1933             if (pgio->pg_ops->pg_cleanup)
> 1934                 pgio->pg_ops->pg_cleanup(pgio);
> 1935             if (pgio->pg_ops->pg_init)
> 1936                 pgio->pg_ops->pg_init(pgio, req);
> 1937             return 0;
> 1938         }
> 
> I'm trying to figure out why that's a WARN-able path.. do you recall the
> original reason for that warning?

What’s happening here is that the pgio descriptor spans multiple layout segments.

IIRC this points to a problem with the pg_test call. It shouldn’t allow requests
from different lsegs to be coalesced.

-dros

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