From: Joel Becker <Joel.Becker@oracle.com>
To: Rob van Nieuwkerk <robn@verdi.et.tudelft.nl>
Cc: linux-kernel@vger.kernel.org
Subject: Re: O_DIRECT alignment requirements ?
Date: Wed, 9 Apr 2003 08:48:36 -0700 [thread overview]
Message-ID: <20030409154836.GA31739@ca-server1.us.oracle.com> (raw)
In-Reply-To: <20030409141608.A12136@verdi.et.tudelft.nl>
On Wed, Apr 09, 2003 at 02:16:08PM +0200, Rob van Nieuwkerk wrote:
> I plan to use O_DIRECT in my application (on a partition, no fs).
> It is hard to find info on the exact requirements on the mandatory
> alignments of buffer, offset, transfer size: it's easy to find many
> contradicting documents. And checking the kernel source itself isn't
> trivial.
In 2.4, your buffer, offset, and transfer size must be soft
blocksize aligned. That's the output of BLKBSZGET against the block
device. For unmounted partitions that is 512b, for most people's ext3
filesystems that is 4K. It is, FYI, the number set by set_blocksize().
In 2.5, the alignment restrictions have been relaxed. Your
offset, buffer, and transfer size must all be aligned on the hardware
sector size. That is the output of BLKSSZGET against the block device,
and is also what get_hardsect_size() returns in the kernel. For almost
all disks this number is 512b, so you can do O_DIRECT on 512b alignment
for a raw disk or for an ext3 filesystem. About the only thing that
may not have a 512b hardware sector size is a CD-ROM.
Joel
--
"Hey mister if you're gonna walk on water,
Could you drop a line my way?"
Joel Becker
Senior Member of Technical Staff
Oracle Corporation
E-mail: joel.becker@oracle.com
Phone: (650) 506-8127
next prev parent reply other threads:[~2003-04-09 15:37 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-04-09 12:16 O_DIRECT alignment requirements ? Rob van Nieuwkerk
2003-04-09 15:48 ` Joel Becker [this message]
2003-04-09 16:53 ` Rob van Nieuwkerk
2003-04-09 17:59 ` Joel Becker
2003-04-09 19:15 ` Andrew Morton
2003-04-09 21:09 ` Rob van Nieuwkerk
2003-04-09 23:27 ` Joel Becker
2003-04-10 16:33 ` Rob van Nieuwkerk
2003-04-09 18:08 ` Benjamin LaHaise
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=20030409154836.GA31739@ca-server1.us.oracle.com \
--to=joel.becker@oracle.com \
--cc=linux-kernel@vger.kernel.org \
--cc=robn@verdi.et.tudelft.nl \
/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