#undef TRACE_SYSTEM #define TRACE_SYSTEM dma_fence #if !defined(_TRACE_FENCE_H) || defined(TRACE_HEADER_MULTI_READ) #define _TRACE_DMA_FENCE_H #include struct dma_fence; TRACE_EVENT(dma_fence_annotate_wait_on, /* fence: the fence waiting on f1, f1: the fence to be waited on. */ TP_PROTO(struct dma_fence *fence, struct dma_fence *f1), TP_ARGS(fence, f1), TP_STRUCT__entry( __string(driver, fence->ops->get_driver_name(fence)) __string(timeline, fence->ops->get_timeline_name(fence)) __field(unsigned int, context) __field(unsigned int, seqno) __string(waiting_driver, f1->ops->get_driver_name(f1)) __string(waiting_timeline, f1->ops->get_timeline_name(f1)) __field(unsigned int, waiting_context) __field(unsigned int, waiting_seqno) ), TP_fast_assign( __assign_str(driver, fence->ops->get_driver_name(fence)) __assign_str(timeline, fence->ops->get_timeline_name(fence)) __entry->context = fence->context; __entry->seqno = fence->seqno; __assign_str(waiting_driver, f1->ops->get_driver_name(f1)) __assign_str(waiting_timeline, f1->ops->get_timeline_name(f1)) __entry->waiting_context = f1->context; __entry->waiting_seqno = f1->seqno; ), TP_printk("driver=%s timeline=%s context=%u seqno=%u " \ "waits on driver=%s timeline=%s context=%u seqno=%u", __get_str(driver), __get_str(timeline), __entry->context, __entry->seqno, __get_str(waiting_driver), __get_str(waiting_timeline), __entry->waiting_context, __entry->waiting_seqno) ); DECLARE_EVENT_CLASS(dma_fence, TP_PROTO(struct dma_fence *fence), TP_ARGS(fence), TP_STRUCT__entry( __string(driver, fence->ops->get_driver_name(fence)) __string(timeline, fence->ops->get_timeline_name(fence)) __field(unsigned int, context) __field(unsigned int, seqno) ), TP_fast_assign( __assign_str(driver, fence->ops->get_driver_name(fence)) __assign_str(timeline, fence->ops->get_timeline_name(fence)) __entry->context = fence->context; __entry->seqno = fence->seqno; ), TP_printk("driver=%s timeline=%s context=%u seqno=%u", __get_str(driver), __get_str(timeline), __entry->context, __entry->seqno) ); DEFINE_EVENT(dma_fence, dma_fence_emit, TP_PROTO(struct dma_fence *fence), TP_ARGS(fence) ); DEFINE_EVENT(dma_fence, dma_fence_init, TP_PROTO(struct dma_fence *fence), TP_ARGS(fence) ); DEFINE_EVENT(dma_fence, dma_fence_destroy, TP_PROTO(struct dma_fence *fence), TP_ARGS(fence) ); DEFINE_EVENT(dma_fence, dma_fence_enable_signal, TP_PROTO(struct dma_fence *fence), TP_ARGS(fence) ); DEFINE_EVENT(dma_fence, dma_fence_signaled, TP_PROTO(struct dma_fence *fence), TP_ARGS(fence) ); DEFINE_EVENT(dma_fence, dma_fence_wait_start, TP_PROTO(struct dma_fence *fence), TP_ARGS(fence) ); DEFINE_EVENT(dma_fence, dma_fence_wait_end, TP_PROTO(struct dma_fence *fence), TP_ARGS(fence) ); #endif /* _TRACE_DMA_FENCE_H */ /* This part must be outside protection */ #include git/commit/include/uapi/xen?id=eeeefd41843218c55a8782a6920f044d9bf6207a'>xen
diff options
context:
space:
mode:
authorChristoph Hellwig <hch@lst.de>2017-02-05 18:10:35 +0100
committerJens Axboe <axboe@fb.com>2017-02-06 09:34:46 -0700
commiteeeefd41843218c55a8782a6920f044d9bf6207a (patch)
treec342eac46626e62745aa8e1a982626efca8b121d /include/uapi/xen
parentc14024dbb156c8392908aaa822097d27c6af8ec8 (diff)
block: don't try Write Same from __blkdev_issue_zeroout
Write Same can return an error asynchronously if it turns out the underlying SCSI device does not support Write Same, which makes a proper fallback to other methods in __blkdev_issue_zeroout impossible. Thus only issue a Write Same from blkdev_issue_zeroout an don't try it at all from __blkdev_issue_zeroout as a non-invasive workaround. Signed-off-by: Christoph Hellwig <hch@lst.de> Reported-by: Junichi Nomura <j-nomura@ce.jp.nec.com> Fixes: e73c23ff ("block: add async variant of blkdev_issue_zeroout") Tested-by: Junichi Nomura <j-nomura@ce.jp.nec.com> Signed-off-by: Jens Axboe <axboe@fb.com>
Diffstat (limited to 'include/uapi/xen')