forked from TrueCloudLab/restic
Merge pull request #3668 from greatroar/symlink-size
Report symlink sizes from FUSE mount
This commit is contained in:
commit
8388f66c4c
3 changed files with 13 additions and 0 deletions
8
changelog/unreleased/issue-3667
Normal file
8
changelog/unreleased/issue-3667
Normal file
|
@ -0,0 +1,8 @@
|
|||
Bugfix: restic mount now reports symlinks sizes
|
||||
|
||||
Symlinks used to have size zero in restic mountpoints, confusing some
|
||||
third-party tools. They now have a size equal to the byte length of their
|
||||
target path, as required by POSIX.
|
||||
|
||||
https://github.com/restic/restic/issues/3667
|
||||
https://github.com/restic/restic/pull/3668
|
|
@ -1,3 +1,4 @@
|
|||
//go:build darwin || freebsd || linux
|
||||
// +build darwin freebsd linux
|
||||
|
||||
package fuse
|
||||
|
@ -40,6 +41,8 @@ func (l *link) Attr(ctx context.Context, a *fuse.Attr) error {
|
|||
a.Mtime = l.node.ModTime
|
||||
|
||||
a.Nlink = uint32(l.node.Links)
|
||||
a.Size = uint64(len(l.node.LinkTarget))
|
||||
a.Blocks = 1 + a.Size/blockSize
|
||||
|
||||
return nil
|
||||
}
|
||||
|
|
|
@ -440,6 +440,8 @@ func (l *snapshotLink) Readlink(ctx context.Context, req *fuse.ReadlinkRequest)
|
|||
func (l *snapshotLink) Attr(ctx context.Context, a *fuse.Attr) error {
|
||||
a.Inode = l.inode
|
||||
a.Mode = os.ModeSymlink | 0777
|
||||
a.Size = uint64(len(l.target))
|
||||
a.Blocks = 1 + a.Size/blockSize
|
||||
a.Uid = l.root.uid
|
||||
a.Gid = l.root.gid
|
||||
a.Atime = l.snapshot.Time
|
||||
|
|
Loading…
Reference in a new issue