Spectrum Protect / TSM systemd autostart

cat < <'EOF' >/etc/systemd/system/db2fmcd.service


systemctl enable db2fmcd.service
systemctl start db2fmcd.service

cp -p /opt/tivoli/tsm/server/bin/dsmserv.rc /etc/init.d/tsminst1
cat < <'EOF' >>/etc/systemd/system/tsminst1.service

ExecStart=/etc/init.d/tsminst1 start
ExecReload=/etc/init.d/tsminst1 reload
ExecStop=/etc/init.d/tsminst1 stop

systemctl enable tsminst1.service
systemctl start tsminst1.service

ln -s /opt/tivoli/tsm/client/ba/bin/rc.dsmcad /etc/init.d/dsmcad
cat < <'EOF' >>/etc/systemd/system/dsmcad.service

ExecStart=/etc/init.d/dsmcad start
ExecReload=/etc/init.d/dsmcad reload
ExecStop=/etc/init.d/dsmcad stop

systemctl enable dsmcad.service
systemctl start dsmcad.service

Digestion Time of Various Foods

I am still looking for the raw source of this information, or the methods used to obtain it.

It matches my observations, but without scientific backing, this must be considered anecdotal at best.

Date: 2004/02/09, 01:55 PM
Source: https://www.freetrainers.com/forums/topic/eating-before-workout-17839/
Author: https://www.freetrainers.com/community/p/bb1fit/


  • approx. time spent in stomach before emptying


  • When stomach is empty, leaves immediately and goes into intestines


  • Fruit vegetables, vegetable broth – 15 to 20 minutes.


  • Blended salad, vegetables or fruits – 20 to 30 min.


  • Watermelon – 20 min.
  • Other melons – Canteloupe, Cranshaw, Honeydew etc. – 30 min.
  • Oranges, grapefruit, grapes – 30 min.
  • Apples, pears, peaches, cherries etc. – 40 min.


  • Raw tossed salad vegetables – tomato, lettuces, cucumber, celery, red or green pepper, other succulent vegetables – 30 to 40 min.

Steamed or cooked vegetables

  • Leafy vegetables – escarole, spinach, kale, collards etc. – 40 min.
  • Zucchini, broccoli, cauliflower, string beans, yellow squash, corn on cob – 45 min.
  • Root vegetables – carrots, beets, parsnips, turnips etc. – 50 min.

Semi-Concentrated Carbohydrates – Starches

  • Jerusalem artichokes & leafy, acorn & butternut squashes, corn, potatoes, sweet potatoes, yam, chestnuts – 60 min.

Concentrated Carbohydrates – Grains

  • Brown rice, millet, buckwheat, cornmeal, oats (first 3 vegetables best) – 90 min.

Legumes & Beans – (Concentrated Carbohydrate & Protein)

  • Lentils, limas, chick peas, peas, pigeon peas, kidney beans, etc. – 90 min.
  • soy beans -120 min.

Seeds & Nuts

  • Seeds – Sunflower, pumpkin, pepita, sesame – approx. 2 hours.
  • Nuts – Almonds, filberts, peanuts (raw), cashews, brazil, walnuts, pecans etc. – 2.5 to 3 hours


  • Skim milk, cottage or low fat pot cheese or ricotta – approx. 90 min.
  • whole milk cottage cheese – 120 min.
  • whole milk hard cheese – 4 to 5 hours

Animal proteins

  • Egg yolk – 30 min.
  • Whole egg – 45 min.
  • Fish – cod, scrod, flounder, sole seafood – 30 min.
  • Fish – salmon, salmon trout, herring, (more fatty fish) – 45 to 60 min.
  • Chicken (without skin) – 11/2 to 2 hours digestion time
  • Turkey (without skin) – 2 to 2 1/4 hours
  • Beef, lamb – 3 to 4 hours
  • Pork – 41/2 to 5 hours


Info about gastric emptying rates:

The case against dietary extremism

This write-up is in response to some claims that humans were not built to eat meat.

Short Summary

Human biology is built for endurance hunting. We are not structured to eat meat with every meal, but some of our essential vitamins are only naturally available from meat.

Plant carbohydrate is the only fuel which causes multiple metabolic dysfunctions when consumed in excess of immediate needs. The US shift from fat to carbs in 1977 for bulk energy recommendation coincides with the sharp beginning of the US obesity epidemic.

Grains, pulses, roots, etc are not naturally a primary food source. They require substantial technology to prepare. The vegetable foods we can eat are not available year round without major technological advancements.

