[Top] [All Lists]

Re: Linux page cache doubt

To: Steve Lord <lord@xxxxxxx>
Subject: Re: Linux page cache doubt
From: Zhihui Zhang <bf20761@xxxxxxxxxxxxxx>
Date: Thu, 25 Oct 2001 11:41:39 -0400 (EDT)
Cc: Arun Ramakrishnan <ramakria@xxxxxxxxxxxxxxxxxx>, linux-xfs@xxxxxxxxxxx
In-reply-to: <200110242236.f9OMagj06647@xxxxxxxxxxxxxxxxxxxx>
Sender: owner-linux-xfs@xxxxxxxxxxx
On Wed, 24 Oct 2001, Steve Lord wrote:

> > Hi All,
> >     I recently read that all fs codes actually do I/O to and from the 
> > pagecache and then the dirty pages are synced to the disk later using 
> > the bdflush daemon.This approach has some performance problems when I/O 
> > is done thru write calls rather than mmap.    I was just curious whether 
> > this path was modified when XFS was written ( ie how cud such a approach 
> > even work in case of  jounalled file system when log operations are 
> > needed bfore the data gets written out).
> > I am kinda newbie into kernel hacking and so i am sorry if my question 
> > sounds dumb.
> Hi Arun, well filesystem I/O is divided into two chunks - file data
> which is definitely page cache based, and metadata which is done through
> various means depending on:
>       o which kernel you are running
>       o which filesystem
> All filesystems that I am aware of except for XFS use buffer heads and the
> block cache for metadata I/O. bdflush is responsible for flushing the data
> unless the filesystem makes explicit requests. XFS does its own thing
> using pagebufs because we came from a totally different buffer cache
> architecture, and because we got a little ambitous with our implementation.
> XFS needs to lock variable sized objects, everyone else uses fixed sizes
> for the most part. XFS also wants some other behaviors from its buffer
> cache. This is where pagebuf came from.

Does this have anything to do with the fact that Linux's buffers are fixed
sized? In BSD, the buffers can be of variable sizes. I guess if Linux's
buffers could be of variable sizes, there would be no need to use pagebuf
stuff.  Please correct me if I am wrong.  Thanks.


<Prev in Thread] Current Thread [Next in Thread>