From nobody@FreeBSD.org  Mon Apr  9 06:26:28 2012
Return-Path: <nobody@FreeBSD.org>
Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52])
	by hub.freebsd.org (Postfix) with ESMTP id 22EC8106566C
	for <freebsd-gnats-submit@FreeBSD.org>; Mon,  9 Apr 2012 06:26:28 +0000 (UTC)
	(envelope-from nobody@FreeBSD.org)
Received: from red.freebsd.org (red.freebsd.org [IPv6:2001:4f8:fff6::22])
	by mx1.freebsd.org (Postfix) with ESMTP id 0F2318FC12
	for <freebsd-gnats-submit@FreeBSD.org>; Mon,  9 Apr 2012 06:26:28 +0000 (UTC)
Received: from red.freebsd.org (localhost [127.0.0.1])
	by red.freebsd.org (8.14.4/8.14.4) with ESMTP id q396QRVK008426
	for <freebsd-gnats-submit@FreeBSD.org>; Mon, 9 Apr 2012 06:26:27 GMT
	(envelope-from nobody@red.freebsd.org)
Received: (from nobody@localhost)
	by red.freebsd.org (8.14.4/8.14.4/Submit) id q396QRF4008425;
	Mon, 9 Apr 2012 06:26:27 GMT
	(envelope-from nobody)
Message-Id: <201204090626.q396QRF4008425@red.freebsd.org>
Date: Mon, 9 Apr 2012 06:26:27 GMT
From: Radim Kolar <hsn@sendmail.cz>
To: freebsd-gnats-submit@FreeBSD.org
Subject: add sysctl for swap space used
X-Send-Pr-Version: www-3.1
X-GNATS-Notify:

>Number:         166780
>Category:       kern
>Synopsis:       [sysctl] [request] add sysctl for swap space used
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Mon Apr 09 06:30:15 UTC 2012
>Closed-Date:    
>Last-Modified:  Thu Nov 08 20:54:41 UTC 2012
>Originator:     Radim Kolar
>Release:        8.2
>Organization:
FILEZ.com
>Environment:
>Description:
currently its impossible to query swap space used or available via sysctl and it must be done via kvm calls which are inaccessible for languages like Java.

currently sysctl returns only this.
vm.swap_reserved: 768651264  <-- free space on disk holding swapfile
vm.swap_total: 629145600     <-- swapfile total size

i propose to add variable like

vm.swap_count:  <-- how many of vm.swap_total are currently in use

proposed sysctl name is similar to vm.stats.vm.v_* names.
>How-To-Repeat:

>Fix:


>Release-Note:
>Audit-Trail:
State-Changed-From-To: open->suspended 
State-Changed-By: linimon 
State-Changed-When: Thu Apr 26 02:45:13 UTC 2012 
State-Changed-Why:  
awaiting someone to make a patch. 

http://www.freebsd.org/cgi/query-pr.cgi?pr=166780 

