Bump Linux kernel to 5.10
This bumps our Linux kernel to 5.10. There's one minor fix in fsinfo accounting for the fact that strings are
now null-terminated. While debugging this I also drive-by fixed a minor typing issue in quotactl.go.
This drops support for the old initramfs loading method (which was the driving force for the EROFS changes)
as refactors in the kernel made the patch we carried until now non-viable. Nothing uses it anymore, everything is
either a microvm-style machine which doesn't use EFI and thus doesn't suffer from the issue or uses EROFS.
Test Plan: No new functionality, should be covered by E2E tests.
X-Origin-Diff: phab/D697
GitOrigin-RevId: d8e40954abb66cb082eecbca372b94a7e40b84a8
diff --git a/third_party/linux/external/0001-fsinfo-Introduce-a-non-repeating-system-unique-super.patch b/third_party/linux/external/0001-fsinfo-Introduce-a-non-repeating-system-unique-super.patch
new file mode 100644
index 0000000..831114e
--- /dev/null
+++ b/third_party/linux/external/0001-fsinfo-Introduce-a-non-repeating-system-unique-super.patch
@@ -0,0 +1,70 @@
+From 2ed1d2a0a5bf09ab741f5c3d6d10021c0702be08 Mon Sep 17 00:00:00 2001
+From: David Howells <dhowells@redhat.com>
+Date: Fri, 5 Jul 2019 11:10:10 +0100
+Subject: [PATCH 1/3] fsinfo: Introduce a non-repeating system-unique
+ superblock ID
+
+Introduce an (effectively) non-repeating system-unique superblock ID that
+can be used to determine that two objects are in the same superblock
+without needing to worry about the ID changing in the meantime (as is
+possible with device IDs).
+
+The counter could also be used to tag other features, such as mount
+objects.
+
+Signed-off-by: David Howells <dhowells@redhat.com>
+---
+ fs/internal.h | 1 +
+ fs/super.c | 2 ++
+ include/linux/fs.h | 3 +++
+ 3 files changed, 6 insertions(+)
+
+diff --git a/fs/internal.h b/fs/internal.h
+index a7cd0f64faa4a..1b7460f055a3b 100644
+--- a/fs/internal.h
++++ b/fs/internal.h
+@@ -112,6 +112,7 @@ extern struct file *alloc_empty_file_noaccount(int, const struct cred *);
+ /*
+ * super.c
+ */
++extern atomic64_t vfs_unique_counter;
+ extern int reconfigure_super(struct fs_context *);
+ extern bool trylock_super(struct super_block *sb);
+ extern struct super_block *user_get_super(dev_t);
+diff --git a/fs/super.c b/fs/super.c
+index 98bb0629ee108..31fadb7189d27 100644
+--- a/fs/super.c
++++ b/fs/super.c
+@@ -44,6 +44,7 @@ static int thaw_super_locked(struct super_block *sb);
+
+ static LIST_HEAD(super_blocks);
+ static DEFINE_SPINLOCK(sb_lock);
++atomic64_t vfs_unique_counter; /* Unique identifier counter */
+
+ static char *sb_writers_name[SB_FREEZE_LEVELS] = {
+ "sb_writers",
+@@ -273,6 +274,7 @@ static struct super_block *alloc_super(struct file_system_type *type, int flags,
+ goto fail;
+ if (list_lru_init_memcg(&s->s_inode_lru, &s->s_shrink))
+ goto fail;
++ s->s_unique_id = atomic64_inc_return(&vfs_unique_counter);
+ return s;
+
+ fail:
+diff --git a/include/linux/fs.h b/include/linux/fs.h
+index 8bde32cf97115..e1325dec4fa86 100644
+--- a/include/linux/fs.h
++++ b/include/linux/fs.h
+@@ -1547,6 +1547,9 @@ struct super_block {
+
+ spinlock_t s_inode_wblist_lock;
+ struct list_head s_inodes_wb; /* writeback inodes */
++
++ /* Superblock information */
++ u64 s_unique_id;
+ } __randomize_layout;
+
+ /* Helper functions so that in most cases filesystems will
+--
+2.25.1
+