[T-Mobile LG G3] motoridersd:
The /data partition is mounted rw, so with root access any changes will be made to the file. It just seems to be restored on boot:

/dev/block/platform/msm_sdcc.1/by-name/userdata /data ext4 rw,seclabel,nosuid,nodev,noatime,noauto_da_alloc,resuid=1000,errors=continue,data=ordered 0 0

Not yet. The phone will default to using the pcweb.tmobile.com APN when enabling the hotspot, and then the change in the database file doesn't stick. I got my 3 GB tethering bucket back (new billing cycle) and even with tethering allowed, I have issues sometimes where the tethered devices get no data for a while. Usually until I change towers. I noticed that tethering fails at home, I think it's due to IPV6 tethering. The default APN for the phone does not let you change it to IPV6, and not sure what settings it is using for tethering.

I found this message in the logcat:

I/Tethering( 1000): Skip IPv6 Connectivity Check because IPv6 Tetheirng is supported.

Spelling errors aside, it looks like it doesn't care if IPV6 is enabled on the network and would tether it. When looking at the IPs assigned though, only IPV4 ones are getting assigned right now (I'll have to look at this in the places where tethering fails)

D/PDPContextStateBroadcaster( 1512): sendPDPContextConnected - ID : 7
D/PDPContextStateBroadcaster( 1512): sendPDPContextConnected - IPv4 Address : 100.106.90.82 IPv6 Address :
D/PDPContextStateBroadcaster( 1512): sendPDPContextConnected - V4 Dns : 10.177.0.34 v6 Dns :
D/PDPContextStateBroadcaster( 1512): sendPDPContextConnected - V4 Dns : 10.176.83.140 v6 Dns :

I debugged it again and I do see an IPV6 statement

I/Tethering( 993): Skip IPv6 Connectivity Check because IPv6 Tetheirng is supported.
D/Tethering( 993): Only IPv6. but tethering uses both IPv4 and IPv6, so add default v4 dns addresses too - LinkProp:{InterfaceName: rmnet0 LinkAddresses: [2607:fb90:60a:2f6c:730c:b36f:b138:a4fa/64,] Routes: [::/0 -> fe80::3890:dff4:7a18:a991,] DnsAddresses: [fd00:976a::9,] Domains: null MTU: 1440 Stacked: [ [{InterfaceName: clat4 LinkAddresses: [192.0.0.4/32,] Routes: [0.0.0.0/0 -> 192.0.0.4,] DnsAddresses: [] Domains: null MTU: 0} ],] }
D/TetherController( 315): setDnsForwarders(0 = 'fd00:976a::9')
D/TetherController( 315): setDnsForwarders(1 = '8.8.8.8')
D/TetherController( 315): setDnsForwarders(2 = '8.8.4.4')

I see this entry about a preferred APN:

D/Tethering( 993): chooseUpstreamType(true), preferredApn =5, got type=0

But then all other APN references while tethering is enabled point to pcweb:

D/PDPContextStateBroadcaster( 1512): sendPDPContextRequested - ID : 7
D/PDPContextStateBroadcaster( 1512): sendPDPContextRequested - Initiator : USER
D/PDPContextStateBroadcaster( 1512): sendPDPContextRequested - Type : PRIMARY
D/PDPContextStateBroadcaster( 1512): sendPDPContextRequested - NSAPI : 0
D/PDPContextStateBroadcaster( 1512): sendPDPContextRequested - SAPI : 0
D/PDPContextStateBroadcaster( 1512): sendPDPContextRequested - APN : pcweb.tmobile.com
D/CaptivePortalTracker( 1000): NoActiveNetworkState{ when=-1ms what=1 obj=NetworkInfo: type: mobile_dun[LTE], state: CONNECTED/CONNECTED, reason: connected, extra: pcweb.tmobile.com, roaming: false, failover: false, isAvailable: true, smCause: 0, isConnectedToProvisioningNetwork: false target=com.android.internal.util.StateMachine$SmHandler }

Whenever I change the value of tether_dun_required, the ID of the database entry changes. When I reboot and the value is back to 1, the ID has increased by 1, so something is restoring the value on boot up. If I tether right after changing the value to 0, but without rebooting, the phone will tether using the pcweb APN.