code: func (d *driver) Writer(ctx context.Context, path string, append bool) (storagedriver.FileWriter, error) {
  	var (
  		segments     []swift.Object
  		segmentsPath string
  		err          error
  	)
  
  	if !append {
  		segmentsPath, err = d.swiftSegmentPath(path)
  		if err != nil {
  			return nil, err
  		}
  	} else {
  		info, headers, err := d.Conn.Object(d.Container, d.swiftPath(path))
  		if err == swift.ObjectNotFound {
  			return nil, storagedriver.PathNotFoundError{Path: path}
  		} else if err != nil {
  			return nil, err
  		}
  		manifest, ok := headers["X-Object-Manifest"]
  		if !ok {
  			segmentsPath, err = d.swiftSegmentPath(path)
  			if err != nil {
  				return nil, err
  			}
  			if err := d.Conn.ObjectMove(d.Container, d.swiftPath(path), d.Container, getSegmentPath(segmentsPath, len(segments))); err != nil {
  				return nil, err
  			}
  			segments = []swift.Object{info}
  		} else {
  			_, segmentsPath = parseManifest(manifest)
  			if segments, err = d.getAllSegments(segmentsPath); err != nil {
  				return nil, err
  			}
  		}
  	}
  
  	return d.newWriter(path, segmentsPath, segments), nil
  }
docs: // Writer returns a FileWriter which will store the content written to it
  // at the location designated by "path" after the call to Commit.