X-Spam-Check-By: sourceware.org Date: Wed, 7 Dec 2005 19:35:55 +0100 From: Corinna Vinschen To: cygwin AT cygwin DOT com Subject: Re: Error reported dd'ing close of end of block device with skip Message-ID: <20051207183555.GD2999@calimero.vinschen.de> Reply-To: cygwin AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com References: Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.4.2i Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm Precedence: bulk List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com Delivered-To: mailing list cygwin AT cygwin DOT com On Dec 7 11:55, Loh, Joe wrote: > QUESTION: > > Is there a way in Cygwin to do a read of a block device using "C" that > does not do a read-ahead? We needed to develop an application that will > issue the exact transfer size to the target device as requested. > Looking at the strace, it appears that read() less than 61440-bytes gets > translated to reading 61440 bytes into buffer and then a subset of that > read is returned to the caller. There's a non-portable (only Cygwin) way to set the buffer size after opening a device: #include struct rdop rd; fd = open ("dev/sda", ...); rd.rd_op = RDSETBLK; rd.rd_parm = 0; /* Unbuffered reading */ rd.rd_parm = 1; /* Unbuffered reading */ rd.rd_parm = n; /* Buffered reading with buffer size n */ ioctl (fd, RDIOCDOP, &rd); Note that the ioctl fails if the buffer already contains data, so ioctl should be called before the first read. Also note that in unbuffered mode the usual Windows blocking rule applies, the length given to read must be a multiple of 512. Sigh, it seems that I introduced a bug into this ioctl also not long ago. I fixed this in CVS. Recent code will probably not work very well when setting it to unbuffered mode. Please wait for the next developers snapshot. Corinna -- Corinna Vinschen Please, send mails regarding Cygwin to Cygwin Project Co-Leader cygwin AT cygwin DOT com Red Hat, Inc. -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Problem reports: http://cygwin.com/problems.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/