Greeting All I just wanna clarify basic concept about the two io probes (start) & (wait-start). Does (wait-start) do the required data transfer specified in args[0]->b_count right before the associated (wait-done) fires !! OR does the two associated probes (wait-start & wait-done) indicate a waiting time period ONLY (without actual data transfer) in a busy I/O system. Response appreciated ... -- This message posted from opensolaris.org
Abdullah Aldahlawi wrote:> Greeting All > > I just wanna clarify basic concept about the two io probes (start) & (wait-start). > > Does (wait-start) do the required data transfer specified in > args[0]->b_count right before the associated (wait-done) fires !! > > OR does the two associated probes (wait-start & wait-done) indicate a > waiting time period ONLY (without actual data transfer) in a busy I/O system.Neither, really. Probes don''t "do" anything related to the normal operation of the system, they only instrument it. wait-start fires when a wait-for-I/O is begun (I haven''t looked, but I would assume at "biowait()" time, when the request has been submitted to the I/O hardware, and completion is pending). wait-done fires when the wait is terminated...i.e., when the system has completed the I/O. Indeed, dtrace -l -P io shows that wait-start and wait-done are both *in* the biowait() function, so I''m sure this is the case: http://cvs.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/uts/common/os/bio.c#1210> > Response appreciated ... > > > -- > This message posted from opensolaris.org > _______________________________________________ > dtrace-discuss mailing list > dtrace-discuss at opensolaris.org
Thanks dmick ,I appreciate your answer, however, I think I did not ask the question correctly .. I do understand the probes ONLY instrument the system and do not do the actual I/O , this is clear. What is not clear to me is wither or not the the arge[0]->b_count (bytes) get successfully transfer when the associated wait-done probe fires ?. This question cab be asked in different way with the same meaning ... does io:::done the only probe that [b]indicates[/b] that a data transfer has successfully being completed OR io:::wait-done does the same thin with an extra [b]wait time[/b] ??? response appreciated ... -- This message posted from opensolaris.org
Abdullah Aldahlawi wrote:> Thanks dmick ,I appreciate your answer, however, I think I did not ask the question correctly .. I do understand the probes ONLY instrument the system and do not do the actual I/O , this is clear. > > What is not clear to me is wither or not the the arge[0]->b_count (bytes) get > successfully transfer when the associated wait-done probe fires ?.That can''t be answered without examining the state of the buffer at the end of the wait, as biowait is canceled when the buffer is ''completed'', but that doesn''t mean with or without errors. It could be either.> This question cab be asked in different way with the same meaning ... does > io:::done the only probe that [b]indicates[/b] that a data transfer has > successfully being completed OR io:::wait-done does the same thin with an extra > [b]wait time[/b] ???Neither of them imply success. biodone() is called by the thread actually completing the I/O, and wait-done() is fired after biodone() releases the semaphore, in the initiating thread. But success depends on the buffer disposition, and neither end (notifier, or notified) means success just because the buffer is done. You may want to look into the buffer flags, and/or read some about how buf I/O typically works in Unix systems.