From 8503633acc110981bf6cff3640a12db0e6afa573 Mon Sep 17 00:00:00 2001 From: TBK Date: Sat, 9 Mar 2019 01:16:55 +0100 Subject: [PATCH] Real init --- PKGBUILD | 52 ++++++++++++++++++++++++++++++++++++++++++ dkms.conf | 13 +++++++++++ fix-blkdev.patch | 18 +++++++++++++++ fix-makefile.patch | 15 ++++++++++++ fix-module_alias.patch | 26 +++++++++++++++++++++ mount.exfat | 3 +++ 6 files changed, 127 insertions(+) create mode 100644 PKGBUILD create mode 100644 dkms.conf create mode 100644 fix-blkdev.patch create mode 100644 fix-makefile.patch create mode 100644 fix-module_alias.patch create mode 100644 mount.exfat diff --git a/PKGBUILD b/PKGBUILD new file mode 100644 index 0000000..85e06df --- /dev/null +++ b/PKGBUILD @@ -0,0 +1,52 @@ +# Maintainer: TBK +# Contributor: TBK + +pkgname=sdfat-dkms-git +_gitname=kernel-sdfat +pkgver=26.4f65bdd +pkgrel=1 +pkgdesc='FAT12/16/32(VFAT)/64(exFAT) filesytems kernel module - use with DKMS' +arch=('any') +url='https://github.com/cryptomilk/kernel-sdfat' +license=('GPL2') +depends=('dkms') +makedepends=('git' 'linux-headers') +conflicts=('vfat' 'exfat' 'exfat-dkms-git' 'sdfat-dkms-git') +options=('!strip') +source=("${_gitname}::git+${url}.git" + dkms.conf + mount.exfat + fix-blkdev.patch + fix-makefile.patch + fix-module_alias.patch) +sha512sums=('SKIP' + 'd61b198adef98554767c596e9708b64a6ed8cd2ffd382c8cb38938fc467d27e8849969ea94d803683d44397b4f5f0c512c01ed05d0f35fb03611f56401e19a31' + '85c54950e69e342221343b8b542fda47f80b9a7104e1097a7f1c9a09f69758ef8881c238d2740f3a21aa2b5cdcb3b9b8224c731ec2e39fa4632f56c2df85bc84' + 'a84005de882a14a29252956f009d9785435a1dff7e578537eb5d0f222e2d89925aa95f883cd7817becac384ebaa4cc44ef636a41ea8e063b306cfa33add54a69' + 'f55b3ed728ce8716aee0924cd7f27534e25a9e3984bec14e17839e91f1ad290b7e2c9ed85e4f93678f8a0c200c7ed087ec659fb57d84d55e35d4098e3296504e' + '5859133537c76b333eaeaa12f5144528891479d21062bbd90560e7f100f074c4f4b5f846b7ad4d720f2ea4595ace88c3bd3f9b67e5c76ff4b9e4d52989dacf96') + +pkgver() { + cd ${_gitname} + echo $(git rev-list --count master).$(git rev-parse --short master) +} + +prepare() { + # update PACKAGE_VERSION to pkgver + sed -i "s/PACKAGE_VERSION=\"[-._ 0-9a-zA-Z]*\"/PACKAGE_VERSION=\"${pkgver}\"/g" "${srcdir}/dkms.conf" + # apply patchs + cd ${_gitname} + patch -p1 < "${srcdir}/fix-blkdev.patch" + patch -p1 < "${srcdir}/fix-makefile.patch" + patch -p1 < "${srcdir}/fix-module_alias.patch" +} + +package() { + rm -fr ${_gitname}/{.git,.gitignore} + + mkdir -p "${pkgdir}/usr/src" + cp -r ${_gitname} "${pkgdir}/usr/src/sdfat-${pkgver}" + + install -Dm644 "${srcdir}/dkms.conf" "${pkgdir}/usr/src/sdfat-${pkgver}/dkms.conf" + install -Dm755 "${srcdir}/mount.exfat" "${pkgdir}/usr/bin/mount.exfat" +} diff --git a/dkms.conf b/dkms.conf new file mode 100644 index 0000000..d3bef6d --- /dev/null +++ b/dkms.conf @@ -0,0 +1,13 @@ +PACKAGE_VERSION="26.4f65bdd" + +# Items below here should not have to change with each driver version +PACKAGE_NAME="sdfat" +MAKE[0]="make CONFIG_SDFAT_FS=m CONFIG_SDFAT_USE_FOR_EXFAT=y CONFIG_SDFAT_USE_FOR_VFAT=y -C ${kernel_source_dir} SUBDIRS=${dkms_tree}/${PACKAGE_NAME}/${PACKAGE_VERSION}/build modules" +CLEAN="make -C ${kernel_source_dir} SUBDIRS=${dkms_tree}/${PACKAGE_NAME}/${PACKAGE_VERSION}/build clean" + +BUILT_MODULE_NAME="sdfat_fs" +DEST_MODULE_LOCATION="/kernel/fs/sdfat" +MODULES_CONF_OBSOLETES[0]="fat,vfat,exfat" + +AUTOINSTALL="yes" +REMAKE_INITRD="yes" diff --git a/fix-blkdev.patch b/fix-blkdev.patch new file mode 100644 index 0000000..292ae26 --- /dev/null +++ b/fix-blkdev.patch @@ -0,0 +1,18 @@ +--- a/blkdev.c ++++ b/blkdev.c +@@ -118,8 +118,14 @@ s32 bdev_readahead(struct super_block *sb, u64 secno, u64 num_secs) + + blk_start_plug(&plug); + for (i = 0; i < num_secs; i++) { +- if (i && !(i & (sects_per_page - 1))) ++ if (i && !(i & (sects_per_page - 1))) { ++#ifdef MODULE ++ blk_finish_plug(&plug); ++ blk_start_plug(&plug); ++#else + blk_flush_plug(current); ++#endif ++ } + sb_breadahead(sb, (sector_t)(secno + i)); + } + blk_finish_plug(&plug); diff --git a/fix-makefile.patch b/fix-makefile.patch new file mode 100644 index 0000000..adab843 --- /dev/null +++ b/fix-makefile.patch @@ -0,0 +1,15 @@ +--- a/Makefile ++++ b/Makefile +@@ -13,10 +13,10 @@ + + + all: +- make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules ++ @$(MAKE) -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules + + clean: +- make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean ++ @$(MAKE) -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean + + cscope: + rm -rf cscope.files cscope.files diff --git a/fix-module_alias.patch b/fix-module_alias.patch new file mode 100644 index 0000000..8c85a00 --- /dev/null +++ b/fix-module_alias.patch @@ -0,0 +1,26 @@ +--- a/sdfat.c ++++ b/sdfat.c +@@ -5087,6 +5087,7 @@ + #endif /* CONFIG_SDFAT_DBG_IOCTL */ + .fs_flags = FS_REQUIRES_DEV, + }; ++MODULE_ALIAS_FS("sdfat"); + + #ifdef CONFIG_SDFAT_USE_FOR_EXFAT + static struct file_system_type exfat_fs_type = { +@@ -5100,6 +5101,7 @@ + #endif /* CONFIG_SDFAT_DBG_IOCTL */ + .fs_flags = FS_REQUIRES_DEV, + }; ++MODULE_ALIAS_FS("exfat"); + #endif /* CONFIG_SDFAT_USE_FOR_EXFAT */ + + #ifdef CONFIG_SDFAT_USE_FOR_VFAT +@@ -5114,6 +5116,7 @@ + #endif /* CONFIG_SDFAT_DBG_IOCTL */ + .fs_flags = FS_REQUIRES_DEV, + }; ++MODULE_ALIAS_FS("vfat"); + #endif /* CONFIG_SDFAT_USE_FOR_VFAT */ + + static int __init init_sdfat_fs(void) diff --git a/mount.exfat b/mount.exfat new file mode 100644 index 0000000..93501a4 --- /dev/null +++ b/mount.exfat @@ -0,0 +1,3 @@ +#!/bin/sh + +mount -t sdfat "$@"