| 1690 | #endif |
| 1691 | |
| 1692 | int |
| 1693 | vfs_mount_fetch_counter(struct mount *mp, enum mount_counter which) |
| 1694 | { |
| 1695 | struct mount_pcpu *mpcpu; |
| 1696 | int cpu, sum; |
| 1697 | |
| 1698 | switch (which) { |
| 1699 | case MNT_COUNT_REF: |
| 1700 | sum = mp->mnt_ref; |
| 1701 | break; |
| 1702 | case MNT_COUNT_LOCKREF: |
| 1703 | sum = mp->mnt_lockref; |
| 1704 | break; |
| 1705 | case MNT_COUNT_WRITEOPCOUNT: |
| 1706 | sum = mp->mnt_writeopcount; |
| 1707 | break; |
| 1708 | } |
| 1709 | |
| 1710 | CPU_FOREACH(cpu) { |
| 1711 | mpcpu = vfs_mount_pcpu_remote(mp, cpu); |
| 1712 | switch (which) { |
| 1713 | case MNT_COUNT_REF: |
| 1714 | sum += mpcpu->mntp_ref; |
| 1715 | break; |
| 1716 | case MNT_COUNT_LOCKREF: |
| 1717 | sum += mpcpu->mntp_lockref; |
| 1718 | break; |
| 1719 | case MNT_COUNT_WRITEOPCOUNT: |
| 1720 | sum += mpcpu->mntp_writeopcount; |
| 1721 | break; |
| 1722 | } |
| 1723 | } |
| 1724 | return (sum); |
| 1725 | } |
| 1726 | |
| 1727 | /* |
| 1728 | * Do the actual filesystem unmount. |