[PATCH 1/2] fs: move struct linux_dirent into headers

Subsystems: filesystems (vfs and infrastructure), the rest

STALE1809d

3 messages, 2 authors, 2021-09-20 · open the first message on its own page

[PATCH 1/2] fs: move struct linux_dirent into headers

From: Gaelan Steele <hidden>
Date: 2021-09-20 09:57:36

Move the definition of linux_dirent to include/linux/dirent.h,
where the newer linux_dirent64 already lives. This is done in
preparation for moving both of these struct definitions into uapi/
so userspace code doesn't need to duplicate them.

Signed-off-by: Gaelan Steele <redacted>
---
 fs/readdir.c           | 8 +-------
 include/linux/dirent.h | 7 +++++++
 2 files changed, 8 insertions(+), 7 deletions(-)
diff --git a/fs/readdir.c b/fs/readdir.c
index 09e8ed7d4161..51890aeafc53 100644
--- a/fs/readdir.c
+++ b/fs/readdir.c
@@ -202,14 +202,8 @@ SYSCALL_DEFINE3(old_readdir, unsigned int, fd,
 
 /*
  * New, all-improved, singing, dancing, iBCS2-compliant getdents()
- * interface. 
+ * interface.
  */
-struct linux_dirent {
-	unsigned long	d_ino;
-	unsigned long	d_off;
-	unsigned short	d_reclen;
-	char		d_name[1];
-};
 
 struct getdents_callback {
 	struct dir_context ctx;
diff --git a/include/linux/dirent.h b/include/linux/dirent.h
index 99002220cd45..48e119dd3694 100644
--- a/include/linux/dirent.h
+++ b/include/linux/dirent.h
@@ -2,6 +2,13 @@
 #ifndef _LINUX_DIRENT_H
 #define _LINUX_DIRENT_H
 
+struct linux_dirent {
+	unsigned long	d_ino;
+	unsigned long	d_off;
+	unsigned short	d_reclen;
+	char		d_name[1];
+};
+
 struct linux_dirent64 {
 	u64		d_ino;
 	s64		d_off;
-- 
2.30.1 (Apple Git-130)

[PATCH 2/2] fs: move dirent.h into uapi

From: Gaelan Steele <hidden>
Date: 2021-09-20 09:58:01

The structures defined in dirent.h are part of Linux's uAPI, but
it was previously necessary for user code to duplicate the struct
definitions themselves. Let's make them public.

Signed-off-by: Gaelan Steele <redacted>
---
 include/{ => uapi}/linux/dirent.h | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)
 rename include/{ => uapi}/linux/dirent.h (66%)
diff --git a/include/linux/dirent.h b/include/uapi/linux/dirent.h
similarity index 66%
rename from include/linux/dirent.h
rename to include/uapi/linux/dirent.h
index 48e119dd3694..99293c651612 100644
--- a/include/linux/dirent.h
+++ b/include/uapi/linux/dirent.h
@@ -1,6 +1,6 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-#ifndef _LINUX_DIRENT_H
-#define _LINUX_DIRENT_H
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
+#ifndef _UAPI_LINUX_DIRENT_H
+#define _UAPI_LINUX_DIRENT_H
 
 struct linux_dirent {
 	unsigned long	d_ino;
-- 
2.30.1 (Apple Git-130)

Re: [PATCH 1/2] fs: move struct linux_dirent into headers

From: Greg KH <gregkh@linuxfoundation.org>
Date: 2021-09-20 10:06:39

On Mon, Sep 20, 2021 at 10:56:48AM +0100, Gaelan Steele wrote:
quoted hunk
Move the definition of linux_dirent to include/linux/dirent.h,
where the newer linux_dirent64 already lives. This is done in
preparation for moving both of these struct definitions into uapi/
so userspace code doesn't need to duplicate them.

Signed-off-by: Gaelan Steele <redacted>
---
 fs/readdir.c           | 8 +-------
 include/linux/dirent.h | 7 +++++++
 2 files changed, 8 insertions(+), 7 deletions(-)
diff --git a/fs/readdir.c b/fs/readdir.c
index 09e8ed7d4161..51890aeafc53 100644
--- a/fs/readdir.c
+++ b/fs/readdir.c
@@ -202,14 +202,8 @@ SYSCALL_DEFINE3(old_readdir, unsigned int, fd,
 
 /*
  * New, all-improved, singing, dancing, iBCS2-compliant getdents()
- * interface. 
+ * interface.
  */
-struct linux_dirent {
-	unsigned long	d_ino;
-	unsigned long	d_off;
-	unsigned short	d_reclen;
-	char		d_name[1];
-};
 
 struct getdents_callback {
 	struct dir_context ctx;
diff --git a/include/linux/dirent.h b/include/linux/dirent.h
index 99002220cd45..48e119dd3694 100644
--- a/include/linux/dirent.h
+++ b/include/linux/dirent.h
@@ -2,6 +2,13 @@
 #ifndef _LINUX_DIRENT_H
 #define _LINUX_DIRENT_H
 
+struct linux_dirent {
+	unsigned long	d_ino;
+	unsigned long	d_off;
+	unsigned short	d_reclen;
+	char		d_name[1];
These are not valid user/kernel api types.  If you want them in
userspace, please use the correct ones (__u64, __u16, __u8, etc.)

thanks,

greg k-h
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help