Update containers/storage to fix locking bug

Update to commit hash 1e5ce40cdb84ab66e26186435b1273e04b879fef

Signed-off-by: Matthew Heon <matthew.heon@gmail.com>

Closes: #451
Approved by: rhatdan
This commit is contained in:
Matthew Heon
2018-03-05 17:09:03 -05:00
committed by Atomic Bot
parent 649e4f07a3
commit ff9da1fb3f
2 changed files with 10 additions and 3 deletions

View File

@ -462,6 +462,12 @@ type store struct {
// GetStore attempts to find an already-created Store object matching the
// specified location and graph driver, and if it can't, it creates and
// initializes a new Store object, and the underlying storage that it controls.
//
// If StoreOptions `options` haven't been fully populated, then DefaultStoreOptions are used.
//
// These defaults observe environment variables:
// * `STORAGE_DRIVER` for the name of the storage driver to attempt to use
// * `STORAGE_OPTS` for the string of options to pass to the driver
func GetStore(options StoreOptions) (Store, error) {
if options.RunRoot == "" && options.GraphRoot == "" && options.GraphDriverName == "" && len(options.GraphDriverOptions) == 0 {
options = DefaultStoreOptions
@ -2270,14 +2276,15 @@ func (s *store) Shutdown(force bool) ([]string, error) {
return mounted, err
}
s.graphLock.Lock()
defer s.graphLock.Unlock()
rlstore.Lock()
defer rlstore.Unlock()
if modified, err := rlstore.Modified(); modified || err != nil {
rlstore.Load()
}
s.graphLock.Lock()
defer s.graphLock.Unlock()
layers, err := rlstore.Layers()
if err != nil {
return mounted, err