Skip to content

0.30.8 #137

Merged
merged 4 commits into from Oct 28, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
2 changes: 1 addition & 1 deletion Makefile
@@ -1,6 +1,6 @@
MXQ_VERSION_MAJOR = 0
MXQ_VERSION_MINOR = 30
MXQ_VERSION_PATCH = 7
MXQ_VERSION_PATCH = 8
MXQ_VERSION_EXTRA = "beta"
MXQ_VERSIONDATE = 2022

Expand Down
42 changes: 0 additions & 42 deletions helper/create_job_tmpdir

This file was deleted.

53 changes: 41 additions & 12 deletions helper/tmpdir-setup
Expand Up @@ -20,6 +20,8 @@ cmd_create() {

filename=$tmpdir/$MXQ_JOBID.tmp
mountpoint=$mntdir/$MXQ_JOBID
dmname=mxq.$MXQ_JOBID
dmdevice=/dev/mapper/$dmname

umask 006
mkdir -p $tmpdir
Expand All @@ -29,15 +31,19 @@ cmd_create() {

if fallocate -l ${MXQ_SIZE}G $filename; then
if loopdevice=$(losetup --find --show $filename); then
if mkfs.ext4 \
-q \
-m 0 \
-E nodiscard,mmp_update_interval=300,lazy_journal_init=1,root_owner=$MXQ_UID:0 \
-O '64bit,ext_attr,filetype,^has_journal,huge_file,inline_data,^mmp,^quota,sparse_super2' \
$loopdevice \
&& mkdir -p $mountpoint && mount -Odata=writeback,barrier=0 $loopdevice $mountpoint; then
rmdir $mountpoint/lost+found
status=0
if dmsetup create $dmname --table "0 $((MXQ_SIZE*1024*1024*2)) linear $loopdevice 0"; then
if mkfs.ext4 \
-q \
-m 0 \
-E nodiscard,mmp_update_interval=300,lazy_journal_init=1,root_owner=$MXQ_UID:0 \
-O '64bit,ext_attr,filetype,^has_journal,huge_file,inline_data,^mmp,^quota,sparse_super2' \
$dmdevice \
&& mkdir -p $mountpoint && mount -Odata=writeback,barrier=0 $dmdevice $mountpoint; then
rmdir $mountpoint/lost+found
status=0
else
dmsetup remove --force --deferred $dmname
fi
fi
losetup -d $loopdevice
fi
Expand All @@ -52,12 +58,35 @@ cmd_cleanup() {
(( $# == 1 )) || usage
MXQ_JOBID=$1

(
shopt -s dotglob;
# Support rolling upgrade: Use old code if loop device is directly mounted without a dm device in between.
#
if [[ $(findmnt --output SOURCE --noheadings /dev/shm/mxqd/mnt/job/$MXQ_JOBID) =~ ^/dev/loop ]]; then
shopt -s dotglob
rm -rf /dev/shm/mxqd/mnt/job/$MXQ_JOBID/*
umount /dev/shm/mxqd/mnt/job/$MXQ_JOBID
rmdir /dev/shm/mxqd/mnt/job/$MXQ_JOBID
) &
exit
fi

mountpoint=$mntdir/$MXQ_JOBID
dmname=mxq.$MXQ_JOBID
dmdevice=/dev/mapper/$dmname
minor=$(( 0x$(stat -c%T $dmdevice) ))
sectors=$(cat /sys/block/dm-$minor/size)

# fs/ext4/ext4.h: #define EXT4_IOC_SHUTDOWN _IOR ('X', 125, __u32)
# (_IOC_READ << 30) + (sizeof(_u32) << 16) + ( 'X' << 8 ) + 125
# ( 2 << 30 ) + ( 4 << 16 ) + ( 88 << 8 ) + 125 = 2147768445
# fs/ext4/ext4.h: #define EXT4_GOING_FLAGS_NOLOGFLUSH 0x2 /* don't flush log nor data */

/usr/local/system/perl/bin/perl -e "open F, '<', '$mountpoint/.' ; \$d=pack('L', 2) ; ioctl (F, 2147768445, \$d)"

dmsetup reload $dmname --table "0 $sectors zero"
dmsetup resume $dmname --noflush
umount --lazy $mountpoint
dmsetup remove $dmname
rmdir $mountpoint
>>>>>>> b249091 (tmpdir-setup: Avoid flush of TMPDIR)
}

(( $# > 0 )) || usage
Expand Down