Some of our survival does absolutely rely on plants as well, including non-digestible plant matter, and other vitamins.

It’s not that we “can” eat both. It’s that we truly are adapted to require eating both. Technology allows us to get around this requirement, but it is not in any way “natural”.

We’re also not adapted for having food instantly available all the time, and we are not adapted to using carbohydrate as a primary source of energy.

Long rambly supporting info:

We, and our ancestors back to previous species, have a biology designed to follow prey around to the point of the prey’s exhaustion. While many animals can move faster than us in the short term, very few can travel as far as we can in a few hours, or even in a day, without becoming incapacitated by fatigue. At that point, we simply walk up to the prey and run it through with a stick.

We are upright, which gives us a reduced thermal load from spending a long time moving in the sun.

It also supports both wooded foraging and coastal hunting.

Compared to our ancestors, we devolved upper body strength and evolved lower body strength to support hunting, at the expense of being able to harvest and climb trees to the same level as other primates. We lost our opposable big toes, and our knees angled towards the middle a bit. This is an adaptation to extended running or walking, and use of tools instead of brute strength.

Our digestive tract is designed for meat occasionally, but not constantly. The gallbladder stores and concentrates bile, and our bile is hydrophobic (eg, is used to digest fats).

Some of our vitamins only come from meat, or bioengineered foods. The most critical is Vitamin B12.

The canine argument is non-scientific. Canines, and pointed teeth, and claws, are for killing rapidly, both for territorial purposes and for hunting. Many species of primates have huge canines, even the ones that don’t eat much meat.

Humans don’t kill with our teeth and claws. Not a factor for what we should eat. Whales don’t have canines either, and they eat tons of small shrimp and fish every year.

True herbivore teeth generally continue to grow throughout life, because it’s extra hard on teeth. We have two sets of teeth, one to fit our small head, and one set to fit our grown up heads. Birth size and brain growth come into play there. We live twice as long as we would in the wild, and we’re still dealing with people who, despite dental precautions, still have to have dental appliances.

Our front teeth have fairly sharp corners, and a chisel edge, designed for biting out big chunks at a time. Basically, once we get food, we need to be able to eat a bunch of it fast, because more dangerous predators would come along soon.

Note that what society considers meat is very limited. In the wild, primates would eat birds, lizards, insects, crustaceans, worms, and anything else available. Some primates eat other primate species on a monthly basis.

Also compare our digestive tracts past the teeth. Our stomach is designed to help break down meat, and liberate protein. Our duodenum is designed to begin the breakdown of fats. Our jejunum is designed to absorb carbs, fats, and proteins that have been liberated above. Our ileum is designed to absorb trace nutrients, excess bile, vitamins, and whatever wasn’t absorbed above. Our colons are designed for residual fermentation and moisture absorption.

Our colons are half the size of our more vegetarian cousins among primates. We also have a very small appendix. These are related to having a lower capacity to break down cellulose. In other words, we can eat some vegetation, but not the same variety as some other species.

Our stomachs are elastic, and can hold quite a lot of food. Human gastric juice is specifically designed to break down proteins.

When food is low in animal protein, food passes fairly quickly through the stomach. When it’s very meaty, it hangs out in the stomach for multiple hours.

Info about gastric emptying rates:
* local copy at http://omnitech.net/health/2018/06/06/digestion-time-of-various-foods/
* Sorry this last one is not better quality. I have not been able to find research, nor older references.

This delay is so that we can absorb all of it, not because we’re having a problem. Problem foods either come up, or pass through rapidly.

Herbivores, such as cattle, use extended duration fermentation to break down plant matter.

Basically, our structure is specifically adapted to handle different types and amounts of foods, depending on whatever is available at the time.

A major exception is that we’re structured to not eat large amounts of carbohydrates except when we are recovering from, or in the middle of endurance exercise. We’re better at it than our distant ancestors, because we’ve been doing agriculture for a LONG time, way longer than written language.

If we have been out hunting all day, then eating the equivalent of 10 refined peaches in 5 minutes is not so bad. It goes into the muscles and the liver to replenish glycogen, repair damage, and keep feeding ATP systemwide.

When we are recovered, this is not the case.

Our insulin has a half-life of about 10 minutes naturally, Natural insulin levels oscillate by a factor of 8 over 3-6 minute periods. When our livers and muscles are replete with glycogen (locally stored carbohydrate), those tissues refuse to absorb more glucose.

