aboutsummaryrefslogtreecommitdiffstats
path: root/module/os/linux
diff options
context:
space:
mode:
authorMatt Macy <mmacy@FreeBSD.org>2020-10-01 23:09:24 +0000
committerMatt Macy <mmacy@FreeBSD.org>2020-10-01 23:09:24 +0000
commite2228bd99047bb6a0cef0da931147b1f28f155c2 (patch)
tree2859f65ec0723fe7424b97206b84c5d760d12b1c /module/os/linux
parent01ea34f1d8bc20a76845a15e968388679693ee44 (diff)
downloadsrc-e2228bd99047bb6a0cef0da931147b1f28f155c2.tar.gz
src-e2228bd99047bb6a0cef0da931147b1f28f155c2.zip
Update OpenZFS to 2.0.0-rc3-gfc5966vendor/openzfs/2.0-rc3-gfc5966
Notes
Notes: svn path=/vendor-sys/openzfs/dist/; revision=366348 svn path=/vendor-sys/openzfs/2.0-rc3-gfc5966/; revision=366349; tag=vendor/openzfs/2.0-rc3-gfc5966
Diffstat (limited to 'module/os/linux')
-rw-r--r--module/os/linux/spl/spl-procfs-list.c22
-rw-r--r--module/os/linux/zfs/vdev_disk.c10
-rw-r--r--module/os/linux/zfs/zfs_debug.c1
3 files changed, 32 insertions, 1 deletions
diff --git a/module/os/linux/spl/spl-procfs-list.c b/module/os/linux/spl/spl-procfs-list.c
index 189d6a7c6082..cae13228c62c 100644
--- a/module/os/linux/spl/spl-procfs-list.c
+++ b/module/os/linux/spl/spl-procfs-list.c
@@ -89,7 +89,17 @@ procfs_list_next_node(procfs_list_cursor_t *cursor, loff_t *pos)
cursor->cached_node = next_node;
cursor->cached_pos = NODE_ID(procfs_list, cursor->cached_node);
*pos = cursor->cached_pos;
+ } else {
+ /*
+ * seq_read() expects ->next() to update the position even
+ * when there are no more entries. Advance the position to
+ * prevent a warning from being logged.
+ */
+ cursor->cached_node = NULL;
+ cursor->cached_pos++;
+ *pos = cursor->cached_pos;
}
+
return (next_node);
}
@@ -105,6 +115,8 @@ procfs_list_seq_start(struct seq_file *f, loff_t *pos)
cursor->cached_node = SEQ_START_TOKEN;
cursor->cached_pos = 0;
return (SEQ_START_TOKEN);
+ } else if (cursor->cached_node == NULL) {
+ return (NULL);
}
/*
@@ -207,6 +219,7 @@ static const kstat_proc_op_t procfs_list_operations = {
*/
void
procfs_list_install(const char *module,
+ const char *submodule,
const char *name,
mode_t mode,
procfs_list_t *procfs_list,
@@ -215,6 +228,12 @@ procfs_list_install(const char *module,
int (*clear)(procfs_list_t *procfs_list),
size_t procfs_list_node_off)
{
+ char *modulestr;
+
+ if (submodule != NULL)
+ modulestr = kmem_asprintf("%s/%s", module, submodule);
+ else
+ modulestr = kmem_asprintf("%s", module);
mutex_init(&procfs_list->pl_lock, NULL, MUTEX_DEFAULT, NULL);
list_create(&procfs_list->pl_list,
procfs_list_node_off + sizeof (procfs_list_node_t),
@@ -225,9 +244,10 @@ procfs_list_install(const char *module,
procfs_list->pl_clear = clear;
procfs_list->pl_node_offset = procfs_list_node_off;
- kstat_proc_entry_init(&procfs_list->pl_kstat_entry, module, name);
+ kstat_proc_entry_init(&procfs_list->pl_kstat_entry, modulestr, name);
kstat_proc_entry_install(&procfs_list->pl_kstat_entry, mode,
&procfs_list_operations, procfs_list);
+ kmem_strfree(modulestr);
}
EXPORT_SYMBOL(procfs_list_install);
diff --git a/module/os/linux/zfs/vdev_disk.c b/module/os/linux/zfs/vdev_disk.c
index 85daef43be40..a54961c76870 100644
--- a/module/os/linux/zfs/vdev_disk.c
+++ b/module/os/linux/zfs/vdev_disk.c
@@ -436,6 +436,16 @@ vdev_submit_bio_impl(struct bio *bio)
#endif
}
+/*
+ * preempt_schedule_notrace is GPL-only which breaks the ZFS build, so
+ * replace it with preempt_schedule under the following condition:
+ */
+#if defined(CONFIG_ARM64) && \
+ defined(CONFIG_PREEMPTION) && \
+ defined(CONFIG_BLK_CGROUP)
+#define preempt_schedule_notrace(x) preempt_schedule(x)
+#endif
+
#ifdef HAVE_BIO_SET_DEV
#if defined(CONFIG_BLK_CGROUP) && defined(HAVE_BIO_SET_DEV_GPL_ONLY)
/*
diff --git a/module/os/linux/zfs/zfs_debug.c b/module/os/linux/zfs/zfs_debug.c
index d98463f1b7f7..8d7f04097da8 100644
--- a/module/os/linux/zfs/zfs_debug.c
+++ b/module/os/linux/zfs/zfs_debug.c
@@ -94,6 +94,7 @@ void
zfs_dbgmsg_init(void)
{
procfs_list_install("zfs",
+ NULL,
"dbgmsg",
0600,
&zfs_dbgmsgs,