From eeb30821ea60f73bdd26534d3a82d75843816536 Mon Sep 17 00:00:00 2001 From: Sebastiaan van Stijn Date: Thu, 17 Dec 2015 15:39:50 +0100 Subject: [PATCH 01/13] Update AUTHORS Signed-off-by: Sebastiaan van Stijn (cherry picked from commit afeba190a5e533a6a276cd8f5889202389b8f9d3) --- .mailmap | 82 +++++++++- AUTHORS | 461 +++++++++++++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 518 insertions(+), 25 deletions(-) diff --git a/.mailmap b/.mailmap index 8348b4a810..685f8e6b76 100644 --- a/.mailmap +++ b/.mailmap @@ -93,7 +93,8 @@ Sven Dowideit <¨SvenDowideit@home.org.au¨> Sven Dowideit Sven Dowideit -Alexandr Morozov +Alexander Morozov +Alexander Morozov O.S. Tezer @@ -106,7 +107,9 @@ Roberto G. Hashioka Sridhar Ratnakumar Sridhar Ratnakumar Liang-Chi Hsieh -Aleksa Sarai +Aleksa Sarai +Aleksa Sarai +Aleksa Sarai Will Weaver Timothy Hobbs Nathan LeClaire @@ -117,24 +120,27 @@ Nathan LeClaire Matthew Heon + Francisco Carriedo - Brian Goff - + Hollie Teal -Jessica Frazelle Jessie Frazelle - +Jessica Frazelle +Jessica Frazelle +Jessica Frazelle +Jessica Frazelle +Jessica Frazelle @@ -142,6 +148,8 @@ Jessica Frazelle Jessie Frazelle Thomas LÉVEIL +Antonio Murdaca +Antonio Murdaca Antonio Murdaca Antonio Murdaca Antonio Murdaca @@ -151,8 +159,9 @@ Deshi Xiao Doug Davis Jacob Atzen Jeff Nickoloff - -John Howard (VM) John Howard +John Howard (VM) +John Howard (VM) +John Howard (VM) Madhu Venugopal Mary Anthony Mary Anthony moxiegirl @@ -169,3 +178,60 @@ bin liu John Howard (VM) jhowardmsft Ankush Agarwal Tangi COLIN tangicolin +Allen Sun +Adrien Gallouët + +Anuj Bahuguna +Anusha Ragunathan +Avi Miller +Brent Salisbury +Chander G +Chun Chen +Ying Li +Daehyeok Mun + +Daniel, Dao Quang Minh +Daniel Nephin +Dave Tucker +Doug Tangren +Frederick F. Kautz IV +Ben Golub +Harold Cooper +hsinko <21551195@zju.edu.cn> +Josh Hawn +Justin Cormack + + +Kamil Domański +Lei Jitang + +Linus Heckemann + +Lynda O'Leary + +Marianna Tessel +Michael Huettermann +Moysés Borges + +Nigel Poulton +Qiang Huang + +Boaz Shuster +Shuwei Hao + +Soshi Katsuta + +Stefan Berger + +Stephen Day + +Toli Kuznets +Tristan Carel + +Vincent Demeester + +Vishnu Kannan +xlgao-zju xlgao +yuchangchun y00277921 + + diff --git a/AUTHORS b/AUTHORS index cfc67e32fe..bfb128ca90 100644 --- a/AUTHORS +++ b/AUTHORS @@ -5,53 +5,73 @@ Aanand Prasad Aaron Davidson Aaron Feng Aaron Huslage +Aaron Lehmann Aaron Welch Abel Muiño +Abhijeet Kasurde Abhinav Ajgaonkar Abhishek Chanda Abin Shahab Adam Miller Adam Singer +Aditi Rajagopal Aditya Adria Casas Adrian Mouat +Adrian Oprea Adrien Folie +Adrien Gallouët Ahmed Kamal Ahmet Alp Balkan +Aidan Feldman Aidan Hobson Sayers AJ Bowen +Ajey Charantimath +ajneu +Akihiro Suda Al Tobey alambike Alan Thompson Albert Callarisa Albert Zhang -Aleksa Sarai +Aleksa Sarai Aleksandrs Fadins Alena Prokharchyk Alessandro Boch Alessio Biancalana +Alex Chan +Alex Crawford Alex Gaynor +Alex Samorukov Alex Warhawk +Alexander Artemenko Alexander Boyd Alexander Larsson Alexander Morozov Alexander Shopov -Alexandr Morozov +Alexandre Beslic +Alexandre González +Alexandru Sfirlogea Alexey Guskov Alexey Kotlyarov Alexey Shamrin Alexis THOMAS Allen Madsen +Allen Sun almoehi Alvin Richards amangoel +Amen Belayneh Amit Bakshi +Amit Krishnan Amy Lindburg Anand Patil AnandkumarPatel +Anatoly Borodin Anchal Agrawal Anders Janmyr Andre Dublin <81dublin@gmail.com> +Andre Granovsky Andrea Luzzardi Andrea Turli Andreas Köhler @@ -61,8 +81,11 @@ Andrew C. Bodine Andrew Clay Shafer Andrew Duckworth Andrew France +Andrew Gerrand +Andrew Guenther Andrew Kuklewicz Andrew Macgregor +Andrew Macpherson Andrew Martin Andrew Munsell Andrew Weiss @@ -70,7 +93,8 @@ Andrew Williams Andrews Medina Andrey Petrov Andrey Stolbovsky -André Martins +André Martins +andy Andy Chambers andy diller Andy Goldstein @@ -79,28 +103,43 @@ Andy Rothfusz Andy Smith Andy Wilson Anes Hasicic +Anil Belur Ankush Agarwal +Anonmily +Anthon van der Neut Anthony Baire Anthony Bishopric +Anthony Dahanne Anton Löfgren Anton Nikitin +Anton Polonskiy Anton Tiurin Antonio Murdaca Antony Messerli +Anuj Bahuguna +Anusha Ragunathan apocas ArikaChen Arnaud Porterie Arthur Barr Arthur Gautier +Artur Meyster +Arun Gupta Asbjørn Enge averagehuman Avi Das Avi Miller +ayoshitake +Azat Khuyiyakhmetov +Bardia Keyoumarsi Barnaby Gray Barry Allard Bartłomiej Piotrowski +Bastiaan Bakker bdevloed Ben Firshman +Ben Golub +Ben Hall Ben Sargent Ben Severson Ben Toews @@ -111,8 +150,10 @@ Bernerd Schaefer Bert Goethals Bharath Thiruveedula Bhiraj Butala +Bill W bin liu Blake Geno +Boaz Shuster bobby abbott boucher Bouke Haarsma @@ -126,6 +167,7 @@ Brendan Dixon Brent Salisbury Brett Kochendorfer Brian (bex) Exelbierd +Brian Bland Brian DeHamer Brian Dorsey Brian Flad @@ -133,6 +175,7 @@ Brian Goff Brian McCallister Brian Olsen Brian Shumate +Brian Torres-Gil Brice Jaglin Briehan Lombaard Bruno Bigras @@ -149,53 +192,84 @@ Byung Kang Caleb Spare Calen Pennington Cameron Boehmer +Cameron Spear +Campbell Allen +Candid Dauth +Carl Henrik Lunde Carl X. Su +Carlos Sanchez +Carol Fager-Higgins Cary Casey Bisson +Cedric Davies +Cezar Sa Espinola +Chad Swenson +Chance Zibolski +Chander G +Charles Chan Charles Hooper Charles Lindsay Charles Merriam +Charles Sarrazin Charlie Lewis +Chase Bolt +ChaYoung You Chen Chao Chen Hanxiao cheney90 Chewey Chia-liang Kao chli +Cholerae Hu Chris Alfonso Chris Armstrong +Chris Dituri +Chris Fordham Chris Khoo +Chris McKinnel +Chris Seto Chris Snow Chris St. Pierre Chris Stivers +Chris Swan Chris Wahl +Chris Weyl chrismckinnel Christian Berendt +Christian Böhme +Christian Rotzoll Christian Simon Christian Stefanescu ChristoperBiscardi +Christophe Mehay Christophe Troestler Christopher Currie +Christopher Jones Christopher Latham Christopher Rigor Christy Perez -Chun Chen +Chun Chen Ciro S. Costa Clayton Coleman +Clinton Kitson Coenraad Loubser Colin Dunklau Colin Rice Colin Walters +Collin Guarino Colm Hally +companycy Cory Forsyth cressie176 Cristian Staretu +cristiano balducci Cruceru Calin-Cristian Cyril F Daan van Berkel Daehyeok Mun Dafydd Crosby dalanlan +Damien Nozay Damjan Georgievski Dan Anolik Dan Buch @@ -203,6 +277,7 @@ Dan Cotora Dan Griffin Dan Hirsch Dan Keder +Dan Levy Dan McPherson Dan Stine Dan Walsh @@ -212,9 +287,10 @@ Daniel Exner Daniel Farrell Daniel Garcia Daniel Gasienica +Daniel Hiltgen Daniel Menet Daniel Mizyrycki -Daniel Nephin +Daniel Nephin Daniel Norberg Daniel Nordberg Daniel Robinson @@ -222,53 +298,76 @@ Daniel S Daniel Von Fange Daniel YC Lin Daniel Zhang -Daniel, Dao Quang Minh +Daniel, Dao Quang Minh Danny Berger Danny Yates Darren Coxall Darren Shepherd +Darren Stahl +Dave Barboza Dave Henderson +Dave Tucker David Anderson David Calavera David Corking +David Cramer +David Currie David Davis David Gageot David Gebler +David Lawrence David Mackey David Mat David Mcanulty David Pelaez David R. Jenni David Röthlisberger +David Sheets David Sissitka David Xia David Young Davide Ceretti Dawn Chen +dcylabs decadent Deng Guangxing Deni Bertovic +Denis Gladkikh +Denis Ollier +Dennis Docter Derek Derek +Derek Ch Derek McGowan Deric Crago Deshi Xiao +devmeyster +Devvyn Murphy +Dharmit Shah +Dieter Reuter +Dima Stopel +Dimitri John Ledkov Dinesh Subhraveti +Diogo Monica DiuDiugirl Djibril Koné dkumor Dmitry Demeshchuk Dmitry Gusev Dmitry V. Krivenok +Dmitry Vorobev Dolph Mathews Dominik Finkbeiner Dominik Honnef Don Kirkby Don Kjer Don Spaulding +Donald Huang +Dong Chen +Donovan Jones Doug Davis Doug MacEachern -doug tangren +Doug Tangren Dr Nic Williams dragon788 Dražen Lučanin @@ -278,9 +377,11 @@ Edmund Wagner Eiichi Tsukata Eike Herzbach Eivind Uggedal +Elan Ruusamäe Elias Probst Elijah Zupancic eluck +Elvir Kuric Emil Hernvall Emily Maier Emily Rose @@ -292,23 +393,30 @@ Eric Lee Eric Myhre Eric Paris Eric Rafaloff -Eric Windisch +Eric Rosenberg +Eric Sage +Eric Windisch Eric-Olivier Lamey +Erik Bray Erik Dubbelboer Erik Hollensbe Erik Inge Bolsø Erik Kristensen +Erik Weathers Erno Hopearuoho Erwin van der Koogh Euan Eugene Yakubovich eugenkrizo +evalle +Evan Allrich Evan Carmi Evan Hazlett Evan Krall Evan Phoenix Evan Wies Evgeny Vereshchagin +Ewa Czechowska Eystein Måløy Stenberg ezbercih Fabiano Rosas @@ -317,74 +425,108 @@ Fabio Rehm Fabrizio Regini Faiz Khan falmp +Fangyuan Gao <21551127@zju.edu.cn> Fareed Dudhia +Fathi Boudra +Federico Gimenez +Felix Geisendörfer +Felix Hupfeld Felix Rabe Felix Schindler Ferenc Szabo Fernando +Fero Volar Filipe Brandenburger +Filipe Oliveira +fl0yd Flavio Castelli FLGMwt +Florian Klein +Florian Maier Florian Weingarten +Florin Asavoaie +Francesc Campoy Francisco Carriedo Francisco Souza +Frank Groeneveld Frank Herrmann Frank Macreery Frank Rosquin Fred Lifton -Frederick F. Kautz IV +Frederick F. Kautz IV Frederik Loeffert +Frederik Nordahl Jul Sabroe Freek Kalter Félix Baylac-Jacqué +Félix Cantournet Gabe Rosenhouse Gabor Nagy Gabriel Monroy +GabrielNicolasAvellaneda Galen Sampson Gareth Rushgrove +Garrett Barboza Gaurav gautam, prasanna GennadySpb Geoffrey Bachelet George MacRorie George Xie +Georgi Hristozov Gereon Frey German DZ Gert van Valkenhoef Gianluca Borello +Gildas Cuisinier +gissehel Giuseppe Mazzotta Gleb Fotengauer-Malinovskiy Gleb M Borisov Glyn Normington +GoBella Goffert van Gool -golubbe Gosuke Miyashita +Gou Rao +Govinda Fichtner +Grant Reaber Graydon Hoare Greg Fausak Greg Thornton grossws grunny +gs11 +Guilhem Lettron Guilherme Salgado Guillaume Dufour Guillaume J. Charmes guoxiuyan Gurjeet Singh Guruprasad +gwx296173 Günter Zöchbauer +Hans Kristian Flaatten Hans Rødtang +Hao Zhang <21521210@zju.edu.cn> Harald Albers Harley Laue +Harold Cooper Harry Zhang He Simei +heartlock <21521209@zju.edu.cn> Hector Castro Henning Sprang Hobofan Hollie Teal Hong Xu +hsinko <21551195@zju.edu.cn> Hu Keping Hu Tao +Huanzhong Zhang Huayi Zhang Hugo Duncan +Hugo Marisco <0x6875676f@gmail.com> Hunter Blanks +huqun Huu Nguyen hyeongkyu.lee hyp3rdino @@ -392,16 +534,23 @@ Ian Babrou Ian Bishop Ian Bull Ian Calvert +Ian Lee Ian Main Ian Truslove Iavael +Icaro Seara Igor Dolzhikov +Ilkka Laukkanen +Ilya Dmitrichenko +Ilya Gusev ILYA Khlopotov imre Fitos inglesp +Ingo Gottwald Isaac Dupree Isabel Jimenez Isao Jonas +Ivan Babrou Ivan Fraixedes J Bruni J. Nunn @@ -412,12 +561,15 @@ Jake Champlin Jake Moshenko jakedt James Allen +James Carey James Carr James DeFelice James Harrison Fisher +James Kyburz James Kyle James Lal James Mills +James Nugent James Turnbull Jamie Hannaford Jamshid Afshar @@ -425,14 +577,19 @@ Jan Keromnes Jan Koprowski Jan Pazdziora Jan Toebes +Jan-Gerd Tenberge Jan-Jaap Driessen Jana Radhakrishnan +Januar Wayong Jared Biel Jaroslaw Zabiello jaseg +Jasmine Hegman Jason Divock Jason Giedymin +Jason Green Jason Hall +Jason Heiss Jason Livesay Jason McVetta Jason Plum @@ -440,23 +597,36 @@ Jason Shepherd Jason Smith Jason Sommer Jason Stangroome +jaxgeller +Jay Jay +Jay Kamat Jean-Baptiste Barth Jean-Baptiste Dalido Jean-Paul Calderone Jean-Tiare Le Bigot Jeff Anderson +Jeff Johnston Jeff Lindsay +Jeff Mickey +Jeff Minard Jeff Nickoloff Jeff Welch Jeffrey Bolle Jeffrey Morgan Jeffrey van Gogh +Jenny Gebske Jeremy Grosser +Jeremy Price +Jeremy Qian +Jeremy Unruh +Jeroen Jacobs Jesse Dearing Jesse Dubay -Jessica Frazelle +Jessica Frazelle Jezeniel Zapanta +jgeiger +Jian Zhang jianbosun Jilles Oldenbeuving Jim Alateras @@ -470,12 +640,16 @@ Jiří Župka jjy jmzwcn Joe Beda +Joe Doliner Joe Ferguson Joe Gordon Joe Shaw Joe Van Dyk Joel Friedly Joel Handwell +Joel Hansson +Joel Wurtz +Joey Geiger Joey Gibson Joffrey F Johan Euphrosine @@ -487,6 +661,7 @@ John Gardiner Myers John Gossman John Howard (VM) John OBrien III +John Starks John Tims John Warwick John Willis @@ -496,13 +671,16 @@ Jonathan A. Sternberg Jonathan Boulle Jonathan Camp Jonathan Dowland +Jonathan Lebon Jonathan McCrohan Jonathan Mueller Jonathan Pares Jonathan Rudenberg Joost Cassee +Jordan Jordan Arentsen Jordan Sissel +Jose Diaz-Gonzalez Joseph Anthony Pasquale Holsten Joseph Hager Joseph Kern @@ -512,101 +690,155 @@ Josh Poimboeuf Josiah Kiehl José Tomás Albornoz JP +jrabbit Julian Taylor Julien Barbier +Julien Bisconti Julien Bordellier Julien Dubois +Julien Pervillé Jun-Ru Chang +Jussi Nummelin +Justas Brazauskas +Justin Cormack Justin Force Justin Plock Justin Simonelis Jyrki Puttonen Jérôme Petazzoni Jörg Thalheim -Kamil Domanski +Kai Blin +Kai Qiang Wu(Kennan) +Kamil Domański +Kanstantsin Shautsou Karan Lyons +Kareem Khazem kargakis Karl Grzeszczak +Karol Duleba Katie McLaughlin Kato Kazuyoshi Katrina Owen Kawsar Saiyeed +kayrus Keli Hu Ken Cochrane Ken ICHIKAWA +Kenfe-Mickael Laventure +Kenjiro Nakayama Kent Johnson Kevin "qwazerty" Houdebert Kevin Clark Kevin J. Lynagh Kevin Menard +Kevin P. Kucharczyk +Kevin Shi Kevin Wallace Kevin Yap Keyvan Fatehi kies Kim BKC Carlbacker +Kim Eik Kimbro Staken +Kir Kolyshkin Kiran Gangadharan Kirill SIbirev knappe Kohei Tsuruta +Koichi Shiraishi Konrad Kleine Konstantin Pelykh Krasimir Georgiev +Kristian Haugene +Kristina Zabunova krrg +Kun Zhang +Kunal Kushwaha Kyle Conroy kyu Lachlan Coote +Lai Jiangshan Lajos Papp Lakshan Perera +Lalatendu Mohanty lalyos Lance Chen Lance Kinley Lars Kellogg-Stedman Lars R. Damerow +Laszlo Meszaros +Laurent Erignoux Laurie Voss +Leandro Siqueira +Lee, Meng-Han leeplay Lei Jitang Len Weincier +Lennie Leszek Kowalski +Levi Blackstone Levi Gross Lewis Marshall Lewis Peckover Liana Lo +Liang Mingqiang Liang-Chi Hsieh +liaoqingwei limsy +Linus Heckemann +Liran Tal +Liron Levin +Liu Bo Liu Hua +LIZAO LI Lloyd Dewolf Lokesh Mandvekar +longliqiang88 <394564827@qq.com> Lorenz Leutgeb Lorenzo Fontana Louis Opter +Luca Marturana +Luca Orlandi +Luca-Bogdan Grigorescu +Lucas Chan Luis Martínez de Bartolomé Izquierdo +Lukas Waslowski lukaspustina lukemarsden +Lynda O'Leary Lénaïc Huard Ma Shimiao Mabin +Madhav Puri Madhu Venugopal +Mageee <21521230.zju.edu.cn> Mahesh Tiyyagura malnick Malte Janduda +manchoz Manfred Touron Manfred Zabarauskas Manuel Meurer Manuel Woelker +mapk0y Marc Abramowitz Marc Kuo Marc Tamsky +Marcelo Salazar Marco Hennings Marcus Farkas Marcus Linke Marcus Ramberg Marek Goldmann Marian Marinov -Marianna +Marianna Tessel +Mario Loriedo +Marius Gundersen +Marius Sturm Marius Voila Mark Allen Mark McGranaghan +Mark McKinstry Mark West Marko Mikulicic Marko Tibold @@ -614,6 +846,8 @@ Markus Fix Martijn Dwars Martijn van Oosterhout Martin Honermeyer +Martin Kelly +Martin Mosegaard Amdisen Martin Redmond Mary Anthony Masahito Zembutsu @@ -626,16 +860,22 @@ Matt Bachmann Matt Bentley Matt Haggard Matt McCormick +Matt Moore +Matt Robenolt Matthew Heon Matthew Mayer Matthew Mueller Matthew Riley Matthias Klumpp Matthias Kühnle +Matthias Rampke +Matthieu Hauglustaine mattymo mattyw +Mauricio Garavaglia mauriyouth Max Shytikov +Maxim Ivanov Maxim Kulkin Maxim Treskin Maxime Petazzoni @@ -645,12 +885,18 @@ Megan Kostick Mehul Kar Mengdi Gao Mert Yazıcıoğlu +Micah Zoltu Michael A. Smith +Michael Bridgen Michael Brown Michael Chiang Michael Crosby +Michael Currie Michael Gorsuch +Michael Grauer Michael Hudson-Doyle +Michael Huettermann +Michael Käufl Michael Neale Michael Prokop Michael Scharf @@ -659,38 +905,62 @@ Michael Steinert Michael Thies Michael West Michal Fojtik +Michal Gebauer Michal Jemala Michal Minar Michaël Pailloncy +Michał Czeraszkiewicz Michiel@unhosted Miguel Angel Fernández +Miguel Morales Mihai Borobocea +Mihuleacc Sergiu +Mike Brown Mike Chelen +Mike Danese Mike Dillon +Mike Dougherty Mike Gaffney +Mike Goelzer Mike Leone Mike MacCana Mike Naberezny Mike Snitzer Mikhail Sobolev +Miloslav Trmač +mingqing Mingzhen Feng Mitch Capper +mlarcher +Mohammad Banikazemi +Mohammed Aaqib Ansari Mohit Soni +Morgan Bauer Morgante Pell +Morgy93 Morten Siebuhr -Moysés Borges +Morton Fox +Moysés Borges +mqliang Mrunal Patel +msabansal mschurenko Mustafa Akın +Muthukumar R Médi-Rémi Hashim +Nakul Pathak +Nalin Dahyabhai Nan Monnand Deng Naoki Orii Natalie Parker +Nate Brennand Nate Eagleson Nate Jones Nathan Hsieh Nathan Kleyn Nathan LeClaire +Nathan McCauley +Nathan Williams Neal McBurnett Nelson Chen Nghia Tran @@ -701,12 +971,17 @@ Nick Parker Nick Payne Nick Stenning Nick Stinemates +Nicolas Borboën Nicolas De loof Nicolas Dudebout Nicolas Goy Nicolas Kaiser +Nicolás Hock Isaza +Nigel Poulton NikolaMandic nikolas +Nishant Totla +NIWA Hideyuki noducks Nolan Darilek nponeccop @@ -717,10 +992,19 @@ OddBloke odk- Oguz Bilgic Oh Jinkyun +Ohad Schneider Ole Reifschneider +Oliver Neal Olivier Gambier +Olle Jonsson +Oriol Francès +Otto Kekäläinen +oyld +ozlerhakan +paetling pandrew panticz +Paolo G. Giarrusso Pascal Borreli Pascal Hartig Patrick Devine @@ -735,50 +1019,75 @@ Paul Bowsher Paul Hammond Paul Jimenez Paul Lietar +Paul Liljenberg Paul Morie Paul Nasrat Paul Weaver Pavel Lobashov +Pavel Pospisil +Pavel Sutyrin Pavel Tikhomirov Pavlos Ratis +Peeyush Gupta Peggy Li +Pei Su +Penghan Wang +perhapszzy@sina.com Peter Bourgon Peter Braden Peter Choi Peter Dave Hello +Peter Edge Peter Ericson Peter Esbensen +Peter Malmgren Peter Salvatore Peter Volpe Peter Waller Phil Phil Estes Phil Spitler +Philip Monroe +Philipp Wahala Philipp Weissensteiner Phillip Alexander +pidster Piergiuliano Bossi Pierre +Pierre Carrier Pierre Wacrenier Pierre-Alain RIVIERE Piotr Bogdan pixelistik Porjo +Poul Kjeldager Sørensen Pradeep Chhetri Prasanna Gautam +Prayag Verma Przemek Hejman pysqz +qg <1373319223@qq.com> +qhuang Qiang Huang +qq690388648 <690388648@qq.com> Quentin Brossard +Quentin Perez +Quentin Tayssier r0n22 Rafal Jeczalik Rafe Colton +Raghavendra K T Raghuram Devarakonda Rajat Pandit Rajdeep Dua +Ralle Ralph Bean Ramkumar Ramachandra Ramon van Alteren +Ray Tsang +ReadmeCritic Recursive Madman +Regan McCooey Remi Rampin Renato Riccieri Santos Zannon resouer @@ -789,54 +1098,87 @@ Richard Richard Burnison Richard Harvey Richard Metzler +Richard Scothern Richo Healey Rick Bradley Rick van de Loo Rick Wieman Rik Nijessen +Riku Voipio +Riley Guerin +Riyaz Faizullabhoy +Rob Vesse Robert Bachmann Robert Bittle Robert Obryk +Robert Stern +Robert Wallis Roberto G. Hashioka +Robin Naundorf +Robin Schneider Robin Speekenbrink robpc Rodrigo Vaz Roel Van Nyen Roger Peppe Rohit Jnagal +Rohit Kadam Roland Huß Roland Moriz +Roma Sokolov +Roman Strashkin Ron Smits root +root +root +Rory Hunter +Rory McCune +Ross Boucher Rovanion Luckey +Rozhnov Alexandr +rsmoorthy Rudolph Gottesheim +Rui Lopes Ryan Anderson Ryan Aslett +Ryan Belgrave Ryan Detzel Ryan Fowler +Ryan McLaughlin Ryan O'Donnell Ryan Seto Ryan Thomas +Ryan Trauntvein +Ryan Wallner +RyanDeng Rémy Greinhofer s. rannou s00318865 Sabin Basyal Sachin Joshi +Sagar Hani +Sally O'Malley Sam Abed Sam Alba Sam Bailey Sam J Sharpe +Sam Neirinck Sam Reis Sam Rijs +Sambuddha Basu Sami Wagiaalla Samuel Andaya +Samuel Dion-Girardeau +Samuel Karp Samuel PHAN Sankar சங்கர் Sanket Saurav +Santhosh Manohar sapphiredev Satnam Singh satoru Satoshi Amemiya +scaleoutsean Scott Bessler Scott Collier Scott Johnston @@ -844,6 +1186,7 @@ Scott Stamp Scott Walls sdreyesg Sean Cronin +Sean OMeara Sean P. Kane Sebastiaan van Steenis Sebastiaan van Stijn @@ -852,14 +1195,20 @@ SeongJae Park Seongyeol Lim Sergey Alekseev Sergey Evstifeev +Sevki Hasirci Shane Canon +Shane da Silva shaunol Shawn Landden Shawn Siefkas +Shekhar Gulati +Sheng Yang Shih-Yuan Lee Shijiang Wei Shishir Mahajan shuai-z +Shuwei Hao +Sian Lerk Lau sidharthamani Silas Sewell Simei He @@ -868,23 +1217,37 @@ Simon Leinen Simon Taranto Sindhu S Sjoerd Langkemper +Solganik Alexander Solomon Hykes Song Gao +Soshi Katsuta Soulou +Spencer Brown +Spencer Smith Sridatta Thatipamala Sridhar Ratnakumar Srini Brahmaroutu Srini Brahmaroutu Steeve Morin +Stefan Berger +Stefan J. Wernli Stefan Praszalowicz +Stefan Scherer +Stefan Staudenmeyer +Stefan Weil Stephen Crosby -Stephen J Day +Stephen Day +Stephen Rust +Steve Durrheimer Steve Francia Steve Koch Steven Burgess +Steven Iveson Steven Merrill Steven Richards Steven Taylor +Sujith Haridasan +Suryakumar Sudar Sven Dowideit Swapnil Daingade Sylvain Baubeau @@ -892,13 +1255,18 @@ Sylvain Bellemare Sébastien Sébastien Luttringer Sébastien Stormacq +TAGOMORI Satoshi tang0th Tangi COLIN Tatsuki Sugiura Tatsushi Inagaki +Taylor Jones +tbonza Ted M. Young Tehmasp Chaudhri Tejesh Mehta +terryding77 <550147740@qq.com> +tgic Thatcher Peskens theadactyl Thell 'Bo' Fowler @@ -906,33 +1274,48 @@ Thermionix Thijs Terlouw Thomas Bikeev Thomas Frössman +Thomas Gazagnaire Thomas Hansen Thomas LEVEIL Thomas Orozco Thomas Schroeter Thomas Sjögren +Thomas Swift Thomas Texier Tianon Gravi Tibor Vass Tiffany Low Tim Bosse +Tim Dettrick Tim Hockin Tim Ruffles Tim Smith Tim Terhorst +Tim Wang +Tim Waugh +Tim Wraight Timothy Hobbs tjwebb123 tobe Tobias Bieniek +Tobias Bradtke Tobias Gesellchen +Tobias Klauser Tobias Schmidt Tobias Schwab +Todd Crane Todd Lunter Todd Whiteman +Toli Kuznets +Tom Barlow +Tom Denham Tom Fotherby +Tom Howe Tom Hulihan Tom Maaswinkel +Tom X. Tobin Tomas Tomecek +Tomasz Kopczynski Tomasz Lipinski Tomasz Nurkiewicz Tommaso Visconti @@ -941,24 +1324,39 @@ Tonis Tiigi Tonny Xu Tony Daws Tony Miller +toogley Torstein Husebø tpng +tracylihui <793912329@qq.com> Travis Cline Travis Thieman Trent Ogren -Tristan Carel +Trevor +Trevor Pounds +trishnaguha +Tristan Carel +Troy Denton Tyler Brock Tzu-Jung Lee +Tõnis Tiigi Ulysse Carion unknown vagrant Vaidas Jablonskis +Veres Lajos vgeta Victor Coisne +Victor Costan +Victor I. Wood Victor Lyuboslavsky Victor Marmol +Victor Palma Victor Vieux +Victoria Bialas +Vijaya Kumar K +Viktor Stanchev Viktor Vojnovski +VinayRaghavanKS Vincent Batts Vincent Bernat Vincent Bernat @@ -976,15 +1374,22 @@ Vivek Goyal Vladimir Bulyga Vladimir Kirillov Vladimir Rutsky +Vladimir Varankin VladimirAus Vojtech Vitek (V-Teq) waitingkuo Walter Leibbrandt Walter Stanish +WANG Chao Ward Vandewege WarheadsSE Wayne Chang Wei-Ting Kuo +weiyan +Weiyang Zhu +Wen Cheng Ma +Wenxuan Zhao +Wenyu You <21551128@zju.edu.cn> Wes Morgan Will Dietz Will Rouesnel @@ -992,6 +1397,7 @@ Will Weaver willhf William Delanoue William Henry +William Hubbs William Riancho William Thurston WiseTrem @@ -1000,34 +1406,55 @@ Wolfgang Powisch wonderflow xamyzhao XiaoBing Jiang +Xiaoxu Chen +xiekeyang Xinzi Zhou Xiuming Chen +xlgao-zju xuzhaokui -y00277921 Yahya YAMADA Tsuyoshi Yan Feng Yang Bai +yangshukui Yasunori Mahata Yestin Sun +Yi EungJun +Yibai Zhang Yihang Ho +Ying Li Yohei Ueda +Yong Tang Yongzhi Pan +Youcef YEKHLEF Yuan Sun +yuchangchun +yuchengxia Yurii Rashkovskii +yuzou Zac Dover Zach Borboa +Zachary Jaffee Zain Memon Zaiste! Zane DeGraffenried Zefan Li Zen Lin(Zhinan Lin) +Zhang Kun Zhang Wei Zhang Wentao +Zhenan Ye <21551168@zju.edu.cn> +Zhu Guihua +Zhuoyun Wei Zilin Du zimbatm +Ziming Dong +ZJUshuaizhou <21551191@zju.edu.cn> +zmarouf Zoltan Tombol zqh +Zuhayr Elahi Álex González Álvaro Lázaro +Átila Camurça Alves 尹吉峰 From c17ee39d129ed206a326de8d94961cb839d3a1fb Mon Sep 17 00:00:00 2001 From: Sebastiaan van Stijn Date: Fri, 1 Apr 2016 13:31:44 -0700 Subject: [PATCH 02/13] Improve udev unsupported error message Show a different message if a dynamic binary is running, but doesn't have udev sync support. Signed-off-by: Sebastiaan van Stijn (cherry picked from commit b8f38747e60eb76e19f08129ab27cb808d21c22a) --- daemon/graphdriver/devmapper/deviceset.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/daemon/graphdriver/devmapper/deviceset.go b/daemon/graphdriver/devmapper/deviceset.go index cb3bf742a0..6245fdc2a4 100644 --- a/daemon/graphdriver/devmapper/deviceset.go +++ b/daemon/graphdriver/devmapper/deviceset.go @@ -22,6 +22,7 @@ import ( "github.com/Sirupsen/logrus" "github.com/docker/docker/daemon/graphdriver" + "github.com/docker/docker/dockerversion" "github.com/docker/docker/pkg/devicemapper" "github.com/docker/docker/pkg/idtools" "github.com/docker/docker/pkg/loopback" @@ -1656,7 +1657,12 @@ func (devices *DeviceSet) initDevmapper(doInit bool) error { // https://github.com/docker/docker/issues/4036 if supported := devicemapper.UdevSetSyncSupport(true); !supported { - logrus.Errorf("devmapper: Udev sync is not supported. This will lead to data loss and unexpected behavior. Install a dynamic binary to use devicemapper or select a different storage driver. For more information, see https://docs.docker.com/engine/reference/commandline/daemon/#daemon-storage-driver-option") + if dockerversion.IAmStatic == "true" { + logrus.Errorf("devmapper: Udev sync is not supported. This will lead to data loss and unexpected behavior. Install a dynamic binary to use devicemapper or select a different storage driver. For more information, see https://docs.docker.com/engine/reference/commandline/daemon/#daemon-storage-driver-option") + } else { + logrus.Errorf("devmapper: Udev sync is not supported. This will lead to data loss and unexpected behavior. Install a more recent version of libdevmapper or select a different storage driver. For more information, see https://docs.docker.com/engine/reference/commandline/daemon/#daemon-storage-driver-option") + } + if !devices.overrideUdevSyncCheck { return graphdriver.ErrNotSupported } From cc5c9013d90ea6679fc74c32f6db388e7be33e64 Mon Sep 17 00:00:00 2001 From: Tonis Tiigi Date: Mon, 4 Apr 2016 14:27:44 -0700 Subject: [PATCH 03/13] Define readonly/mask paths in spec MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This vendors in new spec/runc that supports setting readonly and masked paths in the configuration. Using this allows us to make an exception for `—-privileged`. Signed-off-by: Tonis Tiigi (cherry picked from commit 3f81b4935292d5daedea9de4e2db0895986115da) --- Dockerfile | 2 +- Dockerfile.aarch64 | 2 +- Dockerfile.armhf | 2 +- Dockerfile.gccgo | 3 +-- Dockerfile.ppc64le | 2 +- Dockerfile.s390x | 2 +- Dockerfile.simple | 2 +- daemon/oci_linux.go | 8 +++++--- hack/vendor.sh | 2 +- integration-cli/docker_cli_run_test.go | 2 +- oci/defaults_linux.go | 14 ++++++++++++++ .../opencontainers/specs/specs-go/config.go | 15 ++++++++++----- .../opencontainers/specs/specs-go/version.go | 4 ++-- 13 files changed, 40 insertions(+), 20 deletions(-) diff --git a/Dockerfile b/Dockerfile index d8215c69dc..97b6b2b61c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -248,7 +248,7 @@ RUN set -x \ && rm -rf "$GOPATH" # Install runc -ENV RUNC_COMMIT 0c1c615ebd6a15545b6a82ead01d2745ea49b242 +ENV RUNC_COMMIT 6c88a526cdd74aab90cc88018368c452c7294a06 RUN set -x \ && export GOPATH="$(mktemp -d)" \ && git clone git://github.com/opencontainers/runc.git "$GOPATH/src/github.com/opencontainers/runc" \ diff --git a/Dockerfile.aarch64 b/Dockerfile.aarch64 index c783fe2295..51b69c363c 100644 --- a/Dockerfile.aarch64 +++ b/Dockerfile.aarch64 @@ -181,7 +181,7 @@ RUN set -x \ && rm -rf "$GOPATH" # Install runc -ENV RUNC_COMMIT 0c1c615ebd6a15545b6a82ead01d2745ea49b242 +ENV RUNC_COMMIT 6c88a526cdd74aab90cc88018368c452c7294a06 RUN set -x \ && export GOPATH="$(mktemp -d)" \ && git clone git://github.com/opencontainers/runc.git "$GOPATH/src/github.com/opencontainers/runc" \ diff --git a/Dockerfile.armhf b/Dockerfile.armhf index 5d3d4f7a8a..555f96c555 100644 --- a/Dockerfile.armhf +++ b/Dockerfile.armhf @@ -198,7 +198,7 @@ RUN set -x \ && rm -rf "$GOPATH" # Install runc -ENV RUNC_COMMIT 0c1c615ebd6a15545b6a82ead01d2745ea49b242 +ENV RUNC_COMMIT 6c88a526cdd74aab90cc88018368c452c7294a06 RUN set -x \ && export GOPATH="$(mktemp -d)" \ && git clone git://github.com/opencontainers/runc.git "$GOPATH/src/github.com/opencontainers/runc" \ diff --git a/Dockerfile.gccgo b/Dockerfile.gccgo index 99667f8a65..97bc04d53f 100644 --- a/Dockerfile.gccgo +++ b/Dockerfile.gccgo @@ -74,13 +74,12 @@ WORKDIR /go/src/github.com/docker/docker ENV DOCKER_BUILDTAGS apparmor seccomp selinux # Install runc -ENV RUNC_COMMIT 0c1c615ebd6a15545b6a82ead01d2745ea49b242 +ENV RUNC_COMMIT 6c88a526cdd74aab90cc88018368c452c7294a06 RUN set -x \ && export GOPATH="$(mktemp -d)" \ && git clone git://github.com/opencontainers/runc.git "$GOPATH/src/github.com/opencontainers/runc" \ && cd "$GOPATH/src/github.com/opencontainers/runc" \ && git checkout -q "$RUNC_COMMIT" \ - && (find . -name "*_ffjson.go" | xargs rm) \ && make static BUILDTAGS="seccomp apparmor selinux" \ && cp runc /usr/local/bin/docker-runc diff --git a/Dockerfile.ppc64le b/Dockerfile.ppc64le index 91dadec389..466074f7eb 100644 --- a/Dockerfile.ppc64le +++ b/Dockerfile.ppc64le @@ -199,7 +199,7 @@ RUN set -x \ && rm -rf "$GOPATH" # Install runc -ENV RUNC_COMMIT 0c1c615ebd6a15545b6a82ead01d2745ea49b242 +ENV RUNC_COMMIT 6c88a526cdd74aab90cc88018368c452c7294a06 RUN set -x \ && export GOPATH="$(mktemp -d)" \ && git clone git://github.com/opencontainers/runc.git "$GOPATH/src/github.com/opencontainers/runc" \ diff --git a/Dockerfile.s390x b/Dockerfile.s390x index 53cdcbb8c8..12d30f7bd1 100644 --- a/Dockerfile.s390x +++ b/Dockerfile.s390x @@ -178,7 +178,7 @@ RUN set -x \ && rm -rf "$GOPATH" # Install runc -ENV RUNC_COMMIT 0c1c615ebd6a15545b6a82ead01d2745ea49b242 +ENV RUNC_COMMIT 6c88a526cdd74aab90cc88018368c452c7294a06 RUN set -x \ && export GOPATH="$(mktemp -d)" \ && git clone git://github.com/opencontainers/runc.git "$GOPATH/src/github.com/opencontainers/runc" \ diff --git a/Dockerfile.simple b/Dockerfile.simple index b064aa9ec0..2f913543fd 100644 --- a/Dockerfile.simple +++ b/Dockerfile.simple @@ -30,7 +30,7 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ && rm -rf /var/lib/apt/lists/* # Install runc -ENV RUNC_COMMIT 0c1c615ebd6a15545b6a82ead01d2745ea49b242 +ENV RUNC_COMMIT 6c88a526cdd74aab90cc88018368c452c7294a06 RUN set -x \ && export GOPATH="$(mktemp -d)" \ && git clone git://github.com/opencontainers/runc.git "$GOPATH/src/github.com/opencontainers/runc" \ diff --git a/daemon/oci_linux.go b/daemon/oci_linux.go index 34602e2223..ca9ed020f3 100644 --- a/daemon/oci_linux.go +++ b/daemon/oci_linux.go @@ -536,6 +536,8 @@ func setMounts(daemon *Daemon, s *specs.Spec, c *container.Container, mounts []c } } } + s.Linux.ReadonlyPaths = nil + s.Linux.MaskedPaths = nil } // TODO: until a kernel/mount solution exists for handling remount in a user namespace, @@ -660,10 +662,10 @@ func (daemon *Daemon) createSpec(c *container.Container) (*libcontainerd.Spec, e if apparmor.IsEnabled() { appArmorProfile := "docker-default" - if c.HostConfig.Privileged { - appArmorProfile = "unconfined" - } else if len(c.AppArmorProfile) > 0 { + if len(c.AppArmorProfile) > 0 { appArmorProfile = c.AppArmorProfile + } else if c.HostConfig.Privileged { + appArmorProfile = "unconfined" } s.Process.ApparmorProfile = appArmorProfile } diff --git a/hack/vendor.sh b/hack/vendor.sh index 1386ffdcd9..e27009c370 100755 --- a/hack/vendor.sh +++ b/hack/vendor.sh @@ -60,7 +60,7 @@ clone git github.com/docker/go v1.5.1-1-1-gbaf439e clone git github.com/agl/ed25519 d2b94fd789ea21d12fac1a4443dd3a3f79cda72c clone git github.com/opencontainers/runc 7b6c4c418d5090f4f11eee949fdf49afd15838c9 # libcontainer -clone git github.com/opencontainers/specs 3ce138b1934bf227a418e241ead496c383eaba1c # specs +clone git github.com/opencontainers/specs 93ca97e83ca7fb4fba6d9e30d5470f99ddc02d11 # specs clone git github.com/seccomp/libseccomp-golang 1b506fc7c24eec5a3693cdcbed40d9c226cfc6a1 # libcontainer deps (see src/github.com/opencontainers/runc/Godeps/Godeps.json) clone git github.com/coreos/go-systemd v4 diff --git a/integration-cli/docker_cli_run_test.go b/integration-cli/docker_cli_run_test.go index ea95928a70..458d153963 100644 --- a/integration-cli/docker_cli_run_test.go +++ b/integration-cli/docker_cli_run_test.go @@ -1109,7 +1109,7 @@ func (s *DockerSuite) TestRunProcNotWritableInNonPrivilegedContainers(c *check.C func (s *DockerSuite) TestRunProcWritableInPrivilegedContainers(c *check.C) { // Not applicable for Windows as there is no concept of --privileged testRequires(c, DaemonIsLinux, NotUserNamespace) - if _, code := dockerCmd(c, "run", "--privileged", "busybox", "sh", "-c", "umount /proc/sysrq-trigger && touch /proc/sysrq-trigger"); code != 0 { + if _, code := dockerCmd(c, "run", "--privileged", "busybox", "sh", "-c", "touch /proc/sysrq-trigger"); code != 0 { c.Fatalf("proc should be writable in privileged container") } } diff --git a/oci/defaults_linux.go b/oci/defaults_linux.go index ae5db12804..9ee7546193 100644 --- a/oci/defaults_linux.go +++ b/oci/defaults_linux.go @@ -79,6 +79,20 @@ func DefaultSpec() specs.Spec { } s.Linux = specs.Linux{ + MaskedPaths: []string{ + "/proc/kcore", + "/proc/latency_stats", + "/proc/timer_stats", + "/proc/sched_debug", + }, + ReadonlyPaths: []string{ + "/proc/asound", + "/proc/bus", + "/proc/fs", + "/proc/irq", + "/proc/sys", + "/proc/sysrq-trigger", + }, Namespaces: []specs.Namespace{ {Type: "mount"}, {Type: "network"}, diff --git a/vendor/src/github.com/opencontainers/specs/specs-go/config.go b/vendor/src/github.com/opencontainers/specs/specs-go/config.go index ba66ff1c63..3e5d499e88 100644 --- a/vendor/src/github.com/opencontainers/specs/specs-go/config.go +++ b/vendor/src/github.com/opencontainers/specs/specs-go/config.go @@ -96,9 +96,10 @@ type Mount struct { // Hook specifies a command that is run at a particular event in the lifecycle of a container type Hook struct { - Path string `json:"path"` - Args []string `json:"args,omitempty"` - Env []string `json:"env,omitempty"` + Path string `json:"path"` + Args []string `json:"args,omitempty"` + Env []string `json:"env,omitempty"` + Timeout *int `json:"timeout,omitempty"` } // Hooks for container setup and teardown @@ -128,13 +129,17 @@ type Linux struct { // If resources are specified, the cgroups at CgroupsPath will be updated based on resources. CgroupsPath *string `json:"cgroupsPath,omitempty"` // Namespaces contains the namespaces that are created and/or joined by the container - Namespaces []Namespace `json:"namespaces"` + Namespaces []Namespace `json:"namespaces,omitempty"` // Devices are a list of device nodes that are created for the container - Devices []Device `json:"devices"` + Devices []Device `json:"devices,omitempty"` // Seccomp specifies the seccomp security settings for the container. Seccomp *Seccomp `json:"seccomp,omitempty"` // RootfsPropagation is the rootfs mount propagation mode for the container. RootfsPropagation string `json:"rootfsPropagation,omitempty"` + // MaskedPaths masks over the provided paths inside the container. + MaskedPaths []string `json:"maskedPaths,omitempty"` + // ReadonlyPaths sets the provided paths as RO inside the container. + ReadonlyPaths []string `json:"readonlyPaths,omitempty"` } // Namespace is the configuration for a Linux namespace diff --git a/vendor/src/github.com/opencontainers/specs/specs-go/version.go b/vendor/src/github.com/opencontainers/specs/specs-go/version.go index f11c897896..27f45e08b3 100644 --- a/vendor/src/github.com/opencontainers/specs/specs-go/version.go +++ b/vendor/src/github.com/opencontainers/specs/specs-go/version.go @@ -6,12 +6,12 @@ const ( // VersionMajor is for an API incompatible changes VersionMajor = 0 // VersionMinor is for functionality in a backwards-compatible manner - VersionMinor = 4 + VersionMinor = 5 // VersionPatch is for backwards-compatible bug fixes VersionPatch = 0 // VersionDev indicates development branch. Releases will be empty string. - VersionDev = "" + VersionDev = "-dev" ) // Version is the specification version that the package types support. From e941f698da7a0683c8f19d6f386ede4fd9bf5d96 Mon Sep 17 00:00:00 2001 From: mikelinjie <294893458@qq.com> Date: Wed, 16 Mar 2016 15:26:57 +0800 Subject: [PATCH 04/13] make the cache miss clear Signed-off-by: mikelinjie <294893458@qq.com> Signed-off-by: Sebastiaan van Stijn (cherry picked from commit 66b8714da4e92b3587cbbf25116541f4de63169e) --- docs/reference/builder.md | 37 +++++++++++++++++++++++++++++-------- 1 file changed, 29 insertions(+), 8 deletions(-) diff --git a/docs/reference/builder.md b/docs/reference/builder.md index 5819ea36fd..a932276b75 100644 --- a/docs/reference/builder.md +++ b/docs/reference/builder.md @@ -1174,8 +1174,10 @@ To use these, simply pass them on the command line using the `--build-arg `ARG` variables are not persisted into the built image as `ENV` variables are. However, `ARG` variables do impact the build cache in similar ways. If a Dockerfile defines an `ARG` variable whose value is different from a previous -build, then a "cache miss" occurs upon its first usage, not its declaration. -For example, consider this Dockerfile: +build, then a "cache miss" occurs upon first use of the `ARG` variable. The +declaration of the `ARG` variable does not count as a use. + +For example, consider these two Dockerfile: ``` 1 FROM ubuntu @@ -1183,12 +1185,17 @@ For example, consider this Dockerfile: 3 RUN echo $CONT_IMG_VER ``` -If you specify `--build-arg CONT_IMG_VER=` on the command line the -specification on line 2 does not cause a cache miss; line 3 does cause a cache -miss. The definition on line 2 has no impact on the resulting image. The `RUN` -on line 3 executes a command and in doing so defines a set of environment -variables, including `CONT_IMG_VER`. At that point, the `ARG` variable may -impact the resulting image, so a cache miss occurs. +``` +1 FROM ubuntu +2 ARG CONT_IMG_VER +3 RUN echo hello +``` + +If you specify `--build-arg CONT_IMG_VER=` on the command line, in both +cases, the specification on line 2 does not cause a cache miss; line 3 does +cause a cache miss.`ARG CONT_IMG_VER` causes the RUN line to be identified +as the same as running `CONT_IMG_VER=` echo hello, so if the `` +changes, we get a cache miss. Consider another example under the same command line: @@ -1203,6 +1210,20 @@ the variable's value in the `ENV` references the `ARG` variable and that variable is changed through the command line. In this example, the `ENV` command causes the image to include the value. +If an `ENV` instruction overrides an `ARG` instruction of the same name, like +this Dockerfile: + +``` +1 FROM ubuntu +2 ARG CONT_IMG_VER +3 ENV CONT_IMG_VER hello +4 RUN echo $CONT_IMG_VER +``` + +Line 3 does not cause a cache miss because the value of `CONT_IMG_VER` is a +constant (`hello`). As a result, the environment variables and values used on +the `RUN` (line 4) doesn't change between builds. + ## ONBUILD ONBUILD [INSTRUCTION] From 651cace5eefbe07734ef285e77b62a6a7e8ce980 Mon Sep 17 00:00:00 2001 From: Lei Jitang Date: Wed, 6 Apr 2016 21:52:10 +0800 Subject: [PATCH 05/13] Correct the description of --group-add in run.md Signed-off-by: Lei Jitang (cherry picked from commit 9a7f2e726885386f57d115f8652b0ae87b20dce6) --- docs/reference/run.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/reference/run.md b/docs/reference/run.md index 62cd5c888a..170dd35079 100644 --- a/docs/reference/run.md +++ b/docs/reference/run.md @@ -1056,7 +1056,7 @@ Both flags take limits in the `:` format. Both read and write rates must be a positive integer. ## Additional groups - --group-add: Add Linux capabilities + --group-add: Add additional groups to run as By default, the docker container process runs with the supplementary groups looked up for the specified user. If one wants to add more to that list of groups, then From 460806241c687b92e4f6d6e507aba6d0ad196c13 Mon Sep 17 00:00:00 2001 From: Yong Tang Date: Fri, 1 Apr 2016 01:57:40 +0000 Subject: [PATCH 06/13] Remote API docs give incorrect example for creating a container with volumes. This fix tries to address the issue mentioned in Docker Remote API where the examples for creating a container (`POST /containers/create`) with volumes were incorrect. In the previous remote API document, the `Mounts` fields was used for volume creation yet since v1.20 `Volumes` should be used. This fix fixes #21335. Signed-off-by: Yong Tang (cherry picked from commit 4ed20402580c4476360736f2bdaa2604dc76cd54) --- docs/reference/api/docker_remote_api_v1.20.md | 14 +++++--------- docs/reference/api/docker_remote_api_v1.21.md | 14 +++++--------- docs/reference/api/docker_remote_api_v1.22.md | 14 ++------------ docs/reference/api/docker_remote_api_v1.23.md | 14 ++------------ 4 files changed, 14 insertions(+), 42 deletions(-) diff --git a/docs/reference/api/docker_remote_api_v1.20.md b/docs/reference/api/docker_remote_api_v1.20.md index 7a42a0d9e9..ac0fc80813 100644 --- a/docs/reference/api/docker_remote_api_v1.20.md +++ b/docs/reference/api/docker_remote_api_v1.20.md @@ -154,14 +154,9 @@ Create a container "com.example.license": "GPL", "com.example.version": "1.0" }, - "Mounts": [ - { - "Source": "/data", - "Destination": "/data", - "Mode": "ro,Z", - "RW": false - } - ], + "Volumes": { + "/volumes/data": {} + } "WorkingDir": "", "NetworkDisabled": false, "MacAddress": "12:34:56:78:9a:bc", @@ -245,7 +240,8 @@ Json Parameters: - **Entrypoint** - Set the entry point for the container as a string or an array of strings. - **Image** - A string specifying the image name to use for the container. -- **Mounts** - An array of mount points in the container. +- **Volumes** - An object mapping mount point paths (strings) inside the + container to empty objects. - **WorkingDir** - A string specifying the working directory for commands to run in. - **NetworkDisabled** - Boolean value, when true disables networking for the diff --git a/docs/reference/api/docker_remote_api_v1.21.md b/docs/reference/api/docker_remote_api_v1.21.md index 04fec34573..6b3ac2e825 100644 --- a/docs/reference/api/docker_remote_api_v1.21.md +++ b/docs/reference/api/docker_remote_api_v1.21.md @@ -158,14 +158,9 @@ Create a container "com.example.license": "GPL", "com.example.version": "1.0" }, - "Mounts": [ - { - "Source": "/data", - "Destination": "/data", - "Mode": "ro,Z", - "RW": false - } - ], + "Volumes": { + "/volumes/data": {} + } "WorkingDir": "", "NetworkDisabled": false, "MacAddress": "12:34:56:78:9a:bc", @@ -256,7 +251,8 @@ Json Parameters: - **Entrypoint** - Set the entry point for the container as a string or an array of strings. - **Image** - A string specifying the image name to use for the container. -- **Mounts** - An array of mount points in the container. +- **Volumes** - An object mapping mount point paths (strings) inside the + container to empty objects. - **WorkingDir** - A string specifying the working directory for commands to run in. - **NetworkDisabled** - Boolean value, when true disables networking for the diff --git a/docs/reference/api/docker_remote_api_v1.22.md b/docs/reference/api/docker_remote_api_v1.22.md index 4aa62597ed..badd170566 100644 --- a/docs/reference/api/docker_remote_api_v1.22.md +++ b/docs/reference/api/docker_remote_api_v1.22.md @@ -246,17 +246,6 @@ Create a container "com.example.license": "GPL", "com.example.version": "1.0" }, - "Mounts": [ - { - "Name": "fac362...80535", - "Source": "/data", - "Destination": "/data", - "Driver": "local", - "Mode": "ro,Z", - "RW": false, - "Propagation": "" - } - ], "Volumes": { "/volumes/data": {} } @@ -366,7 +355,8 @@ Json Parameters: - **Entrypoint** - Set the entry point for the container as a string or an array of strings. - **Image** - A string specifying the image name to use for the container. -- **Mounts** - An array of mount points in the container. +- **Volumes** - An object mapping mount point paths (strings) inside the + container to empty objects. - **WorkingDir** - A string specifying the working directory for commands to run in. - **NetworkDisabled** - Boolean value, when true disables networking for the diff --git a/docs/reference/api/docker_remote_api_v1.23.md b/docs/reference/api/docker_remote_api_v1.23.md index 27aa30da00..d235e4219c 100644 --- a/docs/reference/api/docker_remote_api_v1.23.md +++ b/docs/reference/api/docker_remote_api_v1.23.md @@ -265,17 +265,6 @@ Create a container "com.example.license": "GPL", "com.example.version": "1.0" }, - "Mounts": [ - { - "Name": "fac362...80535", - "Source": "/data", - "Destination": "/data", - "Driver": "local", - "Mode": "ro,Z", - "RW": false, - "Propagation": "" - } - ], "Volumes": { "/volumes/data": {} } @@ -386,7 +375,8 @@ Json Parameters: - **Entrypoint** - Set the entry point for the container as a string or an array of strings. - **Image** - A string specifying the image name to use for the container. -- **Mounts** - An array of mount points in the container. +- **Volumes** - An object mapping mount point paths (strings) inside the + container to empty objects. - **WorkingDir** - A string specifying the working directory for commands to run in. - **NetworkDisabled** - Boolean value, when true disables networking for the From 9e62a2aad2421a1a595560ca1f6b0478c05cb6d5 Mon Sep 17 00:00:00 2001 From: Yi EungJun Date: Wed, 6 Apr 2016 15:37:49 +0900 Subject: [PATCH 07/13] Fix incorrect markdown rendering The docker document site [1] rendered the list of plugin implements incorrectly. [1]: https://docs.docker.com/engine/extend/plugin_api Signed-off-by: Yi EungJun (cherry picked from commit 4a698c9c43804df1d6096e09ff682477efae3431) --- docs/extend/plugin_api.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/docs/extend/plugin_api.md b/docs/extend/plugin_api.md index 1e7ee24361..a799a13520 100644 --- a/docs/extend/plugin_api.md +++ b/docs/extend/plugin_api.md @@ -169,9 +169,10 @@ Responds with a list of Docker subsystems which this plugin implements. After activation, the plugin will then be sent events from this subsystem. Possible values are: - - [`authz`](plugins_authorization.md) - - [`NetworkDriver`](plugins_network.md) - - [`VolumeDriver`](plugins_volume.md) + +* [`authz`](plugins_authorization.md) +* [`NetworkDriver`](plugins_network.md) +* [`VolumeDriver`](plugins_volume.md) ## Plugin retries From f685fe1a9988af8a49225a6e574c231e2a19dc25 Mon Sep 17 00:00:00 2001 From: Santhosh Manohar Date: Tue, 5 Apr 2016 16:39:16 -0700 Subject: [PATCH 08/13] Vendor Libnetwork v0.7.0-rc.3 Signed-off-by: Santhosh Manohar (cherry picked from commit 5b892819a60a0a91c168c6a2c1e22c958be143ca) --- hack/vendor.sh | 2 +- .../github.com/docker/libnetwork/CHANGELOG.md | 10 +++ .../libnetwork/drivers/bridge/bridge_store.go | 4 + .../libnetwork/drivers/overlay/ov_network.go | 5 ++ .../libnetwork/ipams/builtin/builtin_unix.go | 4 + .../docker/libnetwork/ipamutils/utils.go | 16 +++- .../libnetwork/ipamutils/utils_linux.go | 2 + .../github.com/docker/libnetwork/resolver.go | 86 ++++++++++++++++--- 8 files changed, 114 insertions(+), 15 deletions(-) diff --git a/hack/vendor.sh b/hack/vendor.sh index e27009c370..10fb59f634 100755 --- a/hack/vendor.sh +++ b/hack/vendor.sh @@ -29,7 +29,7 @@ clone git github.com/RackSec/srslog 259aed10dfa74ea2961eddd1d9847619f6e98837 clone git github.com/imdario/mergo 0.2.1 #get libnetwork packages -clone git github.com/docker/libnetwork v0.7.0-rc.1 +clone git github.com/docker/libnetwork v0.7.0-rc.3 clone git github.com/armon/go-metrics eb0af217e5e9747e41dd5303755356b62d28e3ec clone git github.com/hashicorp/go-msgpack 71c2886f5a673a35f909803f38ece5810165097b clone git github.com/hashicorp/memberlist 9a1e242e454d2443df330bdd51a436d5a9058fc4 diff --git a/vendor/src/github.com/docker/libnetwork/CHANGELOG.md b/vendor/src/github.com/docker/libnetwork/CHANGELOG.md index a91f791228..c690cf095e 100644 --- a/vendor/src/github.com/docker/libnetwork/CHANGELOG.md +++ b/vendor/src/github.com/docker/libnetwork/CHANGELOG.md @@ -1,5 +1,15 @@ # Changelog +## 0.7.0-rc.3 (2016-04-05) +- Revert fix for default gateway endoint join/leave. Needs to be reworked. +- Persist the network internal mode for bridge networks + +## 0.7.0-rc.2 (2016-04-05) +- Fixes https://github.com/docker/libnetwork/issues/1070 +- Move IPAM resource initialization out of init() +- Initialize overlay driver before network delete +- Fix the handling for default gateway Endpoint join/lean + ## 0.7.0-rc.1 (2016-03-30) - Fixes https://github.com/docker/libnetwork/issues/985 - Fixes https://github.com/docker/libnetwork/issues/945 diff --git a/vendor/src/github.com/docker/libnetwork/drivers/bridge/bridge_store.go b/vendor/src/github.com/docker/libnetwork/drivers/bridge/bridge_store.go index 066469adc9..eca72bd30b 100644 --- a/vendor/src/github.com/docker/libnetwork/drivers/bridge/bridge_store.go +++ b/vendor/src/github.com/docker/libnetwork/drivers/bridge/bridge_store.go @@ -95,6 +95,7 @@ func (ncfg *networkConfiguration) MarshalJSON() ([]byte, error) { nMap["EnableIPMasquerade"] = ncfg.EnableIPMasquerade nMap["EnableICC"] = ncfg.EnableICC nMap["Mtu"] = ncfg.Mtu + nMap["Internal"] = ncfg.Internal nMap["DefaultBridge"] = ncfg.DefaultBridge nMap["DefaultBindingIP"] = ncfg.DefaultBindingIP.String() nMap["DefaultGatewayIPv4"] = ncfg.DefaultGatewayIPv4.String() @@ -143,6 +144,9 @@ func (ncfg *networkConfiguration) UnmarshalJSON(b []byte) error { ncfg.EnableIPMasquerade = nMap["EnableIPMasquerade"].(bool) ncfg.EnableICC = nMap["EnableICC"].(bool) ncfg.Mtu = int(nMap["Mtu"].(float64)) + if v, ok := nMap["Internal"]; ok { + ncfg.Internal = v.(bool) + } return nil } diff --git a/vendor/src/github.com/docker/libnetwork/drivers/overlay/ov_network.go b/vendor/src/github.com/docker/libnetwork/drivers/overlay/ov_network.go index 9d118ffb4e..18e527a2ba 100644 --- a/vendor/src/github.com/docker/libnetwork/drivers/overlay/ov_network.go +++ b/vendor/src/github.com/docker/libnetwork/drivers/overlay/ov_network.go @@ -104,6 +104,11 @@ func (d *driver) DeleteNetwork(nid string) error { return fmt.Errorf("invalid network id") } + // Make sure driver resources are initialized before proceeding + if err := d.configure(); err != nil { + return err + } + n := d.network(nid) if n == nil { return fmt.Errorf("could not find network with id %s", nid) diff --git a/vendor/src/github.com/docker/libnetwork/ipams/builtin/builtin_unix.go b/vendor/src/github.com/docker/libnetwork/ipams/builtin/builtin_unix.go index 311183fc87..c47674aaf0 100644 --- a/vendor/src/github.com/docker/libnetwork/ipams/builtin/builtin_unix.go +++ b/vendor/src/github.com/docker/libnetwork/ipams/builtin/builtin_unix.go @@ -8,6 +8,7 @@ import ( "github.com/docker/libnetwork/datastore" "github.com/docker/libnetwork/ipam" "github.com/docker/libnetwork/ipamapi" + "github.com/docker/libnetwork/ipamutils" ) // Init registers the built-in ipam service with libnetwork @@ -28,6 +29,9 @@ func Init(ic ipamapi.Callback, l, g interface{}) error { return fmt.Errorf("incorrect global datastore passed to built-in ipam init") } } + + ipamutils.InitNetworks() + a, err := ipam.NewAllocator(localDs, globalDs) if err != nil { return err diff --git a/vendor/src/github.com/docker/libnetwork/ipamutils/utils.go b/vendor/src/github.com/docker/libnetwork/ipamutils/utils.go index 283e003b5c..798a3afa3e 100644 --- a/vendor/src/github.com/docker/libnetwork/ipamutils/utils.go +++ b/vendor/src/github.com/docker/libnetwork/ipamutils/utils.go @@ -1,7 +1,10 @@ // Package ipamutils provides utililty functions for ipam management package ipamutils -import "net" +import ( + "net" + "sync" +) var ( // PredefinedBroadNetworks contains a list of 31 IPv4 private networks with host size 16 and 12 @@ -10,11 +13,16 @@ var ( // PredefinedGranularNetworks contains a list of 64K IPv4 private networks with host size 8 // (10.x.x.x/24) which do not overlap with the networks in `PredefinedBroadNetworks` PredefinedGranularNetworks []*net.IPNet + + initNetworksOnce sync.Once ) -func init() { - PredefinedBroadNetworks = initBroadPredefinedNetworks() - PredefinedGranularNetworks = initGranularPredefinedNetworks() +// InitNetworks initializes the pre-defined networks used by the built-in IP allocator +func InitNetworks() { + initNetworksOnce.Do(func() { + PredefinedBroadNetworks = initBroadPredefinedNetworks() + PredefinedGranularNetworks = initGranularPredefinedNetworks() + }) } func initBroadPredefinedNetworks() []*net.IPNet { diff --git a/vendor/src/github.com/docker/libnetwork/ipamutils/utils_linux.go b/vendor/src/github.com/docker/libnetwork/ipamutils/utils_linux.go index 9706cf39cd..056a234c8f 100644 --- a/vendor/src/github.com/docker/libnetwork/ipamutils/utils_linux.go +++ b/vendor/src/github.com/docker/libnetwork/ipamutils/utils_linux.go @@ -22,6 +22,8 @@ func ElectInterfaceAddresses(name string) (*net.IPNet, []*net.IPNet, error) { err error ) + InitNetworks() + defer osl.InitOSContext()() link, _ := netlink.LinkByName(name) diff --git a/vendor/src/github.com/docker/libnetwork/resolver.go b/vendor/src/github.com/docker/libnetwork/resolver.go index a29e850293..7af1850cf6 100644 --- a/vendor/src/github.com/docker/libnetwork/resolver.go +++ b/vendor/src/github.com/docker/libnetwork/resolver.go @@ -49,8 +49,14 @@ const ( defaultRespSize = 512 maxConcurrent = 50 logInterval = 2 * time.Second + maxDNSID = 65536 ) +type clientConn struct { + dnsID uint16 + respWriter dns.ResponseWriter +} + type extDNSEntry struct { ipStr string extConn net.Conn @@ -69,6 +75,7 @@ type resolver struct { count int32 tStamp time.Time queryLock sync.Mutex + client map[uint16]clientConn } func init() { @@ -78,8 +85,9 @@ func init() { // NewResolver creates a new instance of the Resolver func NewResolver(sb *sandbox) Resolver { return &resolver{ - sb: sb, - err: fmt.Errorf("setup not done yet"), + sb: sb, + err: fmt.Errorf("setup not done yet"), + client: make(map[uint16]clientConn), } } @@ -375,7 +383,9 @@ func (r *resolver) ServeDNS(w dns.ResponseWriter, query *dns.Msg) { extConn.SetDeadline(time.Now().Add(extIOTimeout)) co := &dns.Conn{Conn: extConn} - if r.concurrentQueryInc() == false { + // forwardQueryStart stores required context to mux multiple client queries over + // one connection; and limits the number of outstanding concurrent queries. + if r.forwardQueryStart(w, query) == false { old := r.tStamp r.tStamp = time.Now() if r.tStamp.Sub(old) > logInterval { @@ -391,18 +401,25 @@ func (r *resolver) ServeDNS(w dns.ResponseWriter, query *dns.Msg) { }() err = co.WriteMsg(query) if err != nil { - r.concurrentQueryDec() + r.forwardQueryEnd(w, query) log.Debugf("Send to DNS server failed, %s", err) continue } resp, err = co.ReadMsg() - r.concurrentQueryDec() if err != nil { + r.forwardQueryEnd(w, query) log.Debugf("Read from DNS server failed, %s", err) continue } + // Retrieves the context for the forwarded query and returns the client connection + // to send the reply to + w = r.forwardQueryEnd(w, resp) + if w == nil { + continue + } + resp.Compress = true break } @@ -418,22 +435,71 @@ func (r *resolver) ServeDNS(w dns.ResponseWriter, query *dns.Msg) { } } -func (r *resolver) concurrentQueryInc() bool { +func (r *resolver) forwardQueryStart(w dns.ResponseWriter, msg *dns.Msg) bool { + proto := w.LocalAddr().Network() + dnsID := uint16(rand.Intn(maxDNSID)) + + cc := clientConn{ + dnsID: msg.Id, + respWriter: w, + } + r.queryLock.Lock() defer r.queryLock.Unlock() + if r.count == maxConcurrent { return false } r.count++ + + switch proto { + case "tcp": + break + case "udp": + for ok := true; ok == true; dnsID = uint16(rand.Intn(maxDNSID)) { + _, ok = r.client[dnsID] + } + log.Debugf("client dns id %v, changed id %v", msg.Id, dnsID) + r.client[dnsID] = cc + msg.Id = dnsID + default: + log.Errorf("Invalid protocol..") + return false + } + return true } -func (r *resolver) concurrentQueryDec() bool { +func (r *resolver) forwardQueryEnd(w dns.ResponseWriter, msg *dns.Msg) dns.ResponseWriter { + var ( + cc clientConn + ok bool + ) + proto := w.LocalAddr().Network() + r.queryLock.Lock() defer r.queryLock.Unlock() + if r.count == 0 { - return false + log.Errorf("Invalid concurrent query count") + } else { + r.count-- } - r.count-- - return true + + switch proto { + case "tcp": + break + case "udp": + if cc, ok = r.client[msg.Id]; ok == false { + log.Debugf("Can't retrieve client context for dns id %v", msg.Id) + return nil + } + delete(r.client, msg.Id) + msg.Id = cc.dnsID + w = cc.respWriter + default: + log.Errorf("Invalid protocol") + return nil + } + return w } From 5d1b0aecd0a52fb3ef3ebb298c6a335ff8ca95a9 Mon Sep 17 00:00:00 2001 From: Shishir Mahajan Date: Mon, 4 Apr 2016 16:04:32 -0400 Subject: [PATCH 09/13] Ignore os.IsNotExist errors when calling ToDiskLocking Signed-off-by: Shishir Mahajan (cherry picked from commit 606cf5310d20518b4a9dfbe4d8e6b872f8683d9e) --- daemon/delete.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/daemon/delete.go b/daemon/delete.go index 008eefaa88..9539e816c7 100644 --- a/daemon/delete.go +++ b/daemon/delete.go @@ -102,7 +102,7 @@ func (daemon *Daemon) cleanupContainer(container *container.Container, forceRemo // Save container state to disk. So that if error happens before // container meta file got removed from disk, then a restart of // docker should not make a dead container alive. - if err := container.ToDiskLocking(); err != nil { + if err := container.ToDiskLocking(); err != nil && !os.IsNotExist(err) { logrus.Errorf("Error saving dying container to disk: %v", err) } From 9e4c6c75f59ded758f5043c8086afa4b657e7a72 Mon Sep 17 00:00:00 2001 From: mYmNeo Date: Wed, 6 Apr 2016 09:45:30 +0800 Subject: [PATCH 10/13] fix test requirement about devicemapper and not overlay Signed-off-by: mYmNeo (cherry picked from commit 90f512427f3a10144a8f589ea9b18d36cf48b94c) --- integration-cli/docker_test_vars.go | 5 +++++ integration-cli/docker_utils.go | 1 + integration-cli/requirements.go | 12 ++---------- 3 files changed, 8 insertions(+), 10 deletions(-) diff --git a/integration-cli/docker_test_vars.go b/integration-cli/docker_test_vars.go index a7791760ea..b6113992e0 100644 --- a/integration-cli/docker_test_vars.go +++ b/integration-cli/docker_test_vars.go @@ -54,6 +54,11 @@ var ( dockerBasePath string volumesConfigPath string containerStoragePath string + + // daemonStorageDriver is held globally so that tests can know the storage + // driver of the daemon. This is initialized in docker_utils by sending + // a version call to the daemon and examining the response header. + daemonStorageDriver string ) const ( diff --git a/integration-cli/docker_utils.go b/integration-cli/docker_utils.go index edd985ce9f..3198287100 100644 --- a/integration-cli/docker_utils.go +++ b/integration-cli/docker_utils.go @@ -86,6 +86,7 @@ func init() { var info types.Info err = json.Unmarshal(body, &info) + daemonStorageDriver = info.Driver dockerBasePath = info.DockerRootDir volumesConfigPath = filepath.Join(dockerBasePath, "volumes") containerStoragePath = filepath.Join(dockerBasePath, "containers") diff --git a/integration-cli/requirements.go b/integration-cli/requirements.go index 4bc2b654da..e948c0aae0 100644 --- a/integration-cli/requirements.go +++ b/integration-cli/requirements.go @@ -109,22 +109,14 @@ var ( } NotOverlay = testRequirement{ func() bool { - cmd := exec.Command("grep", "^overlay / overlay", "/proc/mounts") - if err := cmd.Run(); err != nil { - return true - } - return false + return !strings.HasPrefix(daemonStorageDriver, "overlay") }, "Test requires underlying root filesystem not be backed by overlay.", } Devicemapper = testRequirement{ func() bool { - cmd := exec.Command("grep", "^devicemapper / devicemapper", "/proc/mounts") - if err := cmd.Run(); err != nil { - return false - } - return true + return strings.HasPrefix(daemonStorageDriver, "devicemapper") }, "Test requires underlying root filesystem to be backed by devicemapper.", } From 5e5e07e10619eef14c3c9859e28a1c9e46e08a50 Mon Sep 17 00:00:00 2001 From: mYmNeo Date: Tue, 5 Apr 2016 09:30:05 +0800 Subject: [PATCH 11/13] when container had no layer data, cleanupContainer crashed Signed-off-by: mYmNeo (cherry picked from commit 0bfc9c8de07cb2ad716d522952b2901080161909) --- daemon/delete.go | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/daemon/delete.go b/daemon/delete.go index 9539e816c7..ec9d5c5f18 100644 --- a/daemon/delete.go +++ b/daemon/delete.go @@ -123,10 +123,14 @@ func (daemon *Daemon) cleanupContainer(container *container.Container, forceRemo return fmt.Errorf("Unable to remove filesystem for %v: %v", container.ID, err) } - metadata, err := daemon.layerStore.ReleaseRWLayer(container.RWLayer) - layer.LogReleaseMetadata(metadata) - if err != nil && err != layer.ErrMountDoesNotExist { - return fmt.Errorf("Driver %s failed to remove root filesystem %s: %s", daemon.GraphDriverName(), container.ID, err) + // When container creation fails and `RWLayer` has not been created yet, we + // do not call `ReleaseRWLayer` + if container.RWLayer != nil { + metadata, err := daemon.layerStore.ReleaseRWLayer(container.RWLayer) + layer.LogReleaseMetadata(metadata) + if err != nil && err != layer.ErrMountDoesNotExist { + return fmt.Errorf("Driver %s failed to remove root filesystem %s: %s", daemon.GraphDriverName(), container.ID, err) + } } return nil From 60be8487c1278c0143e2cea86b2273555159350e Mon Sep 17 00:00:00 2001 From: Julio Montes Date: Fri, 1 Apr 2016 08:58:29 -0600 Subject: [PATCH 12/13] Fix compilation errors with btrfs-progs-4.5 btrfs-progs-4.5 introduces device delete by devid for this reason btrfs_ioctl_vol_args_v2's name was encapsulated in a union this patch is for setting btrfs_ioctl_vol_args_v2's name using a C function in order to preserve compatibility with all btrfs-progs versions Signed-off-by: Julio Montes (cherry picked from commit a038cccf88998814249a7a40b71a33a680e3f02f) --- daemon/graphdriver/btrfs/btrfs.go | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/daemon/graphdriver/btrfs/btrfs.go b/daemon/graphdriver/btrfs/btrfs.go index 5ca86a5b6f..1f18090f51 100644 --- a/daemon/graphdriver/btrfs/btrfs.go +++ b/daemon/graphdriver/btrfs/btrfs.go @@ -7,6 +7,10 @@ package btrfs #include #include #include + +static void set_name_btrfs_ioctl_vol_args_v2(struct btrfs_ioctl_vol_args_v2* btrfs_struct, const char* value) { + snprintf(btrfs_struct->name, BTRFS_SUBVOL_NAME_MAX, "%s", value); +} */ import "C" @@ -159,9 +163,10 @@ func subvolSnapshot(src, dest, name string) error { var args C.struct_btrfs_ioctl_vol_args_v2 args.fd = C.__s64(getDirFd(srcDir)) - for i, c := range []byte(name) { - args.name[i] = C.char(c) - } + + var cs = C.CString(name) + C.set_name_btrfs_ioctl_vol_args_v2(&args, cs) + C.free(unsafe.Pointer(cs)) _, _, errno := syscall.Syscall(syscall.SYS_IOCTL, getDirFd(destDir), C.BTRFS_IOC_SNAP_CREATE_V2, uintptr(unsafe.Pointer(&args))) From 40ff84522080075a7998fe7117edf7a514792614 Mon Sep 17 00:00:00 2001 From: Alessandro Boch Date: Wed, 6 Apr 2016 12:18:21 -0700 Subject: [PATCH 13/13] Vendoring libnetwork v0.7.0-rc.4 Signed-off-by: Alessandro Boch (cherry picked from commit 8a957bafa58e2eed8f31722c7fcc3709ca509a29) --- hack/vendor.sh | 2 +- .../github.com/docker/libnetwork/CHANGELOG.md | 3 +++ .../docker/libnetwork/default_gateway.go | 23 ++++++++--------- .../github.com/docker/libnetwork/endpoint.go | 25 +++++++++++++------ .../github.com/docker/libnetwork/sandbox.go | 4 +++ 5 files changed, 37 insertions(+), 20 deletions(-) diff --git a/hack/vendor.sh b/hack/vendor.sh index 10fb59f634..6fe46e5dcc 100755 --- a/hack/vendor.sh +++ b/hack/vendor.sh @@ -29,7 +29,7 @@ clone git github.com/RackSec/srslog 259aed10dfa74ea2961eddd1d9847619f6e98837 clone git github.com/imdario/mergo 0.2.1 #get libnetwork packages -clone git github.com/docker/libnetwork v0.7.0-rc.3 +clone git github.com/docker/libnetwork v0.7.0-rc.4 clone git github.com/armon/go-metrics eb0af217e5e9747e41dd5303755356b62d28e3ec clone git github.com/hashicorp/go-msgpack 71c2886f5a673a35f909803f38ece5810165097b clone git github.com/hashicorp/memberlist 9a1e242e454d2443df330bdd51a436d5a9058fc4 diff --git a/vendor/src/github.com/docker/libnetwork/CHANGELOG.md b/vendor/src/github.com/docker/libnetwork/CHANGELOG.md index c690cf095e..0eb85cde52 100644 --- a/vendor/src/github.com/docker/libnetwork/CHANGELOG.md +++ b/vendor/src/github.com/docker/libnetwork/CHANGELOG.md @@ -1,5 +1,8 @@ # Changelog +## 0.7.0-rc.4 (2016-04-06) +- Fix the handling for default gateway Endpoint join/leave. + ## 0.7.0-rc.3 (2016-04-05) - Revert fix for default gateway endoint join/leave. Needs to be reworked. - Persist the network internal mode for bridge networks diff --git a/vendor/src/github.com/docker/libnetwork/default_gateway.go b/vendor/src/github.com/docker/libnetwork/default_gateway.go index d8eb732701..31cf86d1d4 100644 --- a/vendor/src/github.com/docker/libnetwork/default_gateway.go +++ b/vendor/src/github.com/docker/libnetwork/default_gateway.go @@ -65,20 +65,13 @@ func (sb *sandbox) setupDefaultGW() error { return nil } -// If present, removes the endpoint connecting the sandbox to the default gw network. -// Unless it is the endpoint designated to provide the external connectivity. -// If the sandbox is being deleted, removes the endpoint unconditionally. +// If present, detach and remove the endpoint connecting the sandbox to the default gw network. func (sb *sandbox) clearDefaultGW() error { var ep *endpoint if ep = sb.getEndpointInGWNetwork(); ep == nil { return nil } - - if ep == sb.getGatewayEndpoint() && !sb.inDelete { - return nil - } - if err := ep.sbLeave(sb, false); err != nil { return fmt.Errorf("container %s: endpoint leaving GW Network failed: %v", sb.containerID, err) } @@ -88,21 +81,26 @@ func (sb *sandbox) clearDefaultGW() error { return nil } +// Evaluate whether the sandbox requires a default gateway based +// on the endpoints to which it is connected. It does not account +// for the default gateway network endpoint. + func (sb *sandbox) needDefaultGW() bool { var needGW bool for _, ep := range sb.getConnectedEndpoints() { if ep.endpointInGWNetwork() { - return false + continue } if ep.getNetwork().Type() == "null" || ep.getNetwork().Type() == "host" { continue } if ep.getNetwork().Internal() { - return false + continue } - if ep.joinInfo.disableGatewayService { - return false + // During stale sandbox cleanup, joinInfo may be nil + if ep.joinInfo != nil && ep.joinInfo.disableGatewayService { + continue } // TODO v6 needs to be handled. if len(ep.Gateway()) > 0 { @@ -115,6 +113,7 @@ func (sb *sandbox) needDefaultGW() bool { } needGW = true } + return needGW } diff --git a/vendor/src/github.com/docker/libnetwork/endpoint.go b/vendor/src/github.com/docker/libnetwork/endpoint.go index 6f142d0af3..55b3a8e1ab 100644 --- a/vendor/src/github.com/docker/libnetwork/endpoint.go +++ b/vendor/src/github.com/docker/libnetwork/endpoint.go @@ -446,7 +446,7 @@ func (ep *endpoint) sbJoin(sb *sandbox, options ...EndpointOption) error { return err } - if sb.needDefaultGW() { + if sb.needDefaultGW() && sb.getEndpointInGWNetwork() == nil { return sb.setupDefaultGW() } @@ -479,7 +479,14 @@ func (ep *endpoint) sbJoin(sb *sandbox, options ...EndpointOption) error { } } - return sb.clearDefaultGW() + if !sb.needDefaultGW() { + if err := sb.clearDefaultGW(); err != nil { + log.Warnf("Failure while disconnecting sandbox %s (%s) from gateway network: %v", + sb.ID(), sb.ContainerID(), err) + } + } + + return nil } func (ep *endpoint) rename(name string) error { @@ -622,10 +629,7 @@ func (ep *endpoint) sbLeave(sb *sandbox, force bool, options ...EndpointOption) } sb.deleteHostsEntries(n.getSvcRecords(ep)) - if !sb.inDelete && sb.needDefaultGW() { - if sb.getEPwithoutGateway() == nil { - return fmt.Errorf("endpoint without GW expected, but not found") - } + if !sb.inDelete && sb.needDefaultGW() && sb.getEndpointInGWNetwork() == nil { return sb.setupDefaultGW() } @@ -639,7 +643,14 @@ func (ep *endpoint) sbLeave(sb *sandbox, force bool, options ...EndpointOption) } } - return sb.clearDefaultGW() + if !sb.needDefaultGW() { + if err := sb.clearDefaultGW(); err != nil { + log.Warnf("Failure while disconnecting sandbox %s (%s) from gateway network: %v", + sb.ID(), sb.ContainerID(), err) + } + } + + return nil } func (n *network) validateForceDelete(locator string) error { diff --git a/vendor/src/github.com/docker/libnetwork/sandbox.go b/vendor/src/github.com/docker/libnetwork/sandbox.go index 18cca78dca..5517301bcc 100644 --- a/vendor/src/github.com/docker/libnetwork/sandbox.go +++ b/vendor/src/github.com/docker/libnetwork/sandbox.go @@ -197,6 +197,10 @@ func (sb *sandbox) delete(force bool) error { // Detach from all endpoints retain := false for _, ep := range sb.getConnectedEndpoints() { + // gw network endpoint detach and removal are automatic + if ep.endpointInGWNetwork() { + continue + } // Retain the sanbdox if we can't obtain the network from store. if _, err := c.getNetworkFromStore(ep.getNetwork().ID()); err != nil { retain = true