mirror of
https://github.com/versity/scoutfs-go.git
synced 2026-01-05 19:34:57 +00:00
allow caller to allocate buffer for listxattrhidden
This commit is contained in:
25
scoutfs.go
25
scoutfs.go
@@ -21,12 +21,13 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
max64 = 0xffffffffffffffff
|
max64 = 0xffffffffffffffff
|
||||||
max32 = 0xffffffff
|
max32 = 0xffffffff
|
||||||
pathmax = 4096
|
pathmax = 4096
|
||||||
sysscoutfs = "/sys/fs/scoutfs/"
|
sysscoutfs = "/sys/fs/scoutfs/"
|
||||||
leaderfile = "quorum/is_leader"
|
leaderfile = "quorum/is_leader"
|
||||||
serveraddr = "mount_options/server_addr"
|
serveraddr = "mount_options/server_addr"
|
||||||
|
listattrBufsize = 256 * 1024
|
||||||
)
|
)
|
||||||
|
|
||||||
// Query to keep track of in-process query
|
// Query to keep track of in-process query
|
||||||
@@ -492,18 +493,22 @@ type ListXattrHidden struct {
|
|||||||
buf []byte
|
buf []byte
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewListXattrHidden will list all scoutfs xattrs (including hidden) for file
|
// NewListXattrHidden will list all scoutfs xattrs (including hidden) for file.
|
||||||
func NewListXattrHidden(f *os.File) *ListXattrHidden {
|
// If passed in buffer is nil, call will allocate its own buffer.
|
||||||
|
func NewListXattrHidden(f *os.File, b []byte) *ListXattrHidden {
|
||||||
|
if b == nil {
|
||||||
|
b = make([]byte, listattrBufsize)
|
||||||
|
}
|
||||||
return &ListXattrHidden{
|
return &ListXattrHidden{
|
||||||
f: f,
|
f: f,
|
||||||
lxr: &listXattrHidden{},
|
lxr: &listXattrHidden{},
|
||||||
buf: make([]byte, 256*1024),
|
buf: b,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Next gets next set of results, complete when string slice is nil
|
// Next gets next set of results, complete when string slice is nil
|
||||||
func (l *ListXattrHidden) Next() ([]string, error) {
|
func (l *ListXattrHidden) Next() ([]string, error) {
|
||||||
l.lxr.Buf_bytes = 256 * 1024
|
l.lxr.Buf_bytes = uint32(len(l.buf))
|
||||||
l.lxr.Buf_ptr = uint64(uintptr(unsafe.Pointer(&l.buf[0])))
|
l.lxr.Buf_ptr = uint64(uintptr(unsafe.Pointer(&l.buf[0])))
|
||||||
|
|
||||||
n, err := scoutfsctl(l.f, IOCLISTXATTRHIDDEN, unsafe.Pointer(l.lxr))
|
n, err := scoutfsctl(l.f, IOCLISTXATTRHIDDEN, unsafe.Pointer(l.lxr))
|
||||||
|
|||||||
Reference in New Issue
Block a user