Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 13 Jan 2002 03:58:06 -0800 (PST)
From:      Alfred Perlstein <alfred@FreeBSD.org>
To:        cvs-committers@FreeBSD.org, cvs-all@FreeBSD.org
Subject:   cvs commit: src/sys/alpha/osf1 osf1_misc.c osf1_mount.c src/sys/compat/linux linux_file.c linux_ioctl.c linux_stats.c src/sys/compat/svr4 svr4_fcntl.c svr4_filio.c svr4_ioctl.c svr4_misc.c svr4_stream.c src/sys/dev/aac aac.c ...
Message-ID:  <200201131158.g0DBw6w02449@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help
alfred      2002/01/13 03:58:06 PST

  Modified files:
    sys/alpha/osf1       osf1_misc.c osf1_mount.c 
    sys/compat/linux     linux_file.c linux_ioctl.c linux_stats.c 
    sys/compat/svr4      svr4_fcntl.c svr4_filio.c svr4_ioctl.c 
                         svr4_misc.c svr4_stream.c 
    sys/dev/aac          aac.c 
    sys/dev/streams      streams.c 
    sys/dev/tdfx         tdfx_pci.c 
    sys/fs/fdescfs       fdesc_vfsops.c fdesc_vnops.c 
    sys/fs/fifofs        fifo_vnops.c 
    sys/fs/portalfs      portal_vfsops.c portal_vnops.c 
    sys/fs/unionfs       union_subr.c union_vfsops.c 
    sys/i386/ibcs2       ibcs2_fcntl.c ibcs2_ioctl.c ibcs2_misc.c 
                         ibcs2_stat.c 
    sys/kern             init_main.c kern_acl.c kern_descrip.c 
                         kern_event.c kern_exec.c kern_fork.c 
                         sys_generic.c sys_pipe.c sys_socket.c 
                         uipc_syscalls.c uipc_usrreq.c vfs_cache.c 
                         vfs_lookup.c vfs_syscalls.c vfs_vnops.c 
    sys/netgraph         ng_socket.c 
    sys/netsmb           smb_dev.c 
    sys/sys              fcntl.h file.h filedesc.h 
    sys/ufs/ffs          ffs_alloc.c 
    sys/vm               vm_mmap.c 
  Log:
  SMP Lock struct file, filedesc and the global file list.
  
  Seigo Tanimura (tanimura) posted the initial delta.
  
  I've polished it quite a bit reducing the need for locking and
  adapting it for KSE.
  
  Locks:
  
  1 mutex in each filedesc
     protects all the fields.
     protects "struct file" initialization, while a struct file
       is being changed from &badfileops -> &pipeops or something
       the filedesc should be locked.
  
  1 mutex in each struct file
     protects the refcount fields.
     doesn't protect anything else.
     the flags used for garbage collection have been moved to
       f_gcflag which was the FILLER short, this doesn't need
       locking because the garbage collection is a single threaded
       container.
    could likely be made to use a pool mutex.
  
  1 sx lock for the global filelist.
  
  struct file *   fhold(struct file *fp);
          /* increments reference count on a file */
  
  struct file *   fhold_locked(struct file *fp);
          /* like fhold but expects file to locked */
  
  struct file *   ffind_hold(struct thread *, int fd);
          /* finds the struct file in thread, adds one reference and
                  returns it unlocked */
  
  struct file *   ffind_lock(struct thread *, int fd);
          /* ffind_hold, but returns file locked */
  
  I still have to smp-safe the fget cruft, I'll get to that asap.
  
  Revision  Changes    Path
  1.23      +3 -4      src/sys/alpha/osf1/osf1_misc.c
  1.6       +4 -2      src/sys/alpha/osf1/osf1_mount.c
  1.59      +23 -11    src/sys/compat/linux/linux_file.c
  1.80      +184 -94   src/sys/compat/linux/linux_ioctl.c
  1.39      +10 -7     src/sys/compat/linux/linux_stats.c
  1.17      +30 -11    src/sys/compat/svr4/svr4_fcntl.c
  1.11      +9 -4      src/sys/compat/svr4/svr4_filio.c
  1.10      +15 -8     src/sys/compat/svr4/svr4_ioctl.c
  1.35      +29 -10    src/sys/compat/svr4/svr4_misc.c
  1.24      +54 -25    src/sys/compat/svr4/svr4_stream.c
  1.33      +7 -2      src/sys/dev/aac/aac.c
  1.28      +22 -4     src/sys/dev/streams/streams.c
  1.16      +6 -2      src/sys/dev/tdfx/tdfx_pci.c
  1.32      +2 -0      src/sys/fs/fdescfs/fdesc_vfsops.c
  1.71      +19 -7     src/sys/fs/fdescfs/fdesc_vnops.c
  1.59      +13 -4     src/sys/fs/fifofs/fifo_vnops.c
  1.35      +3 -1      src/sys/fs/portalfs/portal_vfsops.c
  1.45      +7 -1      src/sys/fs/portalfs/portal_vnops.c
  1.57      +6 -1      src/sys/fs/unionfs/union_subr.c
  1.51      +2 -0      src/sys/fs/unionfs/union_vfsops.c
  1.18      +7 -3      src/sys/i386/ibcs2/ibcs2_fcntl.c
  1.20      +106 -59   src/sys/i386/ibcs2/ibcs2_ioctl.c
  1.39      +20 -7     src/sys/i386/ibcs2/ibcs2_misc.c
  1.13      +4 -2      src/sys/i386/ibcs2/ibcs2_stat.c
  1.181     +3 -0      src/sys/kern/init_main.c
  1.21      +4 -0      src/sys/kern/kern_acl.c
  1.114     +292 -49   src/sys/kern/kern_descrip.c
  1.35      +71 -21    src/sys/kern/kern_event.c
  1.148     +4 -1      src/sys/kern/kern_exec.c
  1.128     +9 -3      src/sys/kern/kern_fork.c
  1.84      +96 -37    src/sys/kern/sys_generic.c
  1.88      +20 -4     src/sys/kern/sys_pipe.c
  1.37      +4 -3      src/sys/kern/sys_socket.c
  1.102     +29 -7     src/sys/kern/uipc_syscalls.c
  1.79      +55 -15    src/sys/kern/uipc_usrreq.c
  1.64      +17 -0     src/sys/kern/vfs_cache.c
  1.48      +3 -1      src/sys/kern/vfs_lookup.c
  1.218     +151 -38   src/sys/kern/vfs_syscalls.c
  1.126     +1 -1      src/sys/kern/vfs_vnops.c
  1.32      +5 -4      src/sys/netgraph/ng_socket.c
  1.5       +19 -8     src/sys/netsmb/smb_dev.c
  1.12      +4 -3      src/sys/sys/fcntl.h
  1.34      +67 -38    src/sys/sys/file.h
  1.30      +28 -3     src/sys/sys/filedesc.h
  1.84      +3 -0      src/sys/ufs/ffs/ffs_alloc.c
  1.130     +9 -12     src/sys/vm/vm_mmap.c

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe cvs-all" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200201131158.g0DBw6w02449>