Remove swblk_t.

It was used only to store the bounds of each swap device.  However,
since swblk_t is a signed 32-bit int and daddr_t is a signed 64-bit
int, swp_pager_isondev() may return an invalid result if swap devices
are repeatedly added and removed and sw_end for a device ends up
becoming a negative number.

Note that the removed comment about maximum swap size still applies.

Reviewed by:	jeff, kib
Tested by:	pho
MFC after:	2 weeks
Sponsored by:	The FreeBSD Foundation
Differential Revision:	https://reviews.freebsd.org/D23666
This commit is contained in:
Mark Johnston 2020-02-17 15:11:07 +00:00
parent 725b4ff001
commit 34e2051faf
3 changed files with 7 additions and 14 deletions

View File

@ -115,8 +115,7 @@ int
kvm_getswapinfo_kvm(kvm_t *kd, struct kvm_swap *swap_ary, int swap_max, kvm_getswapinfo_kvm(kvm_t *kd, struct kvm_swap *swap_ary, int swap_max,
int flags) int flags)
{ {
int i; int i, ttl;
swblk_t ttl;
TAILQ_HEAD(, swdevt) swtailq; TAILQ_HEAD(, swdevt) swtailq;
struct swdevt *sp, swinfo; struct swdevt *sp, swinfo;
struct kvm_swap tot; struct kvm_swap tot;
@ -167,8 +166,7 @@ int
kvm_getswapinfo_sysctl(kvm_t *kd, struct kvm_swap *swap_ary, int swap_max, kvm_getswapinfo_sysctl(kvm_t *kd, struct kvm_swap *swap_ary, int swap_max,
int flags) int flags)
{ {
int ti; int ti, ttl;
swblk_t ttl;
size_t mibi, len; size_t mibi, len;
int soid[SWI_MAXMIB]; int soid[SWI_MAXMIB];
struct xswdev xsd; struct xswdev xsd;

View File

@ -2334,7 +2334,7 @@ swaponsomething(struct vnode *vp, void *id, u_long nblks,
sw_strategy_t *strategy, sw_close_t *close, dev_t dev, int flags) sw_strategy_t *strategy, sw_close_t *close, dev_t dev, int flags)
{ {
struct swdevt *sp, *tsp; struct swdevt *sp, *tsp;
swblk_t dvbase; daddr_t dvbase;
u_long mblocks; u_long mblocks;
/* /*

View File

@ -38,14 +38,9 @@
*/ */
#ifndef _VM_SWAP_PAGER_H_ #ifndef _VM_SWAP_PAGER_H_
#define _VM_SWAP_PAGER_H_ 1 #define _VM_SWAP_PAGER_H_
typedef int32_t swblk_t; /* #include <sys/_types.h>
* swap offset. This is the type used to
* address the "virtual swap device" and
* therefore the maximum swap space is
* 2^32 pages.
*/
struct buf; struct buf;
struct swdevt; struct swdevt;
@ -62,8 +57,8 @@ struct swdevt {
dev_t sw_dev; dev_t sw_dev;
struct vnode *sw_vp; struct vnode *sw_vp;
void *sw_id; void *sw_id;
swblk_t sw_first; __daddr_t sw_first;
swblk_t sw_end; __daddr_t sw_end;
struct blist *sw_blist; struct blist *sw_blist;
TAILQ_ENTRY(swdevt) sw_list; TAILQ_ENTRY(swdevt) sw_list;
sw_strategy_t *sw_strategy; sw_strategy_t *sw_strategy;