kernel - Remove the last MP locks from tmpfs.
authorMatthew Dillon <dillon@apollo.backplane.com>
Mon, 14 Feb 2011 21:11:30 +0000 (13:11 -0800)
committerMatthew Dillon <dillon@apollo.backplane.com>
Mon, 14 Feb 2011 21:11:30 +0000 (13:11 -0800)
* Remove get_mplock/rel_mplock calls in tmpfs which are no longer needed.
  This will improve the write path a bit though we still utilize the
  per-mount token in most places.

Reported-by: Venkatesh Srinivas <me@endeavour.zapto.org>
sys/vfs/tmpfs/tmpfs_vnops.c

index 5ae3183..eec0f34 100644 (file)
@@ -49,8 +49,6 @@
 #include <sys/vfsops.h>
 #include <sys/vnode.h>
 
-#include <sys/mplock2.h>
-
 #include <vm/vm.h>
 #include <vm/vm_object.h>
 #include <vm/vm_page.h>
@@ -550,8 +548,6 @@ tmpfs_write (struct vop_write_args *ap)
         */
        extended = ((uio->uio_offset + uio->uio_resid) > node->tn_size);
 
-       get_mplock();
-
        while (uio->uio_resid > 0) {
                /*
                 * Use buffer cache I/O (via tmpfs_strategy)
@@ -632,8 +628,6 @@ tmpfs_write (struct vop_write_args *ap)
                }
        }
 
-       rel_mplock();
-
        if (error) {
                if (extended) {
                        (void)tmpfs_reg_resize(vp, oldsize, trivial);
@@ -1574,9 +1568,7 @@ filt_tmpfsread(struct knote *kn, long hint)
         * Handle possible MP race interlock on filter check/write
         */
        if (kn->kn_data == 0) {
-               get_mplock();
                kn->kn_data = (off < INTPTR_MAX) ? off : INTPTR_MAX;
-               rel_mplock();
        }
        return (kn->kn_data != 0);
 }