Any ideas on how this is handled? It will be good to know.<br><br><div class="gmail_quote">On Fri, Dec 16, 2011 at 1:10 AM, Liu Yuan <span dir="ltr"><<a href="mailto:namei.unix@gmail.com">namei.unix@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im">On 12/16/2011 04:57 PM, John Ryan wrote:<br>
<br>
> Ok I got it. All writes have all or nothing semantics. What happens to<br>
> writes that straddle chunks? How is that case handled? Because you could<br>
> be writing to two different set of replicas.<br>
><br>
<br>
<br>
</div>read/write requests are firstly handled in the qemu block layer. I guess<br>
request that straddle chunks will be split into several ones. Kazum,<br>
would you confirm this?<br>
<br>
Thanks,<br>
Yuan<br>
<div class="im HOEnZb"><br>
> On Thu, Dec 15, 2011 at 11:52 PM, Liu Yuan <<a href="mailto:namei.unix@gmail.com">namei.unix@gmail.com</a><br>
</div><div class="HOEnZb"><div class="h5">> <mailto:<a href="mailto:namei.unix@gmail.com">namei.unix@gmail.com</a>>> wrote:<br>
><br>
>     On 12/16/2011 03:12 PM, John Ryan wrote:<br>
><br>
>     > Trying to get my feet wet with Sheepdog. I understand that all<br>
>     vdisk are<br>
>     > chunked at a 4MB boundary. Suppose a write of 64 bytes needs to happen<br>
>     > at offset 390. This maps to the first 4MB chunk. In traditionally<br>
>     block<br>
>     > devices it is a read modify write where a read of 512 (assuming<br>
>     this is<br>
>     > the sector size) bytes occurs, sector that contains the offset, the<br>
>     > value updated with the 64 bytes from offset 390 and then the buffer is<br>
>     > written out to disk. How does this map to Sheepdog case? What is the<br>
>     > equivalent of sector size and how many bytes are accumulated before a<br>
>     > write is pushed out to disk?<br>
>     ><br>
><br>
><br>
>     Sheepdog uses system call pread/pwrite that do the object rw. So in your<br>
>     case, sheep daedom just finds the targed replica and sends the requests<br>
>     to the nodes. The sheep daemons running on those nodes will parse the<br>
>     requests and call pread/pwrite finally.<br>
><br>
>     So this operations (read/modify/write) for partial rw rely on the<br>
>     underlying file system, I guess normally as you described above.<br>
><br>
>     Thanks,<br>
>     Yuan<br>
><br>
><br>
<br>
<br>
</div></div></blockquote></div><br>