mirror of https://github.com/perkeep/perkeep.git
Merge "fs: handle directory permanode titles"
This commit is contained in:
commit
b062430d99
|
@ -380,6 +380,12 @@ func (n *mutDir) creat(name string, typ nodeType) (fs.Node, error) {
|
||||||
_, err = n.fs.client.UploadAndSignBlob(claim)
|
_, err = n.fs.client.UploadAndSignBlob(claim)
|
||||||
return
|
return
|
||||||
})
|
})
|
||||||
|
grp.Go(func() (err error) {
|
||||||
|
// Set the permanode title to the directory name
|
||||||
|
claim := schema.NewSetAttributeClaim(pr.BlobRef, "title", name)
|
||||||
|
_, err = n.fs.client.UploadAndSignBlob(claim)
|
||||||
|
return
|
||||||
|
})
|
||||||
}
|
}
|
||||||
if err := grp.Err(); err != nil {
|
if err := grp.Err(); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
@ -478,11 +484,24 @@ func (n *mutDir) Rename(req *fuse.RenameRequest, newDir fs.Node, intr fs.Intr) f
|
||||||
return fuse.EIO
|
return fuse.EIO
|
||||||
}
|
}
|
||||||
|
|
||||||
delClaim := schema.NewDelAttributeClaim(n.permanode, "camliPath:"+req.OldName, "")
|
var grp syncutil.Group
|
||||||
delClaim.SetClaimDate(now)
|
// Unlink the dest permanode from the source.
|
||||||
_, err = n.fs.client.UploadAndSignBlob(delClaim)
|
grp.Go(func() (err error) {
|
||||||
if err != nil {
|
delClaim := schema.NewDelAttributeClaim(n.permanode, "camliPath:"+req.OldName, "")
|
||||||
log.Printf("Upload rename src unlink error: %v", err)
|
delClaim.SetClaimDate(now)
|
||||||
|
_, err = n.fs.client.UploadAndSignBlob(delClaim)
|
||||||
|
return
|
||||||
|
})
|
||||||
|
// If target is a directory then update its title.
|
||||||
|
if dir, ok := target.(*mutDir); ok {
|
||||||
|
grp.Go(func() (err error) {
|
||||||
|
claim := schema.NewSetAttributeClaim(dir.permanode, "title", req.NewName)
|
||||||
|
_, err = n.fs.client.UploadAndSignBlob(claim)
|
||||||
|
return
|
||||||
|
})
|
||||||
|
}
|
||||||
|
if err := grp.Err(); err != nil {
|
||||||
|
log.Printf("Upload rename unlink/title error: %v", err)
|
||||||
return fuse.EIO
|
return fuse.EIO
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -305,10 +305,20 @@ func (n *rootsDir) Mkdir(req *fuse.MkdirRequest, intr fs.Intr) (fs.Node, fuse.Er
|
||||||
return nil, fuse.EIO
|
return nil, fuse.EIO
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var grp syncutil.Group
|
||||||
// Add a camliRoot attribute to the root permanode.
|
// Add a camliRoot attribute to the root permanode.
|
||||||
claim := schema.NewSetAttributeClaim(pr.BlobRef, "camliRoot", name)
|
grp.Go(func() (err error) {
|
||||||
_, err = n.fs.client.UploadAndSignBlob(claim)
|
claim := schema.NewSetAttributeClaim(pr.BlobRef, "camliRoot", name)
|
||||||
if err != nil {
|
_, err = n.fs.client.UploadAndSignBlob(claim)
|
||||||
|
return
|
||||||
|
})
|
||||||
|
// Set the title of the root permanode to the root name.
|
||||||
|
grp.Go(func() (err error) {
|
||||||
|
claim := schema.NewSetAttributeClaim(pr.BlobRef, "title", name)
|
||||||
|
_, err = n.fs.client.UploadAndSignBlob(claim)
|
||||||
|
return
|
||||||
|
})
|
||||||
|
if err := grp.Err(); err != nil {
|
||||||
log.Printf("rootsDir.Create(%q): %v", name, err)
|
log.Printf("rootsDir.Create(%q): %v", name, err)
|
||||||
return nil, fuse.EIO
|
return nil, fuse.EIO
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue