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:
parent
725b4ff001
commit
34e2051faf
@ -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;
|
||||||
|
@ -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;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -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;
|
||||||
|
Loading…
Reference in New Issue
Block a user