Print this page
5045 use atomic_{inc,dec}_* instead of atomic_add_*

Split Close
Expand all
Collapse all
          --- old/usr/src/uts/common/fs/ufs/ufs_filio.c
          +++ new/usr/src/uts/common/fs/ufs/ufs_filio.c
↓ open down ↓ 336 lines elided ↑ open up ↑
 337  337          ufsvfsp = ip->i_ufsvfs;
 338  338          ulp = &ufsvfsp->vfs_ulockfs;
 339  339  
 340  340          /* logging file system; dio ignored */
 341  341          if (TRANS_ISTRANS(ufsvfsp))
 342  342                  return (error);
 343  343  
 344  344          /* hold the mutex to prevent race with a lockfs request */
 345  345          vfs_lock_wait(vp->v_vfsp);
 346  346          mutex_enter(&ulp->ul_lock);
 347      -        atomic_add_long(&ufs_quiesce_pend, 1);
      347 +        atomic_inc_ulong(&ufs_quiesce_pend);
 348  348  
 349  349          if (ULOCKFS_IS_HLOCK(ulp)) {
 350  350                  error = EIO;
 351  351                  goto out;
 352  352          }
 353  353  
 354  354          if (ULOCKFS_IS_ELOCK(ulp)) {
 355  355                  error = EBUSY;
 356  356                  goto out;
 357  357          }
↓ open down ↓ 23 lines elided ↑ open up ↑
 381  381                  else
 382  382                          fs->fs_clean = FSACTIVE;
 383  383                  ufs_sbwrite(ufsvfsp);
 384  384                  mutex_exit(&ufsvfsp->vfs_lock);
 385  385          } else
 386  386                  mutex_exit(&ufsvfsp->vfs_lock);
 387  387  out:
 388  388          /*
 389  389           * we need this broadcast because of the ufs_quiesce call above
 390  390           */
 391      -        atomic_add_long(&ufs_quiesce_pend, -1);
      391 +        atomic_dec_ulong(&ufs_quiesce_pend);
 392  392          cv_broadcast(&ulp->ul_cv);
 393  393          mutex_exit(&ulp->ul_lock);
 394  394          vfs_unlock(vp->v_vfsp);
 395  395          return (error);
 396  396  }
 397  397  
 398  398  /*
 399  399   * ufs_fioffs - ioctl handler for flushing file system
 400  400   */
 401  401  /* ARGSUSED */
↓ open down ↓ 16 lines elided ↑ open up ↑
 418  418  
 419  419          /*
 420  420           * suspend the delete thread
 421  421           *      this must be done outside the lockfs locking protocol
 422  422           */
 423  423          vfs_lock_wait(vp->v_vfsp);
 424  424          ufs_thread_suspend(&ufsvfsp->vfs_delete);
 425  425  
 426  426          /* hold the mutex to prevent race with a lockfs request */
 427  427          mutex_enter(&ulp->ul_lock);
 428      -        atomic_add_long(&ufs_quiesce_pend, 1);
      428 +        atomic_inc_ulong(&ufs_quiesce_pend);
 429  429  
 430  430          if (ULOCKFS_IS_HLOCK(ulp)) {
 431  431                  error = EIO;
 432  432                  goto out;
 433  433          }
 434  434          if (ULOCKFS_IS_ELOCK(ulp)) {
 435  435                  error = EBUSY;
 436  436                  goto out;
 437  437          }
 438  438          /* wait for outstanding accesses to finish */
↓ open down ↓ 40 lines elided ↑ open up ↑
 479  479                                          }
 480  480                                  }
 481  481                          }
 482  482                  }
 483  483          }
 484  484  
 485  485          /* synchronously flush dirty data and metadata */
 486  486          error = ufs_flush(vp->v_vfsp);
 487  487  
 488  488  out:
 489      -        atomic_add_long(&ufs_quiesce_pend, -1);
      489 +        atomic_dec_ulong(&ufs_quiesce_pend);
 490  490          cv_broadcast(&ulp->ul_cv);
 491  491          mutex_exit(&ulp->ul_lock);
 492  492          vfs_unlock(vp->v_vfsp);
 493  493  
 494  494          /*
 495  495           * allow the delete thread to continue
 496  496           */
 497  497          ufs_thread_continue(&ufsvfsp->vfs_delete);
 498  498          return (error);
 499  499  }
↓ open down ↓ 213 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX