[PATCH 00/13] [RFC] orangefs page cache

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



OrangeFS has not used the page cache in the past.  This is a work in
progress patch to support it.  It does not yet make any attempt to do
writeback in a reasonable timeframe considering that OrangeFS is a
distributed filesystem.

What's done:

Inodes are written through write_back: getattrs and setattrs are not
necessarily sent to the server.

Pages are read from and written to the cache on readpage and writepage
and direct_IO works.  Some consolidation of code handling the different
read cases allow this diff to decrease code size.

Future work:

The old getattr cache will need to be changed significantly.  It
specifies a timeout which should be used by the new code.  Though the
old getattr cache gave quite a performance boost, it's cached data would
be destroyed on drop_inode.

Really the only way to do a getattr is during orangefs_iget.  Pages are
only read into the cache once.  Using this code with multiple clients
will not work at all.  Ultimately we will need to do writeback much
faster than at present and know when to fill requests from the cache and
when to require a server request.

The good news is that operating under such a delay found several race
conditions in our code which had not been detected because we always did
a server request in the past.

Does this look like a reasonable start?

Martin Brandenburg (13):
  orangefs: move orangefs_address_operations to file.c
  orangefs: remove orangefs_readpages
  orangefs: make orangefs_inode_read static
  orangefs: only set a_ops for regular files
  orangefs: BUG_ON if i_mode invalid
  orangefs: remove mapping_nrpages macro
  orangefs: set up and use backing_dev_info
  orangefs: initialize new inode size to zero
  orangefs: inodes linger in cache
  orangefs: implement direct_IO for the read case
  orangefs: lock inode during fsync
  orangefs: call generic_file_read_iter
  orangefs: implement write through the page cache

 fs/orangefs/file.c            | 232 ++++++++++++++++++++++++--------------
 fs/orangefs/inode.c           | 252 +++++-------------------------------------
 fs/orangefs/namei.c           |  13 ++-
 fs/orangefs/orangefs-kernel.h |   8 +-
 fs/orangefs/orangefs-utils.c  |   7 ++
 fs/orangefs/super.c           |  54 +++++++--
 fs/orangefs/symlink.c         |   1 -
 7 files changed, 242 insertions(+), 325 deletions(-)

-- 
2.1.4




[Index of Archives]     [Linux Ext4 Filesystem]     [Union Filesystem]     [Filesystem Testing]     [Ceph Users]     [Ecryptfs]     [AutoFS]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux Cachefs]     [Reiser Filesystem]     [Linux RAID]     [Samba]     [Device Mapper]     [CEPH Development]
  Powered by Linux