HAMMER VFS - Cleanup a swapcache hammer_vop_write() case
authorMatthew Dillon <dillon@apollo.backplane.com>
Sun, 3 Apr 2011 01:55:53 +0000 (18:55 -0700)
committerMatthew Dillon <dillon@apollo.backplane.com>
Sun, 3 Apr 2011 01:55:53 +0000 (18:55 -0700)
* Mark buffers created via write() B_NOTMETA if hammer's double buffer
  mode is enabled.  When both the hammer double buffer mode and swapcache
  is enabled this will cause the system to re-read the file from disk
  once (via the block device) before attempting to swapcache it.

sys/vfs/hammer/hammer_vnops.c

index 0d2f020..df6b893 100644 (file)
@@ -3233,6 +3233,14 @@ hammer_vop_strategy_write(struct vop_strategy_args *ap)
        lwkt_gettoken(&hmp->fs_token);
 
        /*
+        * Disallow swapcache operation on the vnode buffer if double
+        * buffering is enabled, the swapcache will get the data via
+        * the block device buffer.
+        */
+       if (hammer_double_buffer)
+               bp->b_flags |= B_NOTMETA;
+
+       /*
         * Interlock with inode destruction (no in-kernel or directory
         * topology visibility).  If we queue new IO while trying to
         * destroy the inode we can deadlock the vtrunc call in