func (d *radosdesc) New() (factory.DrvInterface, error) { chunksize := uint64(defaultChunkSize) if setting.Chunksize != "" { if tmp, err := strconv.Atoi(setting.Chunksize); err != nil { return nil, fmt.Errorf("The chunksize parameter should be a number") } else { chunksize = uint64(tmp) } } var err error var conn *rados.Conn if setting.Username != "" { conn, err = rados.NewConnWithUser(setting.Username) } else { conn, err = rados.NewConn() } if err != nil { return nil, err } if err := conn.ReadDefaultConfigFile(); err != nil { return nil, err } if err := conn.Connect(); err != nil { return nil, err } ioctx, err := conn.OpenIOContext(setting.Poolname) if err != nil { return nil, err } return &radosdesc{ Ioctx: ioctx, Conn: conn, Chunksize: chunksize, }, nil }