mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: "Randy.Dunlap" <rddunlap@osdl.org>
To: Bruno Diniz de Paula <diniz@cs.rutgers.edu>
Cc: linux-kernel@vger.kernel.org
Subject: Re: O_DIRECT foolish question
Date: Wed, 12 Feb 2003 17:46:37 -0800	[thread overview]
Message-ID: <20030212174637.3975e7c3.rddunlap@osdl.org> (raw)
In-Reply-To: <1045092155.21195.93.camel@urca.rutgers.edu>

On 12 Feb 2003 18:22:35 -0500
Bruno Diniz de Paula <diniz@cs.rutgers.edu> wrote:

| Just to complete the information, I am trying to read a file with 5
| bytes, and here is the piece of code I am using:
| 
|     char *message;
|     int fd = open("/var/tmp/testopen.txt", O_RDONLY|O_DIRECT);
|     int len, pagesize = getpagesize();
| 
|     posix_memalign((void **)&message, pagesize, pagesize);
|     if(fd < 0) {
|         printf("Unable to open file, errno is %d.\n", errno);
|     } else {
|         if((len = read(fd, message, pagesize)) < 0) {
| 			perror("read");
|         } else {
|             printf("%d bytes read from file.\n", len);
| 	    printf("Message: %s", message);
|         }
|     }
|     close(fd);
| 
| Thanks,
| 
| Bruno.
| 
| On Wed, 2003-02-12 at 18:02, Bruno Diniz de Paula wrote:
| > On Wed, 2003-02-12 at 17:42, Chris Wedgwood wrote:
| > > On Wed, Feb 12, 2003 at 05:29:52PM -0500, Bruno Diniz de Paula wrote:
| > > 
| > > > But I am using multiples of page size in both buffer alignment and
| > > > buffer size (2nd and 3rd parameters of read).  The issue is that
| > > > when I try to read files with sizes that are NOT multiples of block
| > > > size (and therefore also not multiples of page size), the read
| > > > syscall returns 0, with no errors.
| > > 
| > > What filesystem?
| > 
| > ext2.
| > 
| > > 
| > > Can you send an strace of this occurring?
| > 
[strace snipped]
| > 
| > Thanks a lot,
| > 
| > Bruno.
| > 
| > > 
| > > > So the question remains, am I able to read just files whose size is
| > > > a multiple of block size?
| > > 
| > > No.
| > > 
| > > You ideally should be able to read any length file with O_DIRECT.
| > > Even a 1-byte file.



Here's what I get using Bruno's and cw's (od) programs:

	2.4.8|2.4.20	2.4.20			2.5.54
	ext2		ext3			ext2|ext3
	====		====			=========
od:	read 0 bytes	read: Inv. arg.		read: Inv. arg.
bruno:	0 bytes read	read: Inv. arg.		read: Inv. arg.

--
~Randy

  reply	other threads:[~2003-02-13  1:39 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-02-12 21:19 Bruno Diniz de Paula
2003-02-12 22:03 ` Andrew Morton
2003-02-12 22:29   ` Bruno Diniz de Paula
2003-02-12 22:42     ` Chris Wedgwood
2003-02-12 23:02       ` Bruno Diniz de Paula
2003-02-12 23:22         ` Bruno Diniz de Paula
2003-02-13  1:46           ` Randy.Dunlap [this message]
2003-02-12 23:24         ` Chris Wedgwood
2003-02-12 23:33           ` Bruno Diniz de Paula
2003-02-12 23:38             ` Chris Wedgwood
2003-02-12 23:49               ` Bruno Diniz de Paula
2003-02-12 23:51                 ` Chris Wedgwood
     [not found]                   ` <1045094589.4767.106.camel@urca.rutgers.edu>
     [not found]                     ` <20030213001302.GA13833@f00f.org>
2003-02-13  0:36                       ` Bruno Diniz de Paula
2003-02-13  5:12                         ` Andrew Morton
2003-02-13 15:22                           ` Bruno Diniz de Paula
2003-02-13 17:31                             ` Andrew Morton
2003-02-13 22:45                               ` Bruno Diniz de Paula
2003-02-12 23:33           ` Chris Wedgwood
2003-02-12 22:07 ` Chris Wedgwood

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20030212174637.3975e7c3.rddunlap@osdl.org \
    --to=rddunlap@osdl.org \
    --cc=diniz@cs.rutgers.edu \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®