Save CT to local drives. If workFQN is set, it saves in two steps: first, save to workFQN; second, rename workFQN to ct.FQN. If unset, it writes directly to ct.FQN
(t Target, reader io.Reader, size int64, workFQN ...string)
| 162 | // save to workFQN; second, rename workFQN to ct.FQN. If unset, it writes |
| 163 | // directly to ct.FQN |
| 164 | func (ct *CT) Write(t Target, reader io.Reader, size int64, workFQN ...string) (err error) { |
| 165 | bdir := ct.mpathInfo.MakePathBck(ct.Bucket()) |
| 166 | if err := cos.Stat(bdir); err != nil { |
| 167 | return err |
| 168 | } |
| 169 | buf, slab := t.PageMM().Alloc() |
| 170 | if len(workFQN) == 0 { |
| 171 | _, err = cos.SaveReader(ct.fqn, reader, buf, cos.ChecksumNone, size, "") |
| 172 | } else { |
| 173 | _, err = cos.SaveReaderSafe(workFQN[0], ct.fqn, reader, buf, cos.ChecksumNone, size, "") |
| 174 | } |
| 175 | slab.Free(buf) |
| 176 | return err |
| 177 | } |