On Fri, Jun 01, 2012 at 04:42:52AM +0000, Eitan Adler wrote:
> Author: eadler
> Date: Fri Jun  1 04:42:52 2012
> New Revision: 236380
> URL: http://svn.freebsd.org/changeset/base/236380
> 
> Log:
>   Add sysctl to query amount of swap space free
>   
>   PR:         kern/166780
>   Submitted by:       Radim Kolar <h...@sendmail.cz>
>   Approved by:        cperciva
>   MFC after:  1 week
> 
> Modified:
>   head/sys/vm/swap_pager.c
The commit messages lack any rationale for the change.

The rationale specified in the PR is wrong, there _is_ the sysctl
interface to read the swap use, vm.swap_info.N. It is used by e.g.
swapinfo(8)/libkvm(3) on live system.

> 
> Modified: head/sys/vm/swap_pager.c
> ==============================================================================
> --- head/sys/vm/swap_pager.c  Fri Jun  1 04:34:49 2012        (r236379)
> +++ head/sys/vm/swap_pager.c  Fri Jun  1 04:42:52 2012        (r236380)
> @@ -2692,3 +2692,18 @@ swaponvp(struct thread *td, struct vnode
>           NODEV);
>       return (0);
>  }
> +
> +static int
> +sysctl_vm_swap_free(SYSCTL_HANDLER_ARGS) {
> +     int swap_free, used;
> +     int total;
> +
> +     swap_pager_status(&total, &used);
> +
> +     swap_free = (total - used) * PAGE_SIZE;
> +     return SYSCTL_OUT(req, &swap_free, sizeof(swap_free));
> +}
This just overflows at swap sizes greater then 2GB.

> +
> +SYSCTL_OID(_vm, OID_AUTO, swap_free, CTLTYPE_INT|CTLFLAG_RD|CTLFLAG_MPSAFE,
> +             NULL, 0, sysctl_vm_swap_free, "Q",
> +             "Blocks of free swap storage.");

Please revert the commit.

Attachment: pgptg3nKDADR4.pgp
Description: PGP signature

Reply via email to