In response, blood glucose levels go up, and the body releases even more insulin. The loop happens until our fat cells kick into overdrive, and our livers kick into overdrive, and all of the glucose gets stored as fat.

During this process, our muscle cells down-regulate their sensitivity to insulin, because obviously, something is wrong. Muscles are already full, so why are you trying to feed them? Literally, GLUT4 receptor production rate is related to the energy needs of the cell. If the needs are low, then the levels can be reduced enough to induce insulin resistance.

Also, insulin is transported into a cell along with the transport protein. Endocytosis of the GLUT4 receptor is faster than regeneration and exocytosis.
Sherwood, Lauralee; Klandorf, Hillar; Yancey, Paul (2012-01-01). Animal Physiology: From Genes to Organisms. Cengage Learning. ISBN 1133709516

Muscle cells have secondary functions to absorb glucose when needed anyway, so it’s just a courtesy that they listen for insulin at all.

Along the same lines, the pancreas down-regulates the number of islet (beta) cells, because obviously, such high levels of insulin must mean we have too many cells. https://www.ncbi.nlm.nih.gov/pubmed/15655713

Unfortunately, in its panic, the liver has to pack it into very low density lipoprotein myceles (VLDL), which is particularly difficult for our body to deal with. This gets stuffed into the walls of our arteries just to keep it from killing us on the spot. This leads to necrosis, clots, hardened arteries, etc.

None of this cascade of metabolic hormone dysfunction happens from eating excess meat, though excess of any food can lead to obesity and long-term insulin resistance. Protein takes longer to convert to glucose, but does have a nitrogen load on the kidneys. There are limits to how much can be acquired “in the wild”, and this tends to be much better self-regulated due to the longer gastric clearance times.
* more sources needed here, but I’m tired.

Eating high amounts of animal fat or cholesterol also does not cause a lipid problem for the blood. Dietary fats are packaged as High Density Lipoprotein (HDL) and carried to the liver for further processing, or to fat cells for storage. HDL has the benefit of also scavenging free fatty acids out of the blood, and off of the walls of blood vessels.

80% of the body’s cholesterol is produced by the liver, and excess is excreted by being bound in non-digested plant matter in the intestines.

Note that the epidemic of obesity in the US aligns closely with the low-fat claims. The recommendation for low-fat diets coincides with higher carbohydrate consumption (how else do you get energy?). This shift happened in 1977. You can see this coincides with a sharp uptick in obesity rates here:

In summary, we’re supposed to eat alternating meat and plant meals, but not so much in the way of carbohydrates. When we do eat carbohydrates, it would be perhaps one or two small pieces of fruit during a hunt, or as a special treat during the week that the small fruits were ripening on the tree, but not demolished by birds, or perhaps a handful of grass seeds or beans in passing.

A nice reference of all of the pieces of the digestive system:

  • Further discussion could be had on the health, social, and environmental implications of using technology to bypass these physiological limitations.

AIX 7.2 crash removing adapters from etherchannel

If I remove the first main adapter, and re-add it, then I can add/remove either adapter or IP interface after that.

If I remove the second main adapter, and re-add it, then I cannot remove the first, and dropping the IP interface crashes.

So, assuming adapter_names=ent2,ent6

This works everywhere:
/usr/lib/methods/ethchan_config -d ent17 ent2
/usr/lib/methods/ethchan_config -a ent17 ent2
/usr/lib/methods/ethchan_config -d ent17 ent6
/usr/lib/methods/ethchan_config -a ent17 ent6
/usr/sbin/rmdev -Rl en17
/usr/sbin/mkdev -l en17
# Can do any combination of the above after remove/readd first adapter in advance.

And this crashes everywhere:
/usr/lib/methods/ethchan_config -d ent17 ent6
/usr/lib/methods/ethchan_config -a ent17 ent6
# crashed here on one server
/usr/lib/methods/ethchan_config -d ent17 ent2
ethchan_config: 0950-021 Unable to delete adapter ent2 from the
EtherChannel because it could not be found, errno = 2
/usr/sbin/rmdev -Rl en17

# crash here on several others

Crash analysis follows:

