]> git.openfabrics.org - ~shefty/rdma-dev.git/commitdiff
Merge branch 'bugfixes' of git://git.linux-nfs.org/projects/trondmy/nfs-2.6
authorLinus Torvalds <torvalds@linux-foundation.org>
Tue, 14 Dec 2010 16:51:12 +0000 (08:51 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Tue, 14 Dec 2010 16:51:12 +0000 (08:51 -0800)
* 'bugfixes' of git://git.linux-nfs.org/projects/trondmy/nfs-2.6:
  NFS: Fix panic after nfs_umount()
  nfs: remove extraneous and problematic calls to nfs_clear_request
  nfs: kernel should return EPROTONOSUPPORT when not support NFSv4
  NFS: Fix fcntl F_GETLK not reporting some conflicts
  nfs: Discard ACL cache on mode update
  NFS: Readdir cleanups
  NFS: nfs_readdir_search_for_cookie() don't mark as eof if cookie not found
  NFS: Fix a memory leak in nfs_readdir
  Call the filesystem back whenever a page is removed from the page cache
  NFS: Ensure we use the correct cookie in nfs_readdir_xdr_filler

1  2 
Documentation/filesystems/vfs.txt

index 55c28b79d8dce3afcb239f45cc1cc62c44685d3c,3b14a557eca6bc02fc8213281bc0cc2b0c23d6f4..20899e095e7e6879580b53aa9aa0282fb4b5ce63
@@@ -534,6 -534,7 +534,7 @@@ struct address_space_operations 
        sector_t (*bmap)(struct address_space *, sector_t);
        int (*invalidatepage) (struct page *, unsigned long);
        int (*releasepage) (struct page *, int);
+       void (*freepage)(struct page *);
        ssize_t (*direct_IO)(int, struct kiocb *, const struct iovec *iov,
                        loff_t offset, unsigned long nr_segs);
        struct page* (*get_xip_page)(struct address_space *, sector_t,
    releasepage: releasepage is called on PagePrivate pages to indicate
          that the page should be freed if possible.  ->releasepage
          should remove any private data from the page and clear the
 -        PagePrivate flag.  It may also remove the page from the
 -        address_space.  If this fails for some reason, it may indicate
 -        failure with a 0 return value.
 -      This is used in two distinct though related cases.  The first
 -        is when the VM finds a clean page with no active users and
 +        PagePrivate flag. If releasepage() fails for some reason, it must
 +      indicate failure with a 0 return value.
 +      releasepage() is used in two distinct though related cases.  The
 +      first is when the VM finds a clean page with no active users and
          wants to make it a free page.  If ->releasepage succeeds, the
          page will be removed from the address_space and become free.
  
          need to ensure this.  Possibly it can clear the PageUptodate
          bit if it cannot free private data yet.
  
+   freepage: freepage is called once the page is no longer visible in
+         the page cache in order to allow the cleanup of any private
+       data. Since it may be called by the memory reclaimer, it
+       should not assume that the original address_space mapping still
+       exists, and it should not block.
    direct_IO: called by the generic read/write routines to perform
          direct_IO - that is IO requests which bypass the page cache
          and transfer data directly between the storage and the