From: Radim Kolar <hsn@filez.com>
To: bug-followup@FreeBSD.org
Cc:  
Subject: Re: kern/166780: patch for 10.X
Date: Thu, 26 Apr 2012 17:46:17 +0200

 Index: sys/vm/swap_pager.c
 ===================================================================
 --- sys/vm/swap_pager.c (revision 234696)
 +++ sys/vm/swap_pager.c (working copy)
 @@ -2692,3 +2692,20 @@
              NODEV);
          return (0);
   }
 +
 +
 +static int
 +sysctl_vm_swap_free(SYSCTL_HANDLER_ARGS) {
 +     int64_t swap_free = 0;
 +     struct swdevt *sp;
 +
 +     mtx_lock(&sw_dev_mtx);
 +     TAILQ_FOREACH(sp, &swtailq, sw_list) {
 +       swap_free += sp->sw_nblks - sp->sw_used;
 +     }
 +     mtx_unlock(&sw_dev_mtx);
 +     swap_free *= PAGE_SIZE;
 +     return SYSCTL_OUT(req, &swap_free, sizeof(swap_free));
 +}
 +SYSCTL_OID(_vm, OID_AUTO, swap_free, CTLTYPE_S64|CTLFLAG_RD|CTLFLAG_MPSAFE,
 +          NULL, 0, sysctl_vm_swap_free, "Q", "Amount of free swap 
 storage.");
 
Responsible-Changed-From-To: freebsd-bugs->eadler 
Responsible-Changed-By: eadler 
Responsible-Changed-When: Thu Apr 26 19:10:40 UTC 2012 
Responsible-Changed-Why:  
I'll take it. 

http://www.freebsd.org/cgi/query-pr.cgi?pr=166780 
State-Changed-From-To: suspended->open 
State-Changed-By: eadler 
State-Changed-When: Thu Apr 26 19:11:07 UTC 2012 
State-Changed-Why:  
Submitter provided requested information 

http://www.freebsd.org/cgi/query-pr.cgi?pr=166780 
State-Changed-From-To: open->analyzed 
State-Changed-By: eadler 
State-Changed-When: Tue May 15 04:28:38 UTC 2012 
State-Changed-Why:  
awaiting approval 

http://www.freebsd.org/cgi/query-pr.cgi?pr=166780 

From: dfilter@FreeBSD.ORG (dfilter service)
To: bug-followup@FreeBSD.org
Cc:  
Subject: Re: kern/166780: commit references a PR
Date: Fri,  1 Jun 2012 04:43:06 +0000 (UTC)

 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 <hsn@sendmail.cz>
   Approved by:	cperciva
   MFC after:	1 week
 
 Modified:
   head/sys/vm/swap_pager.c
 
 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));
 +}
 +
 +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.");
 _______________________________________________
 svn-src-all@freebsd.org mailing list
 http://lists.freebsd.org/mailman/listinfo/svn-src-all
 To unsubscribe, send any mail to "svn-src-all-unsubscribe@freebsd.org"
 
State-Changed-From-To: analyzed->patched 
State-Changed-By: eadler 
State-Changed-When: Fri Jun 1 07:03:40 UTC 2012 
State-Changed-Why:  
committed in r236380 

http://www.freebsd.org/cgi/query-pr.cgi?pr=166780 

From: dfilter@FreeBSD.ORG (dfilter service)
To: bug-followup@FreeBSD.org
Cc:  
Subject: Re: kern/166780: commit references a PR
Date: Fri,  1 Jun 2012 18:58:59 +0000 (UTC)

 Author: eadler
 Date: Fri Jun  1 18:58:50 2012
 New Revision: 236417
 URL: http://svn.freebsd.org/changeset/base/236417
 
 Log:
   Revert r236380
   
   PR:		kern/166780
   Requested by:	many
   Approved by:	cperciva (implicit)
 
 Modified:
   head/sys/vm/swap_pager.c
 
 Modified: head/sys/vm/swap_pager.c
 ==============================================================================
 --- head/sys/vm/swap_pager.c	Fri Jun  1 18:57:57 2012	(r236416)
 +++ head/sys/vm/swap_pager.c	Fri Jun  1 18:58:50 2012	(r236417)
 @@ -2692,18 +2692,3 @@ 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));
 -}
 -
 -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.");
 _______________________________________________
 svn-src-all@freebsd.org mailing list
 http://lists.freebsd.org/mailman/listinfo/svn-src-all
 To unsubscribe, send any mail to "svn-src-all-unsubscribe@freebsd.org"
 
State-Changed-From-To: patched->open 
State-Changed-By: eadler 
State-Changed-When: Fri Jun 22 07:03:29 UTC 2012 
State-Changed-Why:  
backed out 

http://www.freebsd.org/cgi/query-pr.cgi?pr=166780 
Responsible-Changed-From-To: eadler->freebsd-bugs 
Responsible-Changed-By: eadler 
Responsible-Changed-When: Thu Nov 8 20:54:41 UTC 2012 
Responsible-Changed-Why:  
I won't be dealing with this PR for some time, so give it back to the 
pool 

http://www.freebsd.org/cgi/query-pr.cgi?pr=166780 
>Unformatted:
