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.