usertools: add options for hugetlbfs mount point owner

Per mount(8), the previous owner and mode of the mount point
become invisible as long as this filesystem remains mounted.
Because dpdk-hugepages.py must be run as root,
the new owner would be root.
This is undesirable if the hugepage directory is being set up
by the administrator for an unprivileged user.
HugeTLB filesystem has options to set the mount point owner.
Add --user/-U and --group/-G options to apply this when mounting.
The benefit of performing this in dpdk-hugepages.py
is that the user does not need to care about this detail
of mount command operation.

Signed-off-by: Dmitry Kozlyuk <dkozlyuk@nvidia.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
This commit is contained in:
Dmitry Kozlyuk 2022-06-24 16:19:53 +03:00 committed by Thomas Monjalon
parent 31af02ef6f
commit 8d73de6f7f

View File

@ -170,7 +170,7 @@ def get_mountpoints():
return mounted
def mount_huge(pagesize, mountpoint):
def mount_huge(pagesize, mountpoint, user, group):
'''Mount the huge TLB file system'''
if mountpoint in get_mountpoints():
print(mountpoint, "already mounted")
@ -178,6 +178,10 @@ def mount_huge(pagesize, mountpoint):
cmd = "mount -t hugetlbfs"
if pagesize:
cmd += ' -o pagesize={}'.format(pagesize * 1024)
if user:
cmd += ' -o uid=' + user
if group:
cmd += ' -o gid=' + group
cmd += ' nodev ' + mountpoint
os.system(cmd)
@ -234,6 +238,16 @@ def main():
metavar='DIR',
default=HUGE_MOUNT,
help='mount point')
parser.add_argument(
'--user',
'-U',
metavar='UID',
help='set the mounted directory owner user')
parser.add_argument(
'--group',
'-G',
metavar='GID',
help='set the mounted directory owner group')
parser.add_argument(
'--node', '-n', help='select numa node to reserve pages on')
parser.add_argument(
@ -279,7 +293,7 @@ def main():
reserve_pages(
int(reserve_kb / pagesize_kb), pagesize_kb, node=args.node)
if args.mount:
mount_huge(pagesize_kb, args.directory)
mount_huge(pagesize_kb, args.directory, args.user, args.group)
if args.show:
show_pages()
print()