Chris Youb
2006-Aug-24 20:41 UTC
[Xen-devel] block ring interface: nr_segments = 0 results in BLKIF_RSP_ERROR
I am currently developing a blkfront.c for a custom OS over Xen 3.0.2-2. Typical I/O is working, however, I ran into an error while testing a corner case. On standard I/O, where { 1 <= nr_segments < BLKIF_MAX_SEGMENTS_PER_REQUEST } blkif_int()''s bret->status returns BLKIF_RSP_OKAY. Yet when { nr_segments == 0 } blkif_int''s bret->status is non-zero. (Yes I realize this is an I/O call of zero-length.) I checked the documentation and section "8.2.2 Block ring interface" states the following but doesn''t exclude 0: "nr_segments number of segments for scatter / gather IO described by this request" 1) Is it possible there is a problem w/ my front-end driver (ie does anyone else see this behaviour)? 2) If this is back-end related, shouldn''t it just return BLKIF_RSP_OKAY? --------------------------------- Now you can have a huge leap forward in email: get the new Yahoo! Mail. _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Andrew Warfield
2006-Aug-24 22:00 UTC
Re: [Xen-devel] block ring interface: nr_segments = 0 results in BLKIF_RSP_ERROR
See dispatch_rw_block_io in blkback.c: /* Check that number of segments is sane. */ nseg = req->nr_segments; if (unlikely(nseg == 0) || unlikely(nseg > BLKIF_MAX_SEGMENTS_PER_REQUEST)) { DPRINTK("Bad number of segments in request (%d)\n", nseg); goto fail_response; } Why is it important that the backend report that a request for zero-length i/o is okay? a. On 8/24/06, Chris Youb <chris_youb@yahoo.ca> wrote:> > I am currently developing a blkfront.c for a custom OS over Xen 3.0.2-2. > Typical I/O is working, however, I ran into an error while testing a corner > case. > > On standard I/O, where { 1 <= nr_segments < BLKIF_MAX_SEGMENTS_PER_REQUEST > } blkif_int()''s bret->status returns BLKIF_RSP_OKAY. > > Yet when { nr_segments == 0 } blkif_int''s bret->status is non-zero. (Yes I > realize this is an I/O call of zero-length.) > > I checked the documentation and section "8.2.2 Block ring interface" states > the following but doesn''t exclude 0: > > "nr_segments > number of segments for scatter / gather IO described by this request" > > 1) Is it possible there is a problem w/ my front-end driver (ie does anyone > else see this behaviour)? > > 2) If this is back-end related, shouldn''t it just return BLKIF_RSP_OKAY? > > > ________________________________ > Now you can have a huge leap forward in email: get the new Yahoo! Mail. > > > _______________________________________________ > Xen-devel mailing list > Xen-devel@lists.xensource.com > http://lists.xensource.com/xen-devel > > >_______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Reasonably Related Threads
- [PATCH V4 0/3] xen-blkfront/blkback discard support
- [RFC v1 3/5] VBD: enlarge max segment per request in blkfront
- [PATCH] Persistent grant maps for xen blk drivers
- [PATCH] blktap: ensure vma->vm_mm''s mmap_sem is being held whenever it is being modified
- [PATCH] xen-blk: persistent-grants fixes