summaryrefslogtreecommitdiffstats
path: root/fs
Commit message (Collapse)AuthorAgeFilesLines
* Merge branch 'for-next/ubifs'Sascha Hauer2022-02-183-0/+59
|\
| * ubifs: Add zstd supportSascha Hauer2022-02-073-0/+59
| | | | | | | | | | | | | | zstd shows a good compression rate and is faster than lzo. This adds UBIFS support for it. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* | Merge branch 'for-next/efi'Sascha Hauer2022-02-183-58/+103
|\ \
| * | cdev: create iterator for cdev listSascha Hauer2022-02-082-8/+6
| | | | | | | | | | | | | | | | | | | | | | | | This creates an iterator to iterate over all availabe cdevs. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de> Link: https://lore.barebox.org/20220207094953.949868-7-s.hauer@pengutronix.de Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
| * | cdev: Create missing cdev_* functionsSascha Hauer2022-02-082-40/+67
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We have several functions like cdev_read(), cdev_write() and others. For consistency create the remaining functions: cdev_lseek(), cdev_protect(), cdev_discard_range(), cdev_memmap() and cdev_truncate() Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de> Link: https://lore.barebox.org/20220207094953.949868-6-s.hauer@pengutronix.de Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
| * | cdev: implement cdev_open()Sascha Hauer2022-02-081-5/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Implement cdev_open() with the expected semantics that takes a struct cdev * argument. We already have an unimplemented prototype cdev_do_open(), remove this. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de> Reviewed-by: Ahmad Fatoum <a.fatoum@pengutronix.de> Link: https://lore.barebox.org/20220207094953.949868-4-s.hauer@pengutronix.de Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
| * | rename cdev_open() -> cdev_open_by_name()Sascha Hauer2022-02-082-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The cdev_* functions normally take a struct cdev * argument, with the exception of cdev_open(). Rename cdev_open() to cdev_open_by_name() to be able to implement cdev_open() with the expected semantics in the next step. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de> Reviewed-by: Ahmad Fatoum <a.fatoum@pengutronix.de> Link: https://lore.barebox.org/20220207094953.949868-3-s.hauer@pengutronix.de Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
| * | cdev: add diskuuid supportMichael Olbrich2022-02-081-0/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This allows identifying disks by UUID. For disks with GPT the disk GUID is used. For DOS partition tables the NT signature ist used, similar to how the partuuid is generated. Signed-off-by: Michael Olbrich <m.olbrich@pengutronix.de> Link: https://lore.barebox.org/20220124100458.2924679-3-m.olbrich@pengutronix.de Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de> Link: https://lore.barebox.org/20220207094953.949868-2-s.hauer@pengutronix.de Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
| * | cdev: rename partuuid to uuidMichael Olbrich2022-02-082-3/+3
| |/ | | | | | | | | | | | | | | | | | | | | Partitions are not the only devices that can have UUIDs. Change the name to something more generic to prepare for other users. Signed-off-by: Michael Olbrich <m.olbrich@pengutronix.de> Link: https://lore.barebox.org/20220124100458.2924679-2-m.olbrich@pengutronix.de Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de> Link: https://lore.barebox.org/20220207094953.949868-1-s.hauer@pengutronix.de Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* | Merge branch 'for-next/doc'Sascha Hauer2022-02-181-0/+2
|\ \
| * | commands: add missing command groupsAhmad Fatoum2022-01-261-0/+2
| |/ | | | | | | | | | | | | | | | | CMD_GRP_MISC is assumed in absence of an explicit group. Let's be explicit instead to silence the warnings during documentation build. Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de> Link: https://lore.barebox.org/20220124151827.3313412-3-a.fatoum@pengutronix.de Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* / fs: jffs2: fix error when reading blocks with offsetHolger Assmann2022-02-081-1/+5
|/ | | | | | | | | | | | | | | | | | | | | | | | | | | This bug resulted in a panic when trying to read a file partially with an offset, e.g. when starting Linux. In such a case a header is loaded by a separate call of jffs2_read(), which then copies only the first n bytes out of the respective block. When the remaining data of the block is then subsequently going to to be read the system deviates in its behaviour from that under Linux by not calling jffs2_read_inode_range() in a 4k-alignment, but with an offset. jffs2_read_inode_range() originates from the Linux jffs2 driver. When being called with an offset it still reads 4096 bytes of data and eventually returns fragments of two consecutive blocks. jffs2_read() then reads this result whilst again applying the offset, therefore returning faulty data. We fix that problem by calling jffs2_get_block() without an offset and therefore reading the whole block. The offset is then applied when we actually perform memcpy with the returned buffer. This fix might also increase the performance since the respective block is likely to be cached from the previous call. Signed-off-by: Holger Assmann <h.assmann@pengutronix.de> Reviewed-by: Ahmad Fatoum <a.fatoum@pengutronix.de> Link: https://lore.barebox.org/20220207173239.772421-1-h.assmann@pengutronix.de Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* Merge branch 'for-next/spdx'Sascha Hauer2022-01-1945-73/+70
|\
| * treewide: add SPDX-License-Identifier for files without explicit licenseAhmad Fatoum2022-01-056-0/+12
| | | | | | | | | | | | | | | | | | Record GPL-2.0-only as license for all files lacking an explicit license statement. Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de> Link: https://lore.barebox.org/20220103120539.1730644-12-a.fatoum@pengutronix.de Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
| * fs: jffs2: add SPDX-License-Identifier: GPL-2.0-onlyAhmad Fatoum2022-01-0524-73/+29
| | | | | | | | | | | | | | | | | | The files refer to the (Linux) top-level LICENSE file. Replace that with GPL-2.0-only. Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de> Link: https://lore.barebox.org/20220103120539.1730644-6-a.fatoum@pengutronix.de Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
| * treewide: add SPDX-License-Identifier for Kbuild/KconfigAhmad Fatoum2022-01-0515-0/+29
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | To verify only Kconfig/Makefile is touched: git show --numstat --format=oneline HEAD | grep -v 'Kconfig\|Makefile' will print only arch/powerpc/Kbuild. To verify nothing unexpected is added: git show -U0 | grep '^-[^-]\|^+[^+]' | sort -u Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de> Link: https://lore.barebox.org/20220103120539.1730644-3-a.fatoum@pengutronix.de Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* | fs: implement pushd/popd chdir wrappersAhmad Fatoum2022-01-121-0/+30
|/ | | | | | | | | | | We don't have dirfd's, so running operations relative to the current working directory always involves some allocation/freeing boilerplate. Add pushd/popd helpers to move the boilerplate out of the callsites. Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de> Link: https://lore.barebox.org/20220108171555.588426-1-a.fatoum@pengutronix.de Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* Merge branch 'for-next/efi'Sascha Hauer2021-12-153-107/+29
|\
| * efi: centralize efivarfs_parse_filenameAhmad Fatoum2021-11-251-76/+0
| | | | | | | | | | | | | | | | | | Turning an EFI varfs filename into its components will be useful for the EFI loader as well, so factor that out. Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de> Link: https://lore.barebox.org/20211122084732.2597109-15-a.fatoum@pengutronix.de Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
| * efi: rename <efi/efi.h> to <efi/efi-payload.h>Ahmad Fatoum2021-11-252-2/+2
| | | | | | | | | | | | | | | | | | | | | | The split between <efi.h> and <efi/efi.h> is confusing: The former contains universal definitions, while the latter contains barebox utilities on top. To make the distinction clear, rename <efi/efi.h> to <efi/efi-payload.h> as it's used for EFI payloads. Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de> Link: https://lore.barebox.org/20211122084732.2597109-14-a.fatoum@pengutronix.de Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
| * fs: remove useless AT_FDCWD referencesAhmad Fatoum2021-11-251-29/+27
| | | | | | | | | | | | | | | | | | | | All name lookups by barebox are AT_FDCWD and there are no dirfd support that could be used in its place, so just remove that parameter altogether from the FS functions. Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de> Link: https://lore.barebox.org/20211122084732.2597109-2-a.fatoum@pengutronix.de Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* | fs: /dev/mem: handle copy at offset 0 correctlyAhmad Fatoum2021-12-071-1/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Despite that /dev/mem has a size of 0, the check preventing out-of-bounds access works for /dev/mem as well, because of unsigned wrap around. Corner case is when offset is zero. There will be no wrap around and count = min(count, 0 - 0) = 0 Leading to unexpected behavior with e.g. memcmp -s /dev/mem 0 on systems without MMU. Fix this. Signed-off-by: Ahmad Fatoum <ahmad@a3f.at> Link: https://lore.barebox.org/20211129071454.2014315-1-ahmad@a3f.at Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* | fs: jffs2: remove unnecessary slab cache structureHolger Assmann2021-11-303-124/+20
| | | | | | | | | | | | | | | | | | | | | | | | jffs2_create_slab_caches() and its subsequent kmem_cache calls are not needed in Barebox since they can directly be replaced by malloc calls. This patch performs that replacement as well as the related clean up. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de> Signed-off-by: Holger Assmann <h.assmann@pengutronix.de> Link: https://lore.barebox.org/20211129124545.14171-3-h.assmann@pengutronix.de Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* | fs: jffs2: introduce reference counting at probeHolger Assmann2021-11-301-12/+22
|/ | | | | | | | | | | | | | | | | | | | | | | The Barebox jffs2 driver initialises global slab caches and compressors within the probing stage [1]. In Barebox, jffs2_create_slab_caches() has several calls to kmem_cache_create() which does nothing more than allocating the context data structure for the kmem_cache. Probing a second jffs2 however will overwrite the original pointers returned by kmem_cache_create(), leading to a double free when more than one jffs2 file system gets unmounted and jffs2_destroy_slab_caches() is called. The same issue exists regarding jffs2_compressors_init(). We can fix this bug by introducing reference counting for both the slab caches and the compressors so that the global data structures are kept as long as at least one file system is present. [1] jffs2_compressors_init(), jffs2_create_slab_caches() in probe() Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de> Signed-off-by: Holger Assmann <h.assmann@pengutronix.de> Link: https://lore.barebox.org/20211129124545.14171-2-h.assmann@pengutronix.de Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* include: add dedicated header for printf/printkAhmad Fatoum2021-11-013-3/+3
| | | | | | | | | | | | Including <stdio.h> for printf is a bit problematic, because it pulls in other headers for <console.h>, which includes quite a few more headers as well. To make it easier to share code between barebox and host tools make <printk.h> the new minimal header for printf and move the extra logging stuff into <linux/printk.h>. Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de> Link: https://lore.barebox.org/20211030141739.2207431-3-a.fatoum@pengutronix.de Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* fs: ramfs: drop free of unused dev->privAhmad Fatoum2021-11-011-1/+0
| | | | | | | | | This probably was a benign free(NULL) so far, but it serves no point, so drop it. Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de> Link: https://lore.barebox.org/20211030141707.2207152-1-a.fatoum@pengutronix.de Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* devfs: Do not create overlapping partitionsSascha Hauer2021-10-121-0/+34
| | | | | | | | | | | | | | | Until now it has been possible to create overlapping partitions. Go away from that and allow to create partitions only in unallocated areas of a device. This lowers the risk of having inconsistent partitioning and increases the chance that inconsistent partitioning is recognized by the user. We had explicit overlap checking for the environment partition which becomes unnecessary with this change and is removed. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de> Link: https://lore.barebox.org/20211011073025.4187545-1-s.hauer@pengutronix.de Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* fs: remove unused struct fs_device_d::parent_deviceAhmad Fatoum2021-10-051-1/+0
| | | | | | | | The parent_device member is unused anywhere, so drop it. Signed-off-by: Ahmad Fatoum <ahmad@a3f.at> Link: https://lore.barebox.org/20210913083019.364599-1-ahmad@a3f.at Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* Merge branch 'for-next/nvmem'Sascha Hauer2021-07-181-1/+1
|\
| * nvmem: add support for new read-only memory (rmem) bindingAhmad Fatoum2021-06-211-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | Only upstream user of this binding is the raspberry pi 4 DT, where it's used to pass along bootloader-provided info to Linux. We have instances in barebox, where a previous stage bootloader passes along a memory region with info for barebox to interpret. This could in future be modelled as nvmem-rmem nodes. The binding is also quite handy for debugging. Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de> Link: https://lore.barebox.org/20210619034516.6737-4-a.fatoum@pengutronix.de Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* | fs: fix NULL pointer dereference of fsdrv->truncate for read-only FSAhmad Fatoum2021-07-091-6/+10
|/ | | | | | | | | | | | | | fsdrv->truncate is dereferenced at times without checking for NULL before, leading to crashes, e.g. doing: edit -o /mnt/myext4/FILE some text on ext4 crashes. Fix this by returning -EROFS when truncate is unimplemented. Reported-by: Xogium <contact@xogium.me> Signed-off-by: Ahmad Fatoum <ahmad@a3f.at> Link: https://lore.barebox.org/20210707065251.760827-1-ahmad@a3f.at Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* fs: nfs: Start earlier to resend requestsUwe Kleine-König2021-06-111-2/+2
| | | | | | | | | | | | | | | | | | | | On a customer site we're experience a bit over 1% UDP packet loss. When wiresharking an NFS transfer of a kernel image (with the goal to boot via NFS) I saw 64 of 2555 RPC calls staying unanswered. With the current timeout setting each of them introduces a delay of 2 seconds and the whole transfer takes 137s. With the timeout reduced to 0.1s the transfer time is not optimal (going down to approx 15 seconds) but at least it becomes bearable. To still cope with a slow network (in contrast to an unreliable as pictured above) increase NFS_MAX_RESEND to keep NFS_TIMEOUT * NFS_MAX_RESEND (which defines the overall timeout before aborting the transfer) constant. Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de> Acked-by: Gavin Schenk <g.schenk@eckelmann.de> Link: https://lore.barebox.org/20210611071351.1445370-1-u.kleine-koenig@pengutronix.de Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* Merge branch 'for-next/usb-gadget'Sascha Hauer2021-05-171-3/+3
|\
| * fs: error out when writing on read-only file systemAhmad Fatoum2021-05-121-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | On an ext4 partition, Running echo -a /mnt/disk0.0/file test will crash barebox because fsdrv->truncate in __write is NULL. Don't let it come to this and verify earlier that the FS implements ->write. While at it, explicitly compare with O_RDONLY (== 0) for clarity. Fixes: b3fbfad7aeaf ("fs: dentry cache implementation") Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de> Link: https://lore.barebox.org/20210503114901.13095-17-a.fatoum@pengutronix.de Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* | Merge branch 'for-next/misc'Sascha Hauer2021-05-171-1/+1
|\ \
| * | fs: nfs: Fix readlink max size checkSascha Hauer2021-05-121-1/+1
| |/ | | | | | | | | | | | | | | | | | | We must at maximum use all remaining bytes from the packet. This means we have to set length to the *minimum* of the desired length and the remaining bytes, not the *maximum*. /me goes hiding somewhere... Fixes: 574ce99401 ("fs: nfs: Fix possible buffer overflow") Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* | Merge branch 'for-next/mci'Sascha Hauer2021-05-171-4/+39
|\ \
| * | fs: add linux_rootarg 'root=mmcblkXpN' supportMarco Felsch2021-05-121-4/+39
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since commit fa2d0aa96941 ("mmc: core: Allow setting slot index via device tree alias") the linux kernel supports stable mmc device names. Barebox has stable names since years so now we can connect both which allows us to pass 'root=mmcblkXpN' as argument for the cmdline. Note: it is crucial that the kernel device tree and the barebox device tree uses the same mmc aliases. This patch adds the support to store the above cmdline as linux_rootarg if enabled. The partuuid is now used as fallback since it is not as unique as the mmcblkXpN scheme. It is added as build option since the system integrator needs to check if the used kernel contains the above commit. Signed-off-by: Marco Felsch <m.felsch@pengutronix.de> Link: https://lore.barebox.org/20210510102523.7147-3-m.felsch@pengutronix.de Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* | | fs: check getname() return value in open()Sascha Hauer2021-05-071-1/+7
| | | | | | | | | | | | | | | | | | | | | | | | getname() can return an error when for example the input path is an empty string. Check the getname() return value in open() before further using it. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* | | fs: check for valid name in filename_lookup()Sascha Hauer2021-05-071-0/+3
| | | | | | | | | | | | | | | | | | | | | The getname() return value is passed to filename_lookup() without checking the return value, so this must be done in filename_lookup(). Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* | | fs: check for empty name in getname()Sascha Hauer2021-05-071-2/+5
|/ / | | | | | | | | | | | | getname() should return an error for an empty path. While at it, change getname() to return an error pointer. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* / fs: Fix link_path_walk to return -ENOENT on empty pathJules Maselbas2021-05-031-0/+2
|/ | | | | | | | | | | | | | | link_path_walk was returning 0 when passed with an empty path, this lead calling code to assume that the struct nameidata nd is valid and thus has a `last` field populated, which is not. In the end causing a runtime crash. This issue can easily be reproduced by running the command: cat "" Reported-by: Neeraj Pal <neerajpal09@gmail.com> Signed-off-by: Jules Maselbas <jmaselbas@kalray.eu> Link: https://lore.barebox.org/20210417233409.637-1-jmaselbas@kalray.eu Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* fs: ext4: fix bogus behavior on failure to read ext4 blockAhmad Fatoum2021-03-291-4/+4
| | | | | | | | | | | | | | The conversion of blknr from a signed 32-bit to an unsigned 64-type resulted in the check for error to never return true. Fix this. Affected configuration would behave incorrectly when served with invalid blocks. Instead of aborting and having the filesystem bubble up an error code, it would return invalid data. As there is no ext4 write support, this wouldn't lead to ext4 data corruption however. Reported-by: Bastian Krause <bst@pengutronix.de> Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* Merge branch 'for-next/misc'Sascha Hauer2021-03-231-10/+19
|\
| * fs: Fix default mount when device already mountedStefan Riedmueller2021-03-171-9/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Let cdev_mount_default return an error in case the device is already mounted to a different location than the default mount point. Otherwise the automount routine can get stuck in an infinite loop spamming: mounted /dev/mmc0.0 on /mnt/mmc mounted /dev/mmc0.0 on /mnt/mmc mounted /dev/mmc0.0 on /mnt/mmc Signed-off-by: Stefan Riedmueller <s.riedmueller@phytec.de> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
| * fs: delete unused members in <linux/stat.h>Ahmad Fatoum2021-03-161-1/+0
| | | | | | | | | | | | | | | | Most of the struct is stuff we don't use and likely won't any time soon. Drop them. Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* | fs: ubifs: remove unused variableSascha Hauer2021-03-121-2/+0
|/ | | | | | 'current' is unused. Remove it. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* Merge branch 'for-next/misc'Sascha Hauer2021-02-221-6/+36
|\
| * fs: increase reference count for backing store when loop mountingAhmad Fatoum2021-02-161-6/+36
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The VFS layer already increase the mount reference count for the mount point. This means e.g. following sequence is well-behaving: mkdir -p /mnt/disk0.0/media mount -o loop backing.squashfs /mnt/disk0.0/media umount /mnt/disk0.0 barebox will do the right thing and report umount: Device or resource busy However the reference count of the file where backing.squashfs comes from is not incremented on mount with the effect that following sequence crashes: mkdir -p /media mount -o loop /mnt/disk0.0/backing.squashfs /media umount /mnt/disk0.0 # should've returned EBUSY umount /media Fix this by touching the backing store's mount reference count when loop mounting and unmounting. Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* | Merge branch 'for-next/ext4'Sascha Hauer2021-02-226-63/+49
|\ \