Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 25 Mar 2008 11:01:52 -0700
From:      Alfred Perlstein <alfred@freebsd.org>
To:        Ruslan Ermilov <ru@FreeBSD.org>
Cc:        cvs-src@FreeBSD.org, src-committers@FreeBSD.org, cvs-all@FreeBSD.org
Subject:   Re: cvs commit: src/sys/dev/en midway.c src/sys/dev/fatm if_fatm.c src/sys/dev/firewire if_fwe.c if_fwip.c src/sys/dev/iscsi/initiator isc_soc.c src/sys/kern subr_mchain.c uipc_mbuf.c uipc_socket.c uipc_syscalls.c src/sys/net bpf.c ...
Message-ID:  <20080325180152.GB67856@elvis.mu.org>
In-Reply-To: <200803250939.m2P9d3RC028128@repoman.freebsd.org>
References:  <200803250939.m2P9d3RC028128@repoman.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
I don't think this was thought out enough, there are times when you
would want to limit the total memory allocated to mbufs and avoid
deadlocks in low memory situations.

Even the old allocator could have been trivially modified to block
forever upon exhaustion of the mbuf arena.

The reason why the old allocator was not "fixed" to block forever
was to allow for recovery from low memory deadlocks.

A lot of work went into making the system safe in the face of these
deadlocks and removing it "to clean up" due to a deficiency with
the current allocator and without understanding why it was there
in the first place is a mistake.

This whole thing needs to be backed out.

-Alfred

* Ruslan Ermilov <ru@FreeBSD.org> [080325 02:39] wrote:
> ru          2008-03-25 09:39:02 UTC
> 
>   FreeBSD src repository
> 
>   Modified files:
>     sys/dev/en           midway.c 
>     sys/dev/fatm         if_fatm.c 
>     sys/dev/firewire     if_fwe.c if_fwip.c 
>     sys/dev/iscsi/initiator isc_soc.c 
>     sys/kern             subr_mchain.c uipc_mbuf.c uipc_socket.c 
>                          uipc_syscalls.c 
>     sys/net              bpf.c if_ef.c if_fddisubr.c 
>                          if_iso88025subr.c if_sl.c raw_cb.c 
>     sys/netatalk         aarp.c 
>     sys/netatm           port.h 
>     sys/netinet          ip_output.c 
>     sys/netinet6         ip6_output.c 
>     sys/netncp           ncp_sock.c 
>     sys/netsmb           smb_iod.c smb_rq.c smb_trantcp.c 
>     sys/nfs              nfs_common.c 
>     sys/nfsclient        krpc_subr.c nfs_socket.c nfs_subs.c 
>     sys/nfsserver        nfs_serv.c nfs_srvcache.c nfs_srvsock.c 
>                          nfs_srvsubs.c nfs_syscalls.c 
>     sys/pci              if_mn.c 
>     sys/rpc              rpcclnt.c 
>     sys/sys              mbuf.h 
>     share/man/man9       mbuf.9 
>   Log:
>   Replaced the misleading uses of a historical artefact M_TRYWAIT with M_WAIT.
>   Removed dead code that assumed that M_TRYWAIT can return NULL; it's not true
>   since the advent of MBUMA.
>   
>   Reviewed by:    arch
>   
>   There are ongoing disputes as to whether we want to switch to directly using
>   UMA flags M_WAITOK/M_NOWAIT for mbuf(9) allocation.
>   
>   Revision  Changes    Path
>   1.67      +4 -14     src/share/man/man9/mbuf.9
>   1.74      +6 -20     src/sys/dev/en/midway.c
>   1.24      +4 -14     src/sys/dev/fatm/if_fatm.c
>   1.45      +4 -12     src/sys/dev/firewire/if_fwe.c
>   1.17      +6 -14     src/sys/dev/firewire/if_fwip.c
>   1.4       +3 -3      src/sys/dev/iscsi/initiator/isc_soc.c
>   1.19      +7 -17     src/sys/kern/subr_mchain.c
>   1.177     +1 -1      src/sys/kern/uipc_mbuf.c
>   1.308     +12 -14    src/sys/kern/uipc_socket.c
>   1.270     +8 -20     src/sys/kern/uipc_syscalls.c
>   1.190     +4 -7      src/sys/net/bpf.c
>   1.40      +2 -10     src/sys/net/if_ef.c
>   1.106     +1 -3      src/sys/net/if_fddisubr.c
>   1.77      +1 -3      src/sys/net/if_iso88025subr.c
>   1.134     +2 -14     src/sys/net/if_sl.c
>   1.35      +1 -1      src/sys/net/raw_cb.c
>   1.46      +1 -3      src/sys/netatalk/aarp.c
>   1.17      +1 -1      src/sys/netatm/port.h
>   1.279     +1 -1      src/sys/netinet/ip_output.c
>   1.118     +1 -1      src/sys/netinet6/ip6_output.c
>   1.21      +1 -1      src/sys/netncp/ncp_sock.c
>   1.20      +2 -2      src/sys/netsmb/smb_iod.c
>   1.18      +1 -3      src/sys/netsmb/smb_rq.c
>   1.28      +1 -3      src/sys/netsmb/smb_trantcp.c
>   1.119     +2 -2      src/sys/nfs/nfs_common.c
>   1.31      +6 -17     src/sys/nfsclient/krpc_subr.c
>   1.159     +2 -2      src/sys/nfsclient/nfs_socket.c
>   1.155     +10 -10    src/sys/nfsclient/nfs_subs.c
>   1.180     +4 -4      src/sys/nfsserver/nfs_serv.c
>   1.45      +2 -2      src/sys/nfsserver/nfs_srvcache.c
>   1.108     +5 -5      src/sys/nfsserver/nfs_srvsock.c
>   1.154     +2 -2      src/sys/nfsserver/nfs_srvsubs.c
>   1.118     +2 -2      src/sys/nfsserver/nfs_syscalls.c
>   1.50      +5 -26     src/sys/pci/if_mn.c
>   1.21      +8 -8      src/sys/rpc/rpcclnt.c
>   1.224     +2 -2      src/sys/sys/mbuf.h

-- 
- Alfred Perlstein



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20080325180152.GB67856>