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_vfsops.c
          +++ new/usr/src/uts/common/fs/ufs/ufs_vfsops.c
↓ open down ↓ 591 lines elided ↑ open up ↑
 592  592                  return (ENOTSUP);
 593  593  
 594  594          /* whoops, wrong dev */
 595  595          if (vfsp->vfs_dev != dev)
 596  596                  return (EINVAL);
 597  597  
 598  598          /*
 599  599           * synchronize w/ufs ioctls
 600  600           */
 601  601          mutex_enter(&ulp->ul_lock);
 602      -        atomic_add_long(&ufs_quiesce_pend, 1);
      602 +        atomic_inc_ulong(&ufs_quiesce_pend);
 603  603  
 604  604          /*
 605  605           * reset options
 606  606           */
 607  607          ufsvfsp->vfs_nointr  = flags & UFSMNT_NOINTR;
 608  608          ufsvfsp->vfs_syncdir = flags & UFSMNT_SYNCDIR;
 609  609          ufsvfsp->vfs_nosetsec = flags & UFSMNT_NOSETSEC;
 610  610          ufsvfsp->vfs_noatime = flags & UFSMNT_NOATIME;
 611  611          if ((flags & UFSMNT_NODFRATIME) || ufsvfsp->vfs_noatime)
 612  612                  ufsvfsp->vfs_dfritime &= ~UFS_DFRATIME;
↓ open down ↓ 125 lines elided ↑ open up ↑
 738  738                  ufsvfsp->vfs_dio = 0;
 739  739          } else
 740  740                  if (ufsvfsp->vfs_dio)
 741  741                          fsp->fs_clean = FSSUSPEND;
 742  742  
 743  743          TRANS_MATA_MOUNT(ufsvfsp);
 744  744  
 745  745          fsp->fs_fmod = 0;
 746  746          fsp->fs_ronly = 0;
 747  747  
 748      -        atomic_add_long(&ufs_quiesce_pend, -1);
      748 +        atomic_dec_ulong(&ufs_quiesce_pend);
 749  749          cv_broadcast(&ulp->ul_cv);
 750  750          mutex_exit(&ulp->ul_lock);
 751  751  
 752  752          if (TRANS_ISTRANS(ufsvfsp)) {
 753  753  
 754  754                  /*
 755  755                   * start the delete thread
 756  756                   */
 757  757                  ufs_thread_start(&ufsvfsp->vfs_delete, ufs_thread_delete, vfsp);
 758  758  
↓ open down ↓ 8 lines elided ↑ open up ↑
 767  767                  }
 768  768          }
 769  769  
 770  770          TRANS_SBWRITE(ufsvfsp, TOP_MOUNT);
 771  771  
 772  772          return (0);
 773  773  
 774  774  remounterr:
 775  775          if (tpt)
 776  776                  brelse(tpt);
 777      -        atomic_add_long(&ufs_quiesce_pend, -1);
      777 +        atomic_dec_ulong(&ufs_quiesce_pend);
 778  778          cv_broadcast(&ulp->ul_cv);
 779  779          mutex_exit(&ulp->ul_lock);
 780  780          return (error);
 781  781  }
 782  782  
 783  783  /*
 784  784   * If the device maxtransfer size is not available, we use ufs_maxmaxphys
 785  785   * along with the system value for maxphys to determine the value for
 786  786   * maxtransfer.
 787  787   */
