Merge "fs: handle directory permanode titles"

This commit is contained in:
Brad Fitzpatrick 2014-07-16 20:03:25 +00:00 committed by Gerrit Code Review
commit b062430d99
2 changed files with 37 additions and 8 deletions

View File

@ -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
} }
var grp syncutil.Group
// Unlink the dest permanode from the source.
grp.Go(func() (err error) {
delClaim := schema.NewDelAttributeClaim(n.permanode, "camliPath:"+req.OldName, "") delClaim := schema.NewDelAttributeClaim(n.permanode, "camliPath:"+req.OldName, "")
delClaim.SetClaimDate(now) delClaim.SetClaimDate(now)
_, err = n.fs.client.UploadAndSignBlob(delClaim) _, err = n.fs.client.UploadAndSignBlob(delClaim)
if err != nil { return
log.Printf("Upload rename src unlink error: %v", err) })
// 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
} }

View File

@ -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.
grp.Go(func() (err error) {
claim := schema.NewSetAttributeClaim(pr.BlobRef, "camliRoot", name) claim := schema.NewSetAttributeClaim(pr.BlobRef, "camliRoot", name)
_, err = n.fs.client.UploadAndSignBlob(claim) _, err = n.fs.client.UploadAndSignBlob(claim)
if err != nil { 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
} }