10 Keepstore initiates trash worker channel goroutine.
11 The channel will process trash list.
12 For each (next) trash request:
13 Delete the block indicated by the trash request Locator
17 func RunTrashWorker(trashq *WorkQueue) {
18 for item := range trashq.NextItem {
19 trashRequest := item.(TrashRequest)
20 TrashItem(trashRequest)
24 // TrashItem deletes the indicated block from every writable volume.
25 func TrashItem(trashRequest TrashRequest) {
26 reqMtime := time.Unix(trashRequest.BlockMtime, 0)
27 if time.Since(reqMtime) < blob_signature_ttl {
28 log.Printf("WARNING: data manager asked to delete a %v old block %v (BlockMtime %d = %v), but my blob_signature_ttl is %v! Skipping.",
31 trashRequest.BlockMtime,
37 for _, volume := range KeepVM.AllWritable() {
38 mtime, err := volume.Mtime(trashRequest.Locator)
40 log.Printf("%v Delete(%v): %v", volume, trashRequest.Locator, err)
43 if trashRequest.BlockMtime != mtime.Unix() {
44 log.Printf("%v Delete(%v): mtime on volume is %v does not match trash list value %v", volume, trashRequest.Locator, mtime.Unix(), trashRequest.BlockMtime)
49 err = errors.New("did not delete block because never_delete is true")
51 err = volume.Delete(trashRequest.Locator)
55 log.Printf("%v Delete(%v): %v", volume, trashRequest.Locator, err)
57 log.Printf("%v Delete(%v) OK", volume, trashRequest.Locator)