↓ open down ↓ 626 lines elided ↑ open up ↑
1414 1414                  vfsp->vfs_flag |= VFS_UNMOUNTED;
1415 1415  
1416 1416                  ufs_thread_suspend(&ufsvfsp->vfs_delete);
1417 1417                  mutex_enter(&ulp->ul_lock);
1418 1418                  /*
1419 1419                   * If file system is already hard locked,
1420 1420                   * unmount the file system, otherwise
1421 1421                   * hard lock it before unmounting.
1422 1422                   */
1423 1423                  if (!ULOCKFS_IS_HLOCK(ulp)) {
1424      -                        atomic_add_long(&ufs_quiesce_pend, 1);
     1424 +                        atomic_inc_ulong(&ufs_quiesce_pend);
1425 1425                          lockfs.lf_lock = LOCKFS_HLOCK;
1426 1426                          lockfs.lf_flags = 0;
1427 1427                          lockfs.lf_key = ulp->ul_lockfs.lf_key + 1;
1428 1428                          lockfs.lf_comlen = 0;
1429 1429                          lockfs.lf_comment = NULL;
1430 1430                          ufs_freeze(ulp, &lockfs);
1431 1431                          ULOCKFS_SET_BUSY(ulp);
1432 1432                          LOCKFS_SET_BUSY(&ulp->ul_lockfs);
1433 1433                          (void) ufs_quiesce(ulp);
1434 1434                          (void) ufs_flush(vfsp);
1435 1435                          (void) ufs_thaw(vfsp, ufsvfsp, ulp);
1436      -                        atomic_add_long(&ufs_quiesce_pend, -1);
     1436 +                        atomic_dec_ulong(&ufs_quiesce_pend);
1437 1437                          ULOCKFS_CLR_BUSY(ulp);
1438 1438                          LOCKFS_CLR_BUSY(&ulp->ul_lockfs);
1439 1439                          poll_events |= POLLERR;
1440 1440                          pollwakeup(&ufs_pollhd, poll_events);
1441 1441                  }
1442 1442                  ufs_thread_continue(&ufsvfsp->vfs_delete);
1443 1443                  mutex_exit(&ulp->ul_lock);
1444 1444          }
1445 1445  
1446 1446          /* let all types of writes go through */
↓ open down ↓ 699 lines elided ↑ open up ↑
2146 2146          }
2147 2147  
2148 2148          if (vfs_lock(vfsp) != 0) {
2149 2149                  return (EBUSY);
2150 2150          }
2151 2151  
2152 2152          ufsvfsp = (struct ufsvfs *)vfsp->vfs_data;
2153 2153          ulp = &ufsvfsp->vfs_ulockfs;
2154 2154  
2155 2155          mutex_enter(&ulp->ul_lock);
2156      -        atomic_add_long(&ufs_quiesce_pend, 1);
     2156 +        atomic_inc_ulong(&ufs_quiesce_pend);
2157 2157  
2158 2158          (void) ufs_quiesce(ulp);
2159 2159          (void) ufs_flush(vfsp);
2160 2160  
2161 2161          /*
2162 2162           * Convert root vfs to new dev_t, including vfs hash
2163 2163           * table and fs id.
2164 2164           */
2165 2165          vfs_root_redev(vfsp, new_rootdev, ufsfstype);
2166 2166  
↓ open down ↓ 104 lines elided ↑ open up ↑
2271 2271                                      "Error writing SuperBlock %d",
2272 2272                                      refstr_value(mntpt), error);
2273 2273                                  refstr_rele(mntpt);
2274 2274                          }
2275 2275                  }
2276 2276          }
2277 2277  
2278 2278          rootdev = new_rootdev;
2279 2279          rootvp = new_rootvp;
2280 2280  
2281      -        atomic_add_long(&ufs_quiesce_pend, -1);
     2281 +        atomic_dec_ulong(&ufs_quiesce_pend);
2282 2282          cv_broadcast(&ulp->ul_cv);
2283 2283          mutex_exit(&ulp->ul_lock);
2284 2284  
2285 2285          vfs_unlock(vfsp);
2286 2286  
2287 2287          error = VOP_CLOSE(old_rootvp, FREAD, 1, (offset_t)0, CRED(), NULL);
2288 2288          if (error) {
2289 2289                  cmn_err(CE_CONT,
2290 2290                      "close of root device component failed, error %d\n",
2291 2291                      error);
2292 2292          }
2293 2293          VN_RELE(old_rootvp);
2294 2294  
2295 2295          return (sberror ? sberror : error);
2296 2296  }
2297 2297  
2298 2298  #endif  /* __sparc */
    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX