mirror of
https://github.com/rd-stuffs/msm-4.14.git
synced 2025-02-20 11:45:48 +08:00
Merge commit 'd7cd524f7fb71a99dec757bd00920a4522c39ce0' into richelieu
* commit 'd7cd524f7fb71a99dec757bd00920a4522c39ce0': exfat: add auto build-test and simple stability test using travis-CI exfat: Drop superfluous new line for error messages exfat: Downgrade ENAMETOOLONG error message to debug messages exfat: Expand exfat_err() and co directly to pr_*() macro exfat: Define NLS_NAME_* as bit flags explicitly exfat: Return ENAMETOOLONG consistently for oversized paths
This commit is contained in:
commit
c535b62e9b
96
fs/exfat/.travis.yml
Normal file
96
fs/exfat/.travis.yml
Normal file
@ -0,0 +1,96 @@
|
||||
dist: bionic
|
||||
|
||||
language: c
|
||||
|
||||
notifications:
|
||||
- email: true
|
||||
|
||||
before_script:
|
||||
# Download the kernel
|
||||
- sudo apt-get install libelf-dev wget tar gzip python
|
||||
- wget https://mirrors.edge.kernel.org/pub/linux/kernel/v4.x/linux-4.1.36.tar.gz
|
||||
- tar xf linux-4.1.36.tar.gz
|
||||
- mv linux-4.1.36 linux-stable
|
||||
- ./.travis_get_mainline_kernel
|
||||
- cp ./.travis_cmd_wrapper.pl ~/travis_cmd_wrapper.pl
|
||||
# Prerequisite for xfstests testing
|
||||
- sudo apt-get install linux-headers-$(uname -r)
|
||||
- sudo apt-get install autoconf libtool pkg-config libnl-3-dev libnl-genl-3-dev
|
||||
- sudo apt-get install xfslibs-dev uuid-dev libtool-bin xfsprogs libgdbm-dev gawk fio attr libattr1-dev libacl1-dev libaio-dev
|
||||
- git clone --branch=exfat-next https://github.com/exfat-utils/exfat-utils
|
||||
- git clone https://github.com/namjaejeon/exfat-testsuites
|
||||
- export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
|
||||
- export PATH=/usr/local/lib:$PATH
|
||||
- sudo useradd fsgqa
|
||||
- sudo useradd 123456-fsgqa
|
||||
|
||||
script:
|
||||
# Copy ksmbd source to kernel
|
||||
- mv linux-stable ../
|
||||
- mv linux ../
|
||||
- mkdir ../linux-stable/fs/exfat
|
||||
- cp -ar * ../linux-stable/fs/exfat/
|
||||
- cp -ar * ../linux/fs/exfat/
|
||||
|
||||
# Compile with 4.1 kernel
|
||||
- cd ../linux-stable
|
||||
- yes "" | make oldconfig > /dev/null
|
||||
- echo 'obj-$(CONFIG_EXFAT_FS) += exfat/' >> fs/Makefile
|
||||
- echo 'source "fs/exfat/Kconfig"' >> fs/Kconfig
|
||||
- echo 'CONFIG_EXFAT_FS=m' >> .config
|
||||
- echo 'CONFIG_EXFAT_DEFAULT_IOCHARSET="utf8"' >> .config
|
||||
- make -j$((`nproc`+1)) fs/exfat/exfat.ko
|
||||
|
||||
# Compile with latest Torvalds' kernel
|
||||
# - cd ../linux
|
||||
# - yes "" | make oldconfig > /dev/null
|
||||
# - echo 'obj-$(CONFIG_EXFAT) += exfat/' >> fs/Makefile
|
||||
# - echo 'source "fs/exfat/Kconfig"' >> fs/Kconfig
|
||||
# - echo 'CONFIG_EXFAT_FS=m' >> .config
|
||||
# - echo 'CONFIG_EXFAT_DEFAULT_IOCHARSET="utf8"' >> .config
|
||||
# - make -j$((`nproc`+1)) fs/exfat/exfat.ko
|
||||
|
||||
# Run xfstests testsuite
|
||||
- cd ../linux-exfat-oot
|
||||
- make > /dev/null
|
||||
- sudo make install > /dev/null
|
||||
- sudo modprobe exfat
|
||||
- cd exfat-utils
|
||||
- ./autogen.sh > /dev/null
|
||||
- ./configure > /dev/null
|
||||
- make -j$((`nproc`+1)) > /dev/null
|
||||
- sudo make install > /dev/null
|
||||
- sudo mkdir -p /mnt/scratch
|
||||
- sudo mkdir -p /mnt/test
|
||||
- sudo mkdir -p /mnt/full_test
|
||||
# create file/director test
|
||||
- truncate -s 10G full_test.img
|
||||
- sudo losetup /dev/loop22 full_test.img
|
||||
- sudo mkfs.exfat /dev/loop22
|
||||
- sudo mount -t exfat /dev/loop22 /mnt/full_test/
|
||||
- cd /mnt/full_test/
|
||||
- i=1;while [ $i -le 10000 ];do sudo touch file$i;if [ $? != 0 ]; then exit 1; fi; i=$(($i + 1));done
|
||||
- sync
|
||||
- sudo fsck.exfat /dev/loop22
|
||||
- sudo rm -rf *
|
||||
- i=1;while [ $i -le 10000 ];do sudo mkdir file$i;if [ $? != 0 ]; then exit 1; fi; i=$(($i + 1));done
|
||||
- sync
|
||||
- sudo rm -rf *
|
||||
- sudo fsck.exfat /dev/loop22
|
||||
- cd -
|
||||
- sudo umount /mnt/full_test/
|
||||
- sudo fsck.exfat /dev/loop22
|
||||
# run xfstests test
|
||||
- truncate -s 100G test.img
|
||||
- truncate -s 100G scratch.img
|
||||
- sudo losetup /dev/loop20 test.img
|
||||
- sudo losetup /dev/loop21 scratch.img
|
||||
- sudo mkfs.exfat /dev/loop20
|
||||
- sudo mkfs.exfat /dev/loop21
|
||||
- cd ..
|
||||
- cd exfat-testsuites/
|
||||
- tar xzvf xfstests-exfat.tgz > /dev/null
|
||||
- cd xfstests-exfat
|
||||
- make -j$((`nproc`+1)) > /dev/null
|
||||
- sudo ./check generic/001
|
||||
- sudo ./check generic/006
|
@ -36,9 +36,9 @@ enum exfat_error_mode {
|
||||
* exfat nls lossy flag
|
||||
*/
|
||||
enum {
|
||||
NLS_NAME_NO_LOSSY, /* no lossy */
|
||||
NLS_NAME_LOSSY, /* just detected incorrect filename(s) */
|
||||
NLS_NAME_OVERLEN, /* the length is over than its limit */
|
||||
NLS_NAME_NO_LOSSY = 0, /* no lossy */
|
||||
NLS_NAME_LOSSY = 1 << 0, /* just detected incorrect filename(s) */
|
||||
NLS_NAME_OVERLEN = 1 << 1, /* the length is over than its limit */
|
||||
};
|
||||
|
||||
#define EXFAT_HASH_BITS 8
|
||||
@ -541,14 +541,16 @@ void __exfat_fs_error(struct super_block *sb, int report, const char *fmt, ...)
|
||||
#define exfat_fs_error_ratelimit(sb, fmt, args...) \
|
||||
__exfat_fs_error(sb, __ratelimit(&EXFAT_SB(sb)->ratelimit), \
|
||||
fmt, ## args)
|
||||
void exfat_msg(struct super_block *sb, const char *lv, const char *fmt, ...)
|
||||
__printf(3, 4) __cold;
|
||||
|
||||
/* expand to pr_*() with prefix */
|
||||
#define exfat_err(sb, fmt, ...) \
|
||||
exfat_msg(sb, KERN_ERR, fmt, ##__VA_ARGS__)
|
||||
pr_err("exFAT-fs (%s): " fmt "\n", (sb)->s_id, ##__VA_ARGS__)
|
||||
#define exfat_warn(sb, fmt, ...) \
|
||||
exfat_msg(sb, KERN_WARNING, fmt, ##__VA_ARGS__)
|
||||
pr_warn("exFAT-fs (%s): " fmt "\n", (sb)->s_id, ##__VA_ARGS__)
|
||||
#define exfat_info(sb, fmt, ...) \
|
||||
exfat_msg(sb, KERN_INFO, fmt, ##__VA_ARGS__)
|
||||
pr_info("exFAT-fs (%s): " fmt "\n", (sb)->s_id, ##__VA_ARGS__)
|
||||
#define exfat_debug(sb, fmt, ...) \
|
||||
pr_debug("exFAT-fs (%s): " fmt "\n", (sb)->s_id, ##__VA_ARGS__)
|
||||
|
||||
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 19, 0)
|
||||
void exfat_get_entry_time(struct exfat_sb_info *sbi, struct timespec64 *ts,
|
||||
|
@ -346,7 +346,7 @@ int exfat_alloc_cluster(struct inode *inode, unsigned int num_alloc,
|
||||
/* find new cluster */
|
||||
if (hint_clu == EXFAT_EOF_CLUSTER) {
|
||||
if (sbi->clu_srch_ptr < EXFAT_FIRST_CLUSTER) {
|
||||
exfat_err(sb, "sbi->clu_srch_ptr is invalid (%u)\n",
|
||||
exfat_err(sb, "sbi->clu_srch_ptr is invalid (%u)",
|
||||
sbi->clu_srch_ptr);
|
||||
sbi->clu_srch_ptr = EXFAT_FIRST_CLUSTER;
|
||||
}
|
||||
|
@ -52,23 +52,6 @@ void __exfat_fs_error(struct super_block *sb, int report, const char *fmt, ...)
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* exfat_msg() - print preformated EXFAT specific messages.
|
||||
* All logs except what uses exfat_fs_error() should be written by exfat_msg()
|
||||
*/
|
||||
void exfat_msg(struct super_block *sb, const char *level, const char *fmt, ...)
|
||||
{
|
||||
struct va_format vaf;
|
||||
va_list args;
|
||||
|
||||
va_start(args, fmt);
|
||||
vaf.fmt = fmt;
|
||||
vaf.va = &args;
|
||||
/* level means KERN_ pacility level */
|
||||
printk("%sexFAT-fs (%s): %pV\n", level, sb->s_id, &vaf);
|
||||
va_end(args);
|
||||
}
|
||||
|
||||
#define SECS_PER_MIN (60)
|
||||
#define TIMEZONE_SEC(x) ((x) * 15 * SECS_PER_MIN)
|
||||
|
||||
|
@ -469,7 +469,7 @@ static int __exfat_resolve_path(struct inode *inode, const unsigned char *path,
|
||||
return namelen; /* return error value */
|
||||
|
||||
if ((lossy && !lookup) || !namelen)
|
||||
return -EINVAL;
|
||||
return (lossy & NLS_NAME_OVERLEN) ? -ENAMETOOLONG : -EINVAL;
|
||||
|
||||
exfat_chain_set(p_dir, ei->start_clu,
|
||||
EXFAT_B_TO_CLU(i_size_read(inode), sbi), ei->flags);
|
||||
|
@ -513,7 +513,7 @@ static int exfat_utf8_to_utf16(struct super_block *sb,
|
||||
}
|
||||
|
||||
if (unilen > MAX_NAME_LENGTH) {
|
||||
exfat_err(sb, "failed to %s (estr:ENAMETOOLONG) nls len : %d, unilen : %d > %d",
|
||||
exfat_debug(sb, "failed to %s (estr:ENAMETOOLONG) nls len : %d, unilen : %d > %d",
|
||||
__func__, len, unilen, MAX_NAME_LENGTH);
|
||||
return -ENAMETOOLONG;
|
||||
}
|
||||
@ -679,7 +679,7 @@ static int exfat_load_upcase_table(struct super_block *sb,
|
||||
|
||||
bh = sb_bread(sb, sector);
|
||||
if (!bh) {
|
||||
exfat_err(sb, "failed to read sector(0x%llx)\n",
|
||||
exfat_err(sb, "failed to read sector(0x%llx)",
|
||||
(unsigned long long)sector);
|
||||
ret = -EIO;
|
||||
goto free_table;
|
||||
|
@ -547,9 +547,9 @@ static int parse_options(struct super_block *sb, char *options, int silent,
|
||||
break;
|
||||
default:
|
||||
if (!silent) {
|
||||
exfat_msg(sb, KERN_ERR,
|
||||
"unrecognized mount option \"%s\" or missing value",
|
||||
p);
|
||||
exfat_err(sb,
|
||||
"unrecognized mount option \"%s\" or missing value",
|
||||
p);
|
||||
}
|
||||
return -EINVAL;
|
||||
}
|
||||
@ -728,7 +728,7 @@ static int exfat_read_boot_sector(struct super_block *sb)
|
||||
*/
|
||||
if (p_boot->sect_size_bits < EXFAT_MIN_SECT_SIZE_BITS ||
|
||||
p_boot->sect_size_bits > EXFAT_MAX_SECT_SIZE_BITS) {
|
||||
exfat_err(sb, "bogus sector size bits : %u\n",
|
||||
exfat_err(sb, "bogus sector size bits : %u",
|
||||
p_boot->sect_size_bits);
|
||||
return -EINVAL;
|
||||
}
|
||||
@ -737,7 +737,7 @@ static int exfat_read_boot_sector(struct super_block *sb)
|
||||
* sect_per_clus_bits could be at least 0 and at most 25 - sect_size_bits.
|
||||
*/
|
||||
if (p_boot->sect_per_clus_bits > EXFAT_MAX_SECT_PER_CLUS_BITS(p_boot)) {
|
||||
exfat_err(sb, "bogus sectors bits per cluster : %u\n",
|
||||
exfat_err(sb, "bogus sectors bits per cluster : %u",
|
||||
p_boot->sect_per_clus_bits);
|
||||
return -EINVAL;
|
||||
}
|
||||
@ -938,7 +938,7 @@ static int exfat_fill_super(struct super_block *sb, void *data, int silent)
|
||||
DEFAULT_RATELIMIT_BURST);
|
||||
err = parse_options(sb, data, silent, &sbi->options);
|
||||
if (err) {
|
||||
exfat_msg(sb, KERN_ERR, "failed to parse options");
|
||||
exfat_err(sb, "failed to parse options");
|
||||
goto check_nls_io;
|
||||
}
|
||||
#endif
|
||||
|
Loading…
x
Reference in New Issue
Block a user