ext2: buffer_head usage with and without O_DIRECT

From: li nux
Date: Sun Jul 24 2005 - 08:18:02 EST


This is with respect to 2.4.28 on
http://lxr.linux.no/source/?v=2.4.18

When i do read/write on ext2 without opening files
with O_DIRECT, i can see buffer_head constantly
increasing in /proc/slabinfo.

But when I open files with O_DIRECT, the i/o is done
without using buffer_head, /proc/slabinfo shows this
as constant throughout the i/o.
There is no other i/o activity on the box.

Stacks below show that both of them creates
buffer_head's. Any idea why this is happening ?

As per the code, Without O_DIRECT, stack is:
(See fs/buffer.c)
submit_bh_rsector
submit_bh
block_read_full_page (This calls create_buffers to
create buffer_head's)
ext2_readpage
do_generic_file_read
generic_file_new_read
generic_file_read

With O_DIRECT:
brw_kiovec (This creates buffer_head's)
generic_direct_sector_IO (cals
prepare_direct_IO_iobuf)
ext2_direct_IO
generic_file_direct_IO
generic_file_new_read
generic_file_read

-Thanks.



____________________________________________________
Start your day with Yahoo! - make it your home page
http://www.yahoo.com/r/hs

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/