(96)> stat
CHRP_SMP_PCI POWER_PC POWER_8 machine with 160 available CPU(s) (64-bit

sysname... AIX
nodename.. testnode001
release... 2
version... 7
build date Mar 2 2018
build time 13:02:46
label..... 1809C_72H
machine... 00DEADBEEF00
nid....... FBCAFE4C
time of crash: Wed May 9 04:45:59 2018
age of system: 25 day, 10 hr., 54 min., 41 sec.
xmalloc debug: enabled
FRRs active... 0
FRRs started.. 0

CPU 96 CSA F00000002FF47600 at time of crash, error code for LEDs:
pvthread+1A0E00 STACK:
[00009324].unlock_enable_mem+000018 ()
(??, ??)
[060592E8]shientdd:entcore_suspend_nic+000028 (??, ??)
[0605FB20]shientdd:entcore_suspend+0001E0 (??, ??, ??)
[06129A68]shientdd:entcore_close_common+000668 (??)
[0612A0B0]shientdd:entcore_close+000490 (??)
[060103CC]shientdd:shi2ent_close+00000C (??)
[F1000000C04911C0]ethchandd:ethchan_close+0001A0 (??)
[00014D70].hkey_legacy_gate+00004C ()
[0057A914]ns_free+000074 (??)
[00014F50].kernel_add_gate_cstack+000030 ()
[069E503C]if_en:en_ioctl+0002DC (??, ??, ??)
[0057126C]if_detach+0001CC (??)
[0056E1DC]ifioctl+00081C (F00000002FF473D0, 8020696680206966,
[005EA764]soo_ioctl+0005C4 (??, ??, ??)
[007A4754]common_ioctl+000114 (??, ??, ??, ??)
[00003930]syscall+000228 ()
[kdb_get_virtual_memory] no real storage @ 2FF22358
[D011C92C]D011C92C ()
[kdb_read_mem] no real storage @ FFFFFFFFFFF5D60

(96)> status | grep -v wait
96 20E03BF 6670 380324 3128 ifconfig

(96)> vmlog
Most recent VMM errorlog entry
Error id = DSI_PROC
Exception DSISR/ISISR = 000000000A000000
Exception srval = 00007FFFFFFFD080
Exception virt addr = 0000000000000004
Exception value = 00000086 EXCEPT_PROT

Protection exception. An attempt was made to write to a protected
address in memory

(96)> th -n ifconfig
pvthread+1A0E00 6670*ifconfig RUN 20E03BF 03E 96 0
shientdd:.entcore_disable_tx_timeout_timers AF123_105+000074
bla < .unlock_enable>
2390 ! SUNLOCK(TX_QUEUE_SLOCK, tx_pri);

---- NDD INFO ----( F1000B003952B410)----
name............. ent6 alias............ en6
ndd_next......... 0000000000000000
ndd_flags........ 00610812
ndd_2_flags...... 00000930

(96)> print entcore_acs_t F1000B00393F0000
struct entcore_acs_t
struct entcore_tx_queue_t
< ...>
struct entcore_ras_cb_t *ffdc_ras_cb = 0xF1000B0039537D40;
struct entcore_tx_atomics_t *atomics = 0x0000000000000000;
struct mbuf *overflow_queue = 0x0000000000000000;
struct mbuf *overflow_queue_tail = 0x0000000000000000;
uint64_t ofq_cnt = 0x0000000000000000;
struct entcore_lock_info_t *p_lock_info = 0x0000000000000000;
void *p_acs = 0xF1000B00393F0000; NULL so DSI

(96)> dd F1000B00393F78D0
F1000B00393F78D0: 0000000000000000 < - p_lock_info

(96)> xm F1000B00393F78D0
Page Information:
heap_vaddr = F1000B0000000000
P_allocrange (range of 2 or more allocated full pages)
page........... 00003937 start.. F1000B00393F0000 page_cnt....... 0017
allocated_size. 00170000 pd_size........ 00010000 pinned......... yes

Allocation Record:
F1000B00E4306600: addr......... F1000B00393F0000 allocated pinned
F1000B00E4306600: req_size..... 1458712 act_size..... 1507328
F1000B00E4306600: tid.......... 033F0187 comm......... cfgshien
Trace during xmalloc() on CPU 00

Free History:
105D 40.955808 SHIENTDD GEN: L3 Close__B d1=F1000B00393F0000
105D 40.955808 SHIENTDD GEN: L3 CloseC_B d1=F1000B00393F0000
105D 40.955809 SHIENTDD GEN: L3 HwClos_B d1=F1000B00393F0000
105D 40.955810 SHIENTDD GEN: L3 HwClos_B -HW| d1=0000000000000000
105D 40.955810 SHIENTDD GEN: L3 HwClos10 -HW| d1=0000000000000000
105D 40.955810 SHIENTDD GEN: L3 HwClos_E -HW| d1=0000000000000000
105D 40.955811 SHIENTDD GEN: L3 HwClos_E d1=0000000000000000

< ...>

105D 41.039269 SHIENTDD GEN: L3 CloseC_E d1=F1000B00393F0000
105D 41.039269 SHIENTDD GEN: L3 Close__E d1=0000000000000000
105D 41.039273 SHIENTDD GEN: L3 Close__B d1=F1000B00393F0000

another close ? >>

105D 41.039273 SHIENTDD GEN: L3 CloseC_B d1=F1000B00393F0000
105D 41.039274 SHIENTDD GEN: L3 HwClos_B d1=F1000B00393F0000
105D 41.039275 SHIENTDD GEN: L3 HwClos_B -HW| d1=0000000000000000
105D 41.039275 SHIENTDD GEN: L3 HwClos10 -HW| d1=0000000000000000
105D 41.039276 SHIENTDD GEN: L3 HwClos_E -HW| d1=0000000000000000
105D 41.039276 SHIENTDD GEN: L3 HwClos_E d1=0000000000000000
105D 41.039276 SHIENTDD GEN: L3 Suspnd_B d1=F1000B00393F0000
105D 41.039279 SHIENTDD GEN: L3 MctSyn_B d1=F1000B00393F0000
105D 41.039281 SHIENTDD GEN: L3 MctSyn_E d1=0000000000000000

It seems that 2 closes happened, which would have leaded to a double free, and the crash.

Debug efix was tested for 2 weeks on 24 systems and problem was resolved, patch was stabl.

APAR IJ06720 was generated, and a public efix will be released for that./


A few years ago, I was in an area where white is a serious minority. I wanted to catch a movie. For a hundred miles around, I was part of a tiny minority. In visual range, I was THE white guy.

I walked around the mall a bit, but nothing caught my eye. I went to the box office, and could not get attention. No one would make eye contact with me. I asked for a ticket, and I was told “We don’t have a ticket for you.” Others were getting their tickets, just not me.

Some people would smile, and some would frown. Lots of suspicious looks, but lots of people who just knew I was an outsider, but it did not matter. Fragments of resentment of my outsider money were sprinkled around the edges.

This was temporary. Also, not everywhere was like that.

I got a cab, and went back to my hotel. Taxi driver was social and nice, but he was used to being around every kind if person. A customer is a customer to him.

My favorite food place didn’t care, other than a little squinting when accent differences had to be worked out. Their customers ran the gamut too.

But I got to go back home.

What if every single day was like this How would you react? How long would it take you to snap at someone for mistreating you because you’re an outsider?

Would you yell at someone when you are the only one of “your kind” in a sea of others? Would you feel safe?

What risks do you have in being the outsider that no one REALLY would be too upset about seeing you mistreated?

Who’s your chaperone? Who vouches for you as an outsider that’s okay?

Don’t let people be an outsider. Invite them in. Don’t hide from the awkward feeling. We’re all one big, extended family. Invite your distant cousin to sit with you. Hear a story, and do not worry that your life is different, or theirs is different.

Experience variety, not uniformity. Forgive the people who don’t do things “the right way” and above all else, remember the feeling of love. Feeling tense? Remember love. Frustrated? Overlay love. Angry? Love.

You can love without giving up what you need too. It just helps not give too much hassle to others who are probably feeling just as frustrated.

I may not always understand everything that’s going on, but you’re all my cousins. I hate to see you fight. Let’s get out of here and grab some food.

Spectrum Protect – container vulnerability

We ran into an issue where a level-zero operator became root, and cleaned up some TSM dedupe-pool containers so he’d stop getting full filesystem alerts.

Things exposed:

How does someone that green get full, unmonitored root access?
* They told false information about timestaps during defense
* Their senior tech lead was content to advise they not move or delete files without contacting the app owner.
* Imagine if this had been a customer facing database server!

In ISP/TSM, once extents are marked damaged, a new backup of that extent will replace it.
* Good TDP4VT CTL files and other incrementals will send missing files.
* TDP for VMWare full backups fail if the control file backup is damaged.
* Damaged extents do not mark files as damaged or missing.

Replicate Node will back-propagate damaged files.
* Damaged extents do not mark files as damaged or missing.

Also, in case you missed that:
* Damaged extents do not mark files as damaged or missing.

For real, IBM says:
* Damaged extents do not mark files as damaged or missing.
* “That might cause a whole bunch of duplicates to be ingested and processed.”

IBM’s option is to use REPAIR STGPOOL.
* PROTECT STGPOOL can go to a container copy on tape, a container copy on FILE, or a container primary on the replica target server.
* PROTECT STGPOOL cannot go to a cloud pool
* STGRULE TIERING only processes files, not PROTECT extents.
* PROTECT STGPOOL cannot go to a cloud pool that way either.
* There is NO WAY to use cloud storage pool to protect a container pool from damage.

EXCEPTION: Damaged extents can be replaced by REPLICATE NODE into a pool.
* You can DISABLE SES, and reverse the replication config.
* Replicate node that way will perform a FULL READ of the source pool.

There is a Request For Enhancement from November, 2017 for TYPE=CLOUD POOLTYPE=COPY.
* That would be a major code effort, but would solve this major hole.
* That has not gotten a blink from product engineering.
* Not even an “under review”, nor “No Way”, nor “maybe sometime”.

Alternatives for PROTECT into CLOUD might be:
* Don’t use cloud. Double the amount of local disk space, and replicate to another datacenter.
* Use NFS (We would need to build a beefy VM, and configure KRB5 at both ends, so we could do NFSv4 encrypted).
* Use CIFS (the host is on AIX, which does not support CIFS v3. Linux conversion up front before we had bulk data was given a big NO.)
* Use azfusefs (Again, it’s not Linux)

Anyway, maybe in 2019 this can be resolved, but this is the sort of thing that really REALLY was poorly documented, and did not get the time and resources to be tested in advance. This is the sort of thing that angers everyone at every level.

REFERENCE: hard,intr,nfsvers=4,tcp,rsize=1048576,wsize=1048576,bg,noatime

Biology Rambles with Khai

biology = whole organisms
microbiology = whole tiny organisms
cellular biology = whole cells of complex organisms
molecular biology = The machinery inside of cells
biochemistry = The chemicals of organisms, both inside and outside of cells
organic chemistry = chemistry involving carbon and hydrogen.

There’s more chemistry, and underlying chemistry is physics. Biology is an application of chemistry, and chemistry is an application of physics.

When you look at molecular biology, you see what looks like program counters and 3d printers. Most of the bits inside of cells are literally physical machines, aided along by the right shape to have a static or magnetic charge necessary to pull the right pieces out of the semi-random soup and move, attach, or detach them.

When you exercise, you literally dump calcium into pockets in a muscle cell, and those fit into a lock on a little machine that ratchets down a little rope, each click caused by an ATP molecule floating in, connecting, getting snapped, and having a tiny bit of electric charge transferred.

The fun thing is that ATP is also required to pump the calcium out of that little pocket, so when you’ve depleted ATP. There is a complex loop for making ATP, and a whole of of ways to keep that cycle (ctric acid or Krebs cycle) going, but the fastest way to make ATP is oxygen and glucose.

Oxygen input often lags behind, and you can always burn up oxygen faster than you can replenish it. When this happens, muscle cells get stuck contracted, and they keep trying to contract, competing for ATP in this depleted state. This is one of the ways a muscle cramp occurs.

This rambling brought to you by brain inputs triggered by talking to Khai about his AP biology test today, and how excited he is about all of the machinery inside of cells.

ANR3114E LDAP error 81. Failure to connect to the LDAP server

This used to be on IBM’s website, but it disappeared.  It is referenced all over the net, and needed to still exist. I only found it in the wayback machine, so I’m adding another copy to the internet.

2013 SOURCE: www-01.ibm.com/support/docview.wss?uid=swg21656339


When the SET LDAPUSER command is used, the connection can fail with:

ANR3114E LDAP error 81 (Can’t contact LDAP server)


The user common name (CN) in the SET LDAPUSER command contains a space or the ldapurl option is incorrectly specified.

Diagnosing the problem

Collect a trace of the Tivoli Storage Manager Server using the following trace classes:
session verbdetail ldap ldapcache unicode

More information about tracing the server can be found here: Enabling a trace for the server or storage agent

The following errors are reported within the trace:

11:02:04.127 [44][output.c][7531][PutConsoleMsg]:ANR2017I Administrator ADMIN issued command: SET LDAPPASSWORD ?***? ~
11:02:04.171 [44][ldapintr.c][548][ldapInit]:Entry: ldapUserNew =      CN=tsm user,OU=TSM,DC=ds,DC=example,DC=com
11:02:04.173 [44][ldapintr.c][5851][LdapHandleErrorEx]:Entry: LdapOpenSession(ldapintr.c:2340) ldapFunc = ldap_start_tls_s_np, ldapRc = 81, ld = 0000000001B0CAB0
11:02:04.174 [44][ldapintr.c][5867][LdapHandleErrorEx]:ldap_start_tls_s_np returned LDAP code 81(Can't contact LDAP server), LDAP Server message ((null)), and possible GSKIT SSL/TLS error 0(Success)
11:02:04.174 [44][output.c][7531][PutConsoleMsg]:ANR3114E LDAP error 81 (Can't contact LDAP server) occurred during ldap_start_tls_s_np.~
11:02:04.174 [44][ldapintr.c][6079][LdapHandleErrorEx]:Exit: rc = 2339, LdapOpenSession(ldapintr.c:2340), ldapFunc = ldap_start_tls_s_np, ldapRc = 81, ld = 0000000001B0CAB0
11:02:04.174 [44][ldapintr.c][1580][ldapCloseSession]:Entry: sessP = 0000000009B99CD0
11:02:04.175 [44][ldapintr.c][3159][LdapFreeSess]:Entry: sessP = 0000000009B99CD0
11:02:04.175 [44][ldapintr.c][2449][LdapOpenSession]:Exit: rc = 2339, ldapHandleP = 000000000AFDE740, bindDn =                              (CN=tsm user,OU=TSM,DC=ds,DC=example,DC=com)
11:02:04.175 [44][output.c][7531][PutConsoleMsg]:ANR3103E Failure occurred while initializing LDAP directory services.~
11:02:04.175 [44][ldapintr.c][856][ldapInit]:Exit: rc = 2339
11:02:04.175 [44][output.c][7531][PutConsoleMsg]:ANR2732E Unable to communicate with the external LDAP directory server.~

Resolving the problem

  • In the trace provided, the common name (CN) contains a space. (CN=tsm user,OU=TSM,DC=ds,DC=example,DC=com)

    Remove the space in the common name when using the SET LDAPUSER command. For example:

    SET LDAPUSER “CN=tsmuser,OU=TSM,DC=ds,DC=example,DC=com”

  • Use an LDAP connection utility such as ldp.exe to ensure the ldapurl option is correct and the LDAP server is accepting connections

    <ldapurl> port 636, check the box for SSL

    Verify there are no errors in the output

Class-M Asteroids

John W. posted about a Voyager episode (Emanations) where they found a Class-M Asteroid, and the question came up as to whether such a thing would even be possible.

In the episode, there were multiple Class-M asteroids around a Class-D Planet. Class-D is a small, rocky, barren planet, and Class-M means nickel-iron core, water, atmosphere, and overall suitable for human life.

This sent me off into research into what the minimum size might be for a human-habitable planet. Sea Level Pressure on Earth is 101.3 kPa, with 21% Oxygen. Minimum partial pressure of oxygen is 16 kPa, below which we cannot adapt. (15 kPa we lose cognitive functions, peripheral vision, and it gets worse the lower it goes.)

Pure oxygen atmosphere at 16kPa is not feasible either, because of dehydration and fire risks, plus oxygen toxicity. Bump up to 25% nitrogen to mitigate that. We also need a little moisture, at least 30% RH. At room temperature, we’re looking at another 1kPa.

Lastly, we need a buffer, because we’ll breathe out CO2, and cannot have more than 5%, though Earth normal is 0.04kPa. In a spacecraft, the buffer would depend on air circulation, reaction times, etc..Mir used 34kPa total atmospheric pressure, with 25% Nitrogen, 75% oxygen, and the CO2 and H2O were under 1% absolute.

On a dwarf planet or planet, the buffer would be the difference in pressures across the habitable zones of the planet. Maybe the highest peak would be 14kPa O2, maybe 21kPa total. Maybe the lowest trench would be 36kPa total, and 24kPa O2.

For a third pressure, we’re looking at a third of surface gravity. Assuming similar density to Earth, this could be about the size of Mercury. You still want a molten core, so you can have a magnetosphere. Either the rock is young (relatively speaking), or it’s a moon for tidal heating. The other options of high radioactivity, or much closer to the star, have issues for survivability.

With a gravity of around 3.3m/s, and a 34 kPa mean surface air pressure, humans would be limited to the bottom 4km of atmosphere. That’s totally reasonable. Maybe people get altitude sickness at 2km instead of 6-7km. Fine.

Planet diameter is, again, close to a third, more like 38-39%. So, we’re talking about 4900 km in diameter, and about 3.3E23 kg (about 5.5% of Earth). Our largest known asteroid is 1000km, and our largest known dwarf planet is 2600km.

For our solarsystem, a “Class M” asteroid would not be possible. If you get big enough, you move from asteroid to dwarf planet, though this term was not in use during that part of Voyager’s production. However, if it were big, they would have just called it a small planet, or even a moon since they’re orbiting a Class-D planet. NOTE: We have M-Type asteroids, which a re “metallic”. Ceres is a G-Type, which is carbon rich.

If there were a higher density core, you could reduce the size requirements. Remember that asteroids are basically shattered planets, or proto-planets that never could accrete, so you could have one that used to be mostly core material. The earth is 35% iron, 30% oxygen, 15% silicon, 13% magnesium, and 7% other stuff by mass.

Something with higher percentages of other stuff, such as late generation supernovae fragments might be possible. You could get three times the density out of things like Osmium, Platinum, and Gold without being toxic, though at some point, you’re looking at terraforming rather than evolved life, and it would be extra extra rare.

You couldn’t just do a 2600km 60% iron planetoid, because you wouldn’t be able to have enough silicate to protect the surface. The planet would cool too quickly unless it were close to the star (like Mercury). You’d have a very hot side, and a very cold side, or a very narrow window of access on astronomical and geological scales. It would be very magnetic (and conductive), and very reactive with water (part of Class-M is lots of water). The limit is probably somewhere around 40%. Even 43% is only 20-30% increased density. Even Mercury at 65% is too big to be even a Dwarf Planet. The density here is just not enough to bring gravity up to our target on a sub-3000km body.

You might be able to scrape by with 25% gravity, and a breathing apparatus, or if it were a really young planet, or had some other source for keeping the atmosphere relatively thick, but that gets so much more difficult to find AND call “Class-M”.

A Chthonian planet that got shattered by impact might work, if it were somehow put into a reasonable orbit. It could have very high density for a small core, 4x that of the Earth. But, they get that size by being a gas giant, then having the atmosphere stripped by being in too close of an orbit to a star. So then, it would have to be shattered, and one of those pieces would have to be ejected into a stable orbit inside of the habitable zone. That really means TWO collisions, one to transfer, and one to remove eccentricity. Not very likely, but maybe even smaller than Ceres might work. You’d need a more radioactive core, otherwise the planet would cool way too quickly. But, a radioactive core, on a shattered planetoid, would have a radioactive surface. Not Class-M.

A planet that had a Platinum inner core, and iron outer core might work. I’m thinking 30% Platinum, 20% iron, 20% oxygen, 12% silicon, 8% magnesium, and 10% other stuff (lots of carbon since it’s a smaller planet) could totally work on a 1200km planetoid. Though, this type of body would not really be a “Class-M” body by Trek standards (nickel-iron core), but it might be close enough. “Exotic Class-M” maybe. Might be an issue for heavy metal poisoning, since not all of the increased platinum would be in the core. Excess surface level might mean excess platinum salts… etc.

We still have to be concerned with loss of atmosphere through interaction with other asteroids, solar radiation, maintainingthe magnetic field, etc. The planet would not be habitable for nearly as long, and probably would not evolve life on its own. This asteroid did not. The only life were dead bodies (basically a cemetery planetoid). It’s possible even the atmosphere came from the subspace voids, though why the moons had atmospheres, but the central planet did not, does not seem rational to me. The lower pressure means water boils at 60C, which limits our range of surface temperatures (and increases cooking times!)

I did not calculate the scale height, nor any of the stuff to get exact with all of this. I might be off. This is just my mental gymnastics after too much dinner caffeine.

Tea Tree Soap 2018

Soap is done. It processed really fast, which scares me a little. I did use a much better stick blender. The pH came out a perfect 10 on one strip, and the other kind a 9.9.
I worry I’ll have trouble with it slumping whenever I remove the molds. I’m going to let it use up counter space in the kitchen until mid-week, and if it’s still soft, I’ll chill it before freeing it. I should have made this batch in January.
Anyway, I’m hopeful, though I overestimated the mold capacity. My old molds have self destructed (HDPE pipe, split), so I have some new, silicone ones. I used three, plus four Solo cups. Don’t judge. This is SCIENCE! 

Note to self, 3L of molds will not hold the soap created from 3L of oils, because, you know, another liter of water, plus some additives, plus the steam trapped in the soap during casting.  (Those molds were domed over with excess soap, and I tapped repeatedly to settle the bubbles.)

ps, I only burned myself once with a glob of molten soap!