77 lines
2.2 KiB
Diff
77 lines
2.2 KiB
Diff
From 797a14eb7da2e1db8b8c768b62035f6567bf4b80 Mon Sep 17 00:00:00 2001
|
|
From: Kent Overstreet <kent.overstreet@linux.dev>
|
|
Date: Tue, 9 Jul 2024 09:11:34 +0800
|
|
Subject: [PATCH 070/233] bcachefs: Add support for FS_IOC_GETFSSYSFSPATH
|
|
Content-Type: text/plain; charset="utf-8"
|
|
Content-Transfer-Encoding: 8bit
|
|
|
|
[TEST]:
|
|
```
|
|
$ cat ioctl_getsysfspath.c
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <fcntl.h>
|
|
#include <sys/ioctl.h>
|
|
#include <linux/fs.h>
|
|
#include <unistd.h>
|
|
|
|
int main(int argc, char *argv[]) {
|
|
int fd;
|
|
struct fs_sysfs_path sysfs_path = {};
|
|
|
|
if (argc != 2) {
|
|
fprintf(stderr, "Usage: %s <path_to_file_or_directory>\n", argv[0]);
|
|
exit(EXIT_FAILURE);
|
|
}
|
|
|
|
fd = open(argv[1], O_RDONLY);
|
|
if (fd == -1) {
|
|
perror("open");
|
|
exit(EXIT_FAILURE);
|
|
}
|
|
|
|
if (ioctl(fd, FS_IOC_GETFSSYSFSPATH, &sysfs_path) == -1) {
|
|
perror("ioctl FS_IOC_GETFSSYSFSPATH");
|
|
close(fd);
|
|
exit(EXIT_FAILURE);
|
|
}
|
|
|
|
printf("FS_IOC_GETFSSYSFSPATH: %s\n", sysfs_path.name);
|
|
close(fd);
|
|
return 0;
|
|
}
|
|
|
|
$ gcc ioctl_getsysfspath.c
|
|
$ sudo bcachefs format /dev/sda
|
|
$ sudo mount.bcachefs /dev/sda /mnt
|
|
$ sudo ./a.out /mnt
|
|
FS_IOC_GETFSSYSFSPATH: bcachefs/c380b4ab-fbb6-41d2-b805-7a89cae9cadb
|
|
```
|
|
|
|
Original patch link:
|
|
[1]: https://lore.kernel.org/all/20240207025624.1019754-8-kent.overstreet@linux.dev/
|
|
|
|
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
|
|
Signed-off-by: Youling Tang <youling.tang@linux.dev>
|
|
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
|
|
Signed-off-by: Alexander Miroshnichenko <alex@millerson.name>
|
|
---
|
|
fs/bcachefs/fs.c | 1 +
|
|
1 file changed, 1 insertion(+)
|
|
|
|
diff --git a/fs/bcachefs/fs.c b/fs/bcachefs/fs.c
|
|
index 396a8f677621..7a269dbcf44b 100644
|
|
--- a/fs/bcachefs/fs.c
|
|
+++ b/fs/bcachefs/fs.c
|
|
@@ -2217,6 +2217,7 @@ static int bch2_fs_get_tree(struct fs_context *fc)
|
|
sb->s_time_min = div_s64(S64_MIN, c->sb.time_units_per_sec) + 1;
|
|
sb->s_time_max = div_s64(S64_MAX, c->sb.time_units_per_sec);
|
|
super_set_uuid(sb, c->sb.user_uuid.b, sizeof(c->sb.user_uuid));
|
|
+ super_set_sysfs_name_uuid(sb);
|
|
sb->s_shrink->seeks = 0;
|
|
c->vfs_sb = sb;
|
|
strscpy(sb->s_id, c->name, sizeof(sb->s_id));
|
|
--
|
|
2.45.2
|
|
|