musl: pick upstream patches for name_to_handle_at support

This commit is contained in:
Will Dietz 2018-09-24 23:35:01 -05:00
parent ed5347278f
commit 5c217591fd
3 changed files with 100 additions and 0 deletions

View File

@ -67,6 +67,9 @@ stdenv.mkDerivation rec {
./0001-in-pthread_mutex_trylock-EBUSY-out-more-directly-whe.patch
./0002-in-pthread_mutex_timedlock-avoid-repeatedly-reading-.patch
./0003-fix-namespace-violation-for-c11-mutex-functions.patch
# name_to_handle_at
./name-to-handle-at.patch
./max-handle-sz-for-name-to-handle-at.patch
];
preConfigure = ''
configureFlagsArray+=("--syslibdir=$out/lib")

View File

@ -0,0 +1,26 @@
From 7d7f44253f2d8cfd0a7adf9f918d88aa24d4e012 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Thu, 13 Sep 2018 07:00:05 -0700
Subject: [PATCH] define MAX_HANDLE_SZ for use with name_to_handle_at
MAX_HANDLE_SZ is described in name_to_handle_at() to contain maximum
expected size for a file handle
---
include/fcntl.h | 1 +
1 file changed, 1 insertion(+)
diff --git a/include/fcntl.h b/include/fcntl.h
index 99b21759..4d91338b 100644
--- a/include/fcntl.h
+++ b/include/fcntl.h
@@ -166,6 +166,7 @@ struct f_owner_ex {
};
#define FALLOC_FL_KEEP_SIZE 1
#define FALLOC_FL_PUNCH_HOLE 2
+#define MAX_HANDLE_SZ 128
#define SYNC_FILE_RANGE_WAIT_BEFORE 1
#define SYNC_FILE_RANGE_WRITE 2
#define SYNC_FILE_RANGE_WAIT_AFTER 4
--
2.19.0

View File

@ -0,0 +1,71 @@
From 3e14bbcd1979376b188bfabb816ff828608fb5d7 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Wed, 12 Sep 2018 18:02:11 -0700
Subject: [PATCH] wireup linux/name_to_handle_at and name_to_handle_at syscalls
---
include/fcntl.h | 7 +++++++
src/linux/name_to_handle_at.c | 10 ++++++++++
src/linux/open_by_handle_at.c | 8 ++++++++
3 files changed, 25 insertions(+)
create mode 100644 src/linux/name_to_handle_at.c
create mode 100644 src/linux/open_by_handle_at.c
diff --git a/include/fcntl.h b/include/fcntl.h
index 6d8edcd1..99b21759 100644
--- a/include/fcntl.h
+++ b/include/fcntl.h
@@ -155,6 +155,11 @@ int lockf(int, int, off_t);
#define F_OWNER_PID 1
#define F_OWNER_PGRP 2
#define F_OWNER_GID 2
+struct file_handle {
+ unsigned handle_bytes;
+ int handle_type;
+ unsigned char f_handle[];
+};
struct f_owner_ex {
int type;
pid_t pid;
@@ -170,6 +175,8 @@ struct f_owner_ex {
#define SPLICE_F_GIFT 8
int fallocate(int, int, off_t, off_t);
#define fallocate64 fallocate
+int name_to_handle_at(int, const char *, struct file_handle *, int *, int);
+int open_by_handle_at(int, struct file_handle *, int);
ssize_t readahead(int, off_t, size_t);
int sync_file_range(int, off_t, off_t, unsigned);
ssize_t vmsplice(int, const struct iovec *, size_t, unsigned);
diff --git a/src/linux/name_to_handle_at.c b/src/linux/name_to_handle_at.c
new file mode 100644
index 00000000..cd4075bd
--- /dev/null
+++ b/src/linux/name_to_handle_at.c
@@ -0,0 +1,10 @@
+#define _GNU_SOURCE
+#include <fcntl.h>
+#include "syscall.h"
+
+int name_to_handle_at(int dirfd, const char *pathname,
+ struct file_handle *handle, int *mount_id, int flags)
+{
+ return syscall(SYS_name_to_handle_at, dirfd,
+ pathname, handle, mount_id, flags);
+}
diff --git a/src/linux/open_by_handle_at.c b/src/linux/open_by_handle_at.c
new file mode 100644
index 00000000..1c9b6a2b
--- /dev/null
+++ b/src/linux/open_by_handle_at.c
@@ -0,0 +1,8 @@
+#define _GNU_SOURCE
+#include <fcntl.h>
+#include "syscall.h"
+
+int open_by_handle_at(int mount_fd, struct file_handle *handle, int flags)
+{
+ return syscall(SYS_open_by_handle_at, mount_fd, handle, flags);
+}
--
2.19.0