From: Matt Parnell Subject: Re: Bug In ext4 in kernels > 2.6.39 - Not mounting with arguments/options I specify in fstab on root remount Date: Sun, 9 Oct 2011 17:10:54 -0500 Message-ID: References: <4E6F1B49.3010803@gmail.com> <4E6F6D89.5040905@redhat.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=20cf307f337cb75a3b04aee4f263 Cc: linux-ext4@vger.kernel.org To: Eric Sandeen Return-path: Received: from mail-vx0-f174.google.com ([209.85.220.174]:38650 "EHLO mail-vx0-f174.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751027Ab1JIWKz (ORCPT ); Sun, 9 Oct 2011 18:10:55 -0400 Received: by vcbgb30 with SMTP id gb30so296213vcb.19 for ; Sun, 09 Oct 2011 15:10:54 -0700 (PDT) In-Reply-To: <4E6F6D89.5040905@redhat.com> Sender: linux-ext4-owner@vger.kernel.org List-ID: --20cf307f337cb75a3b04aee4f263 Content-Type: text/plain; charset=ISO-8859-1 FYI this behavior still occurs with every revision up to the current 3.0.6 working tree. I do not think it's my distro's initscripts, they've been rolling 3.0.X kernels for some time and those behave the same way, so it's not some sort of parsing issues - Arch's initscripts are all bash based for the most part anyway, see the attached from my system - that's the entire boot initscript minus my daemons. There's no alternative init system for Archlinux at this point, I'm working on porting OpenRC from gentoo as I have time to write initscripts from scratch, but that's a slow moving project. Whatever the case, the following are from my most recent attempt with a 3.0.6 build. Manually attempting to remount rw still fails, and no matter whether I use /dev/sdb1 or /dev/root, I get the same behavior. /proc/mounts (as you can see it's not being remounted rw for some reason - /dev/sdc1 is the flash drive I used to pipe this info onto): rootfs / rootfs rw 0 0 /dev/root / ext4 ro,relatime,barrier=1 0 0 devtmpfs /dev devtmpfs rw,relatime,size=4059824k,nr_inodes=1014956,mode=755 0 0 proc /proc proc rw,nosuid,nodev,noexec,relatime 0 0 /sys /sys sysfs rw,nosuid,nodev,noexec,relatime 0 0 /run /run tmpfs rw,nosuid,nodev,relatime,size=10240k,mode=755 0 0 devpts /dev/pts devpts rw,relatime,mode=600 0 0 shm /dev/shm tmpfs rw,nosuid,nodev,relatime 0 0 fusectl /sys/fs/fuse/connections fusectl rw,relatime 0 0 /dev/sda4 /media/disk ext3 rw,nosuid,nodev,noatime,nodiratime,errors=continue,barrier=0,data=writeback 0 0 /dev/sdc1 /mnt/tmp vfat rw,relatime,fmask=0022,dmask=0022,codepage=cp437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro 0 0 /etc/mtab (not useful, I know, but for reference): /dev/root / ext4 rw,noatime,nodiratime,data=writeback,barrier=0,discard,commit=0 0 0 devtmpfs /dev devtmpfs rw,relatime,size=4059656k,nr_inodes=1014914,mode=755 0 0 proc /proc proc rw,nosuid,nodev,noexec,relatime 0 0 /sys /sys sysfs rw,nosuid,nodev,noexec,relatime 0 0 /run /run tmpfs rw,nosuid,nodev,relatime,size=10240k,mode=755 0 0 devpts /dev/pts devpts rw,relatime,mode=600 0 0 shm /dev/shm tmpfs rw,nosuid,nodev,relatime 0 0 tmpfs /tmp tmpfs rw,nosuid,nodev 0 0 /etc/fstab: # # /etc/fstab: static file system information # devpts /dev/pts devpts defaults 0 0 shm /dev/shm tmpfs nodev,nosuid 0 0 /dev/sdb1 / ext4 defaults,noatime,nodiratime,data=writeback,barrier=0,discard 0 0 /dev/sda4 /media/disk ext3 defaults,data=writeback,noatime,nodiratime,user,exec 0 0 tmpfs /tmp tmpfs nodev,nosuid 0 0 >On 09/13/2011 09:49 AM, Eric Sandeen wrote: > >On 9/13/11 4:01 AM, Matt Parnell wrote: > >Interestingly, this also happened and worked, which I think is a bug, >how can barrier=0 and 1 at the same time? > >EXT4-fs (sdb1): re-mounted. Opts: user_xattr,barrier=1,barrier=0 > >Fairly certain that the parser will just take the last value specified >for the option. > >/proc/mounts likely says "nobarrier" when you specify it this way? > >-Eric --20cf307f337cb75a3b04aee4f263 Content-Type: application/octet-stream; name="rc.sysinit" Content-Disposition: attachment; filename="rc.sysinit" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gtklb3350 IyEvYmluL2Jhc2gKIwojIC9ldGMvcmMuc3lzaW5pdAojCgouIC9ldGMvcmMuY29uZgouIC9ldGMv cmMuZC9mdW5jdGlvbnMKCmVjaG8gIiAiCnByaW50aGwgIkFyY2ggTGludXhcbiIKcHJpbnRobCAi JHtDX0gyfWh0dHA6Ly93d3cuYXJjaGxpbnV4Lm9yZyIKcHJpbnRzZXAKCiMgbW91bnQgL3Byb2Ms IC9zeXMsIC9ydW4sIC9kZXYsIC9ydW4vbG9jaywgL2Rldi9wdHMsIC9kZXYvc2htICh0aGUgYXBp IGZpbGVzeXN0ZW1zKQptb3VudHBvaW50IC1xIC9wcm9jICAgIHx8IG1vdW50IC1uIC10IHByb2Mg cHJvYyAvcHJvYyAtbyBub3N1aWQsbm9leGVjLG5vZGV2Cm1vdW50cG9pbnQgLXEgL3N5cyAgICAg fHwgbW91bnQgLW4gLXQgc3lzZnMgc3lzIC9zeXMgLW8gbm9zdWlkLG5vZXhlYyxub2Rldgptb3Vu dHBvaW50IC1xIC9ydW4gICAgIHx8IG1vdW50IC1uIC10IHRtcGZzIHJ1biAvcnVuIC1vIG1vZGU9 MDc1NSxzaXplPTEwTSxub3N1aWQsbm9kZXYKbW91bnRwb2ludCAtcSAvZGV2ICAgICB8fCBtb3Vu dCAtbiAtdCBkZXZ0bXBmcyB1ZGV2IC9kZXYgLW8gbW9kZT0wNzU1LHNpemU9MTBNLG5vc3VpZCBc Cgl8fCBtb3VudCAtbiAtdCB0bXBmcyB1ZGV2IC9kZXYgLW8gbW9kZT0wNzU1LHNpemU9MTBNLG5v c3VpZApta2RpciAtcCAtbSAxNzc3IC9ydW4vbG9jawpta2RpciAtcCAvZGV2L3twdHMsc2htfQpt b3VudHBvaW50IC1xIC9kZXYvcHRzIHx8IG1vdW50IC1uIC9kZXYvcHRzICY+L2Rldi9udWxsIFwK CXx8IG1vdW50IC1uIC10IGRldnB0cyBkZXZwdHMgL2Rldi9wdHMgLW8gbW9kZT0wNjIwLGdpZD01 LG5vc3VpZCxub2V4ZWMKbW91bnRwb2ludCAtcSAvZGV2L3NobSB8fCBtb3VudCAtbiAvZGV2L3No bSAmPi9kZXYvbnVsbCBcCgl8fCBtb3VudCAtbiAtdCB0bXBmcyBzaG0gL2Rldi9zaG0gLW8gbW9k ZT0xNzc3LG5vc3VpZCxub2RldgoKIyByZW1vdW50IHJvb3Qgcm8gdG8gYWxsb3cgZm9yIGZzY2sg bGF0ZXIgb24sIHdlIHJlbW91bnQgbm93IHRvCiMgbWFrZSBzdXJlIG5vdGhpbmcgY2FuIG9wZW4g ZmlsZXMgcncgb24gcm9vdCB3aGljaCB3b3VsZCBibG9jayBhIHJlbW91bnQKZmluZG1udCAvIC0t b3B0aW9ucyBybyAmPi9kZXYvbnVsbCB8fAoJc3RhdHVzICJNb3VudGluZyBSb290IFJlYWQtT25s eSIgbW91bnQgLW4gLW8gcmVtb3VudCxybyAvCgpydW5faG9vayBzeXNpbml0X3N0YXJ0CgojIHN0 YXJ0IHVwIG91ciBtaW5pIGxvZ2dlciB1bnRpbCBzeXNsb2cgdGFrZXMgb3ZlcgptaW5pbG9nZApi b290bG9nZCAtcCAvcnVuL2Jvb3Rsb2dkLnBpZAoKaWYgW1sgISAtYSAvdXNyL2xpYiBdXSA7IHRo ZW4KICBwcmludGYgIiR7Q19GQUlMfS91c3IgaXMgbm90IG1vdW50ZWQuIFRoaXMgaXMgbm90IHN1 cHBvcnRlZC4ke0NfT1RIRVJ9XG4iCmZpCgpIV0NMT0NLX1BBUkFNUz0iLS1zeXN0eiIKY2FzZSAk SEFSRFdBUkVDTE9DSyBpbgoJIiIpIDs7CglVVEMpIEhXQ0xPQ0tfUEFSQU1TKz0iIC0tdXRjIC0t bm9hZGpmaWxlIjs7Cglsb2NhbHRpbWUpIEhXQ0xPQ0tfUEFSQU1TKz0iIC0tbG9jYWx0aW1lIC0t bm9hZGpmaWxlIjs7CgkqKSBIV0NMT0NLX1BBUkFNUz0iIjs7CmVzYWMKCmlmIFtbICRIV0NMT0NL X1BBUkFNUyBdXTsgdGhlbgoJc3RhdF9idXN5ICJBZGp1c3Rpbmcgc3lzdGVtIHRpbWUgYW5kIHNl dHRpbmcga2VybmVsIHRpbWV6b25lIgoJCSMgZW5hYmxlIHJ0YyBhY2Nlc3MKCQltb2Rwcm9iZSAt cSAtYSBydGMtY21vcyBydGMgZ2VucnRjCgkJIyBJZiBkZXZ0bXBmcyBpcyB1c2VkLCB0aGUgcmVx dWlyZWQgUlRDIGRldmljZSBhbHJlYWR5IGV4aXN0cyBub3cKCQkjIE90aGVyd2lzZSwgY3JlYXRl IHdoYXRldmVyIGRldmljZSBpcyBhdmFpbGFibGUKCQlpZiAhIFtbIC1jIC9kZXYvcnRjIHx8IC1j IC9kZXYvcnRjMCBdXTsgdGhlbgoJCQlmb3IgZGV2IGluIC9zeXMvY2xhc3MvcnRjL3J0YzAvZGV2 IC9zeXMvY2xhc3MvbWlzYy9ydGMvZGV2OyBkbwoJCQkJW1sgLWUgJGRldiBdXSB8fCBjb250aW51 ZQoJCQkJSUZTPTogcmVhZCAtciBtYWpvciBtaW5vciA8ICIkZGV2IgoJCQkJbWtub2QgL2Rldi9y dGMgYyAkbWFqb3IgJG1pbm9yCgkJCWRvbmUKCQlmaQoKCQkjIEFkanVzdCB0aGUgc3lzdGVtIHRp bWUgZm9yIHRpbWV6b25lIG9mZnNldCBpZiBydGMgaXMgbm90IGluIFVUQwoJCSMgMS4gTWFrZSBj cmVhdGlvbiB0aW1lIG9uIHVkZXYgbm9kZXMgc2FuZSAoRlMjODY2NSkKCQkjIDIuIEZpbGVzeXN0 ZW0gY2hlY2tzIGNhbiBkZXBlbmQgb24gc3lzdGVtIHRpbWUKCQkjIDMuIFRoaXMgYWxzbyBzZXRz IHRoZSBrZXJuZWwgdGltZSB6b25lLCB1c2VkIGJ5IGUuZy4gdmZhdAoJCSMgSWYgVElNRVpPTkUg aXMgbm90IHNldCBpbiByYy5jb25mLCB0aGUgdGltZXpvbmUgc3RvcmVkIGluIC9ldGMvbG9jYWx0 aW1lCgkJIyBpcyB1c2VkLiBJZiBIQVJEV0FSRUNMT0NLIGlzIG5vdCBzZXQgaW4gcmMuY29uZiwg dGhlIHZhbHVlIGluCgkJIyAvdmFyL2xpYi9od2Nsb2NrL2FkamZpbGUgaXMgdXNlZCAoaW4gdGhp cyBjYXNlIC92YXIgY2FuIG5vdCBiZSBhIHNlcGFyYXRlCgkJIyBwYXJ0aXRpb24pLgoJVFo9JFRJ TUVaT05FIGh3Y2xvY2sgJEhXQ0xPQ0tfUEFSQU1TICYmIHN0YXRfZG9uZSB8fCBzdGF0X2ZhaWwK ZmkKCiMgU3RhcnQvdHJpZ2dlciBVRGV2LCBsb2FkIE1PRFVMRVMgYW5kIHNldHRsZSBVRGV2CnVk ZXZkX21vZHByb2JlIHN5c2luaXQKCiMgYnJpbmcgdXAgdGhlIGxvb3BiYWNrIGludGVyZmFjZQpb WyAtZCAvc3lzL2NsYXNzL25ldC9sbyBdXSAmJgoJc3RhdHVzICJCcmluZ2luZyB1cCBsb29wYmFj ayBpbnRlcmZhY2UiIGlwIGxpbmsgc2V0IHVwIGRldiBsbwoKIyBGYWtlUkFJRCBkZXZpY2VzIGRl dGVjdGlvbgpbWyAkVVNFRE1SQUlEID0gW1l5XVtFZV1bU3NdICYmIC14ICQodHlwZSAtUCBkbXJh aWQpIF1dICYmCglzdGF0dXMgIkFjdGl2YXRpbmcgRmFrZVJBSUQgYXJyYXlzIiBkbXJhaWQgLWkg LWF5CgojIEJUUkZTIGRldmljZXMgZGV0ZWN0aW9uCltbICRVU0VCVFJGUyA9IFtZeV1bRWVdW1Nz XSAmJiAteCAkKHR5cGUgLVAgYnRyZnMpIF1dICYmCglzdGF0dXMgIkFjdGl2YXRpbmcgQlRSRlMg dm9sdW1lcyIgYnRyZnMgZGV2aWNlIHNjYW4KCiMgQWN0aXZhdGUgTFZNMiBncm91cHMgaWYgYW55 CmFjdGl2YXRlX3ZncwoKIyBTZXQgdXAgbm9uLXJvb3QgZW5jcnlwdGVkIHBhcnRpdGlvbiBtYXBw aW5ncwppZiBbWyAtZiAvZXRjL2NyeXB0dGFiICYmICRDUyBdXSAmJiBncmVwIC1xIF5bXiNdIC9l dGMvY3J5cHR0YWI7IHRoZW4KCXN0YXRfYnVzeSAiVW5sb2NraW5nIGVuY3J5cHRlZCB2b2x1bWVz OiIKCQltb2Rwcm9iZSAtcSBkbS1jcnlwdCAyPi9kZXYvbnVsbAoJCWRvX3VubG9jaygpIHsKCQkJ IyAkMSA9IHJlcXVlc3RlZCBuYW1lCgkJCSMgJDIgPSBzb3VyY2UgZGV2aWNlCgkJCSMgJDMgPSBw YXNzd29yZAoJCQkjICQ0ID0gb3B0aW9ucwoJCQlzdGF0X2FwcGVuZCAiJHsxfS4uIgoJCQlsb2Nh bCBvcGVuPWNyZWF0ZSBhPSQxIGI9JDIgZmFpbGVkPTAKCQkJIyBPcmRlcmluZyBvZiBvcHRpb25z IGlzIGRpZmZlcmVudCBpZiB5b3UgYXJlIHVzaW5nIExVS1MgdnMuIG5vdC4KCQkJIyBVc2UgdWds eSBzd2l6emxpbmcgdG8gZGVhbCB3aXRoIGl0LgoJCQkjIGlzTHVrcyBvbmx5IGdpdmVzIGFuIGV4 aXQgY29kZSBidXQgbm8gb3V0cHV0IHRvIHN0ZG91dCBvciBzdGRlcnIuCgkJCWlmICRDUyBpc0x1 a3MgIiQyIiAyPi9kZXYvbnVsbDsgdGhlbgoJCQkJb3Blbj1sdWtzT3BlbgoJCQkJYT0kMgoJCQkJ Yj0kMQoJCQlmaQoJCQljYXNlICQzIGluCgkJCQlTV0FQKQoJCQkJCWxvY2FsIF9vdmVyd3JpdGVv a2F5PTAKCQkJCQlpZiBbWyAtYiAkMiAmJiAtciAkMiBdXTsgdGhlbgoJCQkJCQkjIFRoaXMgaXMg REFOR0VST1VTISBJZiB0aGVyZSBpcyBhbnkga25vd24gZmlsZSBzeXN0ZW0sCgkJCQkJCSMgcGFy dGl0aW9uIHRhYmxlLCBSQUlEIG9yIExWTSB2b2x1bWUgb24gdGhlIGRldmljZQoJCQkJCQkjIHdl IGRvbid0IG92ZXJ3cml0ZSBpdC4KCQkJCQkJIwoJCQkJCQkjICdibGtpZCcgcmV0dXJucyAyIGlm IG5vIHZhbGlkIHNpZ25hdHVyZSBoYXMgYmVlbiBmb3VuZC4KCQkJCQkJIyBPbmx5IGluIHRoaXMg Y2FzZSB3ZSBzaG91bGQgYWxsb3cgb3ZlcndyaXRpbmcgdGhlIGRldmljZS4KCQkJCQkJIwoJCQkJ CQkjIFRoaXMgc2FuaXR5IGNoZWNrIF9zaG91bGRfIGJlIHN1ZmZpY2llbnQsIGJ1dCBpdCBtaWdo dCBub3QuCgkJCQkJCSMgVGhpcyBtYXkgY2F1c2UgZGF0YWxvc3MgaWYgaXQgaXMgbm90IHVzZWQg Y2FyZWZ1bGx5LgoJCQkJCQlibGtpZCAtcCAiJDIiICY+L2Rldi9udWxsCgkJCQkJCSgoICQ/ID09 IDIgKSkgJiYgX292ZXJ3cml0ZW9rYXk9MQoJCQkJCWZpCgkJCQkJaWYgKCggX292ZXJ3cml0ZW9r YXkgPT0gMCApKTsgdGhlbgoJCQkJCQlmYWxzZQoJCQkJCWVsaWYgJENTIC1kIC9kZXYvdXJhbmRv bSAkNCAkb3BlbiAiJGEiICIkYiIgPi9kZXYvbnVsbDsgdGhlbgoJCQkJCQlzdGF0X2FwcGVuZCAi Y3JlYXRpbmcgc3dhcHNwYWNlLi4iCgkJCQkJCW1rc3dhcCAtZiAtTCAkMSAvZGV2L21hcHBlci8k MSA+L2Rldi9udWxsCgkJCQkJZmk7OwoJCQkJQVNLKQoJCQkJCXByaW50ZiAiXG5PcGVuaW5nICck MScgdm9sdW1lOlxuIgoJCQkJCSRDUyAkNCAkb3BlbiAiJGEiICIkYiIgPCAvZGV2L2NvbnNvbGU7 OwoJCQkJL2RldiopCgkJCQkJbG9jYWwgY2tkZXY9JHszJSU6Kn0KCQkJCQlsb2NhbCBja2E9JHsz Iyo6fQoJCQkJCWxvY2FsIGNrYj0ke2NrYSMqOn0KCQkJCQlsb2NhbCBja2E9JHtja2ElOip9CgkJ CQkJbG9jYWwgY2tmaWxlPS9kZXYvY2tmaWxlCgkJCQkJbG9jYWwgY2tkaXI9L2Rldi9ja2RpcgoJ CQkJCWNhc2UgJHtja2F9IGluCgkJCQkJCSpbITAtOV0qKQoJCQkJCQkJIyBVc2UgYSBmaWxlIG9u IHRoZSBkZXZpY2UKCQkJCQkJCSMgY2thIGlzIG5vdCBudW1lcmljOiBja2E9ZmlsZXN5c3RlbSwg Y2tiPXBhdGgKCQkJCQkJCW1rZGlyICR7Y2tkaXJ9CgkJCQkJCQltb3VudCAtciAtdCAke2NrYX0g JHtja2Rldn0gJHtja2Rpcn0KCQkJCQkJCWRkIGlmPSR7Y2tkaXJ9LyR7Y2tifSBvZj0ke2NrZmls ZX0gPi9kZXYvbnVsbCAyPiYxCgkJCQkJCQl1bW91bnQgJHtja2Rpcn0KCQkJCQkJCXJtZGlyICR7 Y2tkaXJ9OzsKCQkJCQkJKikKCQkJCQkJCSMgUmVhZCByYXcgZGF0YSBmcm9tIHRoZSBibG9jayBk ZXZpY2UKCQkJCQkJCSMgY2thIGlzIG51bWVyaWM6IGNrYT1vZmZzZXQsIGNrYj1sZW5ndGgKCQkJ CQkJCWRkIGlmPSR7Y2tkZXZ9IG9mPSR7Y2tmaWxlfSBicz0xIHNraXA9JHtja2F9IGNvdW50PSR7 Y2tifSA+L2Rldi9udWxsIDI+JjE7OwoJCQkJCWVzYWMKCQkJCQkkQ1MgLWQgJHtja2ZpbGV9ICQ0 ICRvcGVuICIkYSIgIiRiIiA+L2Rldi9udWxsCgkJCQkJZGQgaWY9L2Rldi91cmFuZG9tIG9mPSR7 Y2tmaWxlfSBicz0xIGNvdW50PSQoc3RhdCAtYyAlcyAke2NrZmlsZX0pIGNvbnY9bm90cnVuYyA+ L2Rldi9udWxsIDI+JjEKCQkJCQlybSAke2NrZmlsZX07OwoJCQkJLyopCgkJCQkJJENTIC1kICIk MyIgJDQgJG9wZW4gIiRhIiAiJGIiID4vZGV2L251bGw7OwoJCQkJKikKCQkJCQllY2hvICIkMyIg fCAkQ1MgJDQgJG9wZW4gIiRhIiAiJGIiID4vZGV2L251bGw7OwoJCQllc2FjCgkJCWlmICgoICQ/ ICkpOyB0aGVuCgkJCQlmYWlsZWQ9MQoJCQkJc3RhdF9hcHBlbmQgImZhaWxlZCAiCgkJCWVsc2UK CQkJCXN0YXRfYXBwZW5kICJvayAiCgkJCWZpCgkJCXJldHVybiAkZmFpbGVkCgkJfQoJY3J5cHRv X3VubG9ja2VkPTAKCXJlYWRfY3J5cHR0YWIgZG9fdW5sb2NrICYmIHN0YXRfZG9uZSB8fCBzdGF0 X2ZhaWwKCSMgTWF5YmUgc29tZW9uZSBoYXMgTFZNIG9uIGFuIGVuY3J5cHRlZCBibG9jayBkZXZp Y2UKCSgoIGNyeXB0b191bmxvY2tlZCA9PSAxICkpICYmIGFjdGl2YXRlX3ZncwpmaQoKIyBDaGVj ayBmaWxlc3lzdGVtcwpbWyAtZiAvZm9yY2Vmc2NrIF1dIHx8IGluX2FycmF5IGZvcmNlZnNjayAk KDwgL3Byb2MvY21kbGluZSkgJiYgRk9SQ0VGU0NLPSItLSAtZiIKZGVjbGFyZSAtciBGT1JDRUZT Q0sKcnVuX2hvb2sgc3lzaW5pdF9wcmVmc2NrCmlmIFtbIC14ICQodHlwZSAtUCBmc2NrKSBdXTsg dGhlbgoJc3RhdF9idXN5ICJDaGVja2luZyBGaWxlc3lzdGVtcyIKCQlmc2NrX2FsbCA+fCIke0ZT Q0tfT1VUOi0vZGV2L3N0ZG91dH0iIDI+fCIke0ZTQ0tfRVJSOi0vZGV2L3N0ZG91dH0iCglkZWNs YXJlIC1yIGZzY2tyZXQ9JD8KCSgoIGZzY2tyZXQgPD0gMSApKSAmJiBzdGF0X2RvbmUgfHwgc3Rh dF9mYWlsCmVsc2UKCWRlY2xhcmUgLXIgZnNja3JldD0wCmZpCnJ1bl9ob29rIHN5c2luaXRfcG9z dGZzY2sKCiMgU2luZ2xlLXVzZXIgbG9naW4gYW5kL29yIGF1dG9tYXRpYyByZWJvb3QgaWYgbmVl ZGVkCmZzY2tfcmVib290ICRmc2NrcmV0CgpzdGF0dXMgIlJlbW91bnRpbmcgUm9vdCBSZWFkL1dy aXRlIiBcCgltb3VudCAtbiAtbyByZW1vdW50LHJ3IC8KCiMgZG9uJ3QgdG91Y2ggL2V0Yy9tdGFi IGlmIGl0IGlzIGEgc3ltbGluayB0byAvcHJvYy9zZWxmL21vdW50cwppZiBbWyAhIC1MIC9ldGMv bXRhYiBdXTsgdGhlbgoJc3RhdF9idXN5ICJDcmVhdGluZyBtdGFiIgoJCWlmIFtbIC14ICQodHlw ZSAtUCBmaW5kbW50KSAmJiAtZSAvcHJvYy9zZWxmL21vdW50aW5mbyBdXTsgdGhlbgoJCQlmaW5k bW50IC1ybnUgLW8gU09VUkNFLFRBUkdFVCxGU1RZUEUsT1BUSU9OUyA+fCAvZXRjL210YWIKCQll bHNlCgkJCWNhdCAvcHJvYy9tb3VudHMgPnwgL2V0Yy9tdGFiCgkJZmkKCSgoICQ/ID09IDAgKSkg JiYgc3RhdF9kb25lIHx8IHN0YXRfZmFpbApmaQoKIyBub3cgbW91bnQgYWxsIHRoZSBsb2NhbCBm aWxlc3lzdGVtcwpydW5faG9vayBzeXNpbml0X3ByZW1vdW50CnN0YXR1cyAiTW91bnRpbmcgTG9j YWwgRmlsZXN5c3RlbXMiIFwKCW1vdW50X2FsbApydW5faG9vayBzeXNpbml0X3Bvc3Rtb3VudAoK IyBlbmFibGUgbW9uaXRvcmluZyBvZiBsdm0yIGdyb3Vwcywgbm93IHRoYXQgdGhlIGZpbGVzeXN0 ZW1zIGFyZSBtb3VudGVkIHJ3CltbICRVU0VMVk0gPSBbWXldW0VlXVtTc10gJiYgLXggJCh0eXBl IC1QIGx2bSkgJiYgLWQgL3N5cy9ibG9jayBdXSAmJgoJc3RhdHVzICJBY3RpdmF0aW5nIG1vbml0 b3Jpbmcgb2YgTFZNMiBncm91cHMiIFwKCQl2Z2NoYW5nZSAtLW1vbml0b3IgeSA+L2Rldi9udWxs CgpzdGF0dXMgIkFjdGl2YXRpbmcgU3dhcCIgc3dhcG9uIC1hCgpbWyAkVElNRVpPTkUgXV0gJiYg c3RhdHVzICJDb25maWd1cmluZyBUaW1lIFpvbmUiIHNldF90aW1lem9uZSAiJFRJTUVaT05FIgoK UkFORE9NX1NFRUQ9L3Zhci9saWIvbWlzYy9yYW5kb20tc2VlZApbWyAtZiAkUkFORE9NX1NFRUQg XV0gJiYKCXN0YXR1cyAiSW5pdGlhbGl6aW5nIFJhbmRvbSBTZWVkIiBcCgkJY3AgJFJBTkRPTV9T RUVEIC9kZXYvdXJhbmRvbQoKIyBSZW1vdmUgbGVmdG92ZXIgZmlsZXMKcmVtb3ZlX2xlZnRvdmVy CgppZiBbWyAkSE9TVE5BTUUgXV07IHRoZW4KCXN0YXRfYnVzeSAiU2V0dGluZyBIb3N0bmFtZTog JEhPU1ROQU1FIgoJZWNobyAiJEhPU1ROQU1FIiA+fCAvcHJvYy9zeXMva2VybmVsL2hvc3RuYW1l ICYmIHN0YXRfZG9uZSB8fCBzdGF0X2ZhaWwKZmkKCmlmIFtbICR7TE9DQUxFLCx9ID1+IHV0ZiBd XTsgdGhlbgoJc3RhdF9idXN5ICJTZXR0aW5nIENvbnNvbGVzIHRvIFVURi04IG1vZGUiCgkJIyBV VEYtOCBjb25zb2xlcyBhcmUgZGVmYXVsdCBzaW5jZSAyLjYuMjQga2VybmVsCgkJIyB0aGlzIGNv ZGUgaXMgbmVlZGVkIG5vdCBvbmx5IGZvciBvbGRlciBrZXJuZWxzLAoJCSMgYnV0IGFsc28gd2hl biB1c2VyIGhhcyBzZXQgdnQuZGVmYXVsdF91dGY4PTAgYnV0IExPQ0FMRSBpcyAqLlVURi04LgoJ CWZvciBpIGluIC9kZXYvdHR5WzAtOV0qOyBkbwoJCQlrYmRfbW9kZSAtdSA8ICR7aX0KCQkJcHJp bnRmICJcZSUlRyIgPiAke2l9CgkJZG9uZQoJCWVjaG8gMSA+fCAvc3lzL21vZHVsZS92dC9wYXJh bWV0ZXJzL2RlZmF1bHRfdXRmOAoJc3RhdF9kb25lCmVsc2UKCXN0YXRfYnVzeSAiU2V0dGluZyBD b25zb2xlcyB0byBsZWdhY3kgbW9kZSIKCQkjIG1ha2Ugbm9uLVVURi04IGNvbnNvbGVzIHdvcmsg b24gMi42LjI0IGFuZCBuZXdlciBrZXJuZWxzCgkJZm9yIGkgaW4gL2Rldi90dHlbMC05XSo7IGRv CgkJCWtiZF9tb2RlIC1hIDwgJHtpfQoJCQlwcmludGYgIlxlJSVAIiA+ICR7aX0KCQlkb25lCgkJ ZWNobyAwID58IC9zeXMvbW9kdWxlL3Z0L3BhcmFtZXRlcnMvZGVmYXVsdF91dGY4CglzdGF0X2Rv bmUKZmkKW1sgJEtFWU1BUCBdXSAmJgoJc3RhdHVzICJMb2FkaW5nIEtleWJvYXJkIE1hcDogJEtF WU1BUCIgbG9hZGtleXMgLXEgJEtFWU1BUAoKIyBTZXQgY29uc29sZSBmb250IGlmIHJlcXVpcmVk CnNldF9jb25zb2xlZm9udAoKc3RhdF9idXN5ICJTYXZpbmcgZG1lc2cgTG9nIgoJaWYgW1sgLWUg L3Byb2Mvc3lzL2tlcm5lbC9kbWVzZ19yZXN0cmljdCBdXSAmJgoJCSgoICQoPCAvcHJvYy9zeXMv a2VybmVsL2RtZXNnX3Jlc3RyaWN0KSA9PSAxICkpOyB0aGVuCgkJaW5zdGFsbCAtVG0gMDYwMCA8 KCBkbWVzZyApIC92YXIvbG9nL2RtZXNnLmxvZwoJZWxzZQoJCWluc3RhbGwgLVRtIDA2NDQgPCgg ZG1lc2cgKSAvdmFyL2xvZy9kbWVzZy5sb2cKCWZpCigoICQ/ID09IDAgKSkgJiYgc3RhdF9kb25l IHx8IHN0YXRfZmFpbAoKcnVuX2hvb2sgc3lzaW5pdF9lbmQKCiMgRW5kIG9mIGZpbGUKIyB2aW06 IHNldCB0cz0yIHN3PTIgbm9ldDoK --20cf307f337cb75a3b04aee4f263--