diff --git a/Makefile b/Makefile index 3020bb79..30a8f5d8 100644 --- a/Makefile +++ b/Makefile @@ -596,6 +596,11 @@ build: mxqps clean: CLEAN += mxqps +### script helper ----------------------------------------------------- + +install:: helper/create_job_tmpdir + $(call quiet-install,0755,$^,${DESTDIR}${LIBEXECDIR}/mxq/create_job_tmpdir) + ######################################################################## fix: FIX += mxqdctl-hostconfig.sh diff --git a/helper/create_job_tmpdir b/helper/create_job_tmpdir new file mode 100755 index 00000000..536ac276 --- /dev/null +++ b/helper/create_job_tmpdir @@ -0,0 +1,40 @@ +#! /usr/bin/bash + +# Input (environment): +# +# MXQ_JOBID : job ident +# MXQ_SIZE : size in GB +# MXQ_UID : uid + +# Output: +# +# /dev/shm/mxqd/tmp/$JOBID mounted, space from /scratch/local2 + +tmpdir=/scratch/local2/mxqd/tmp +mntdir=/dev/shm/mxqd/mnt/job +filename=$tmpdir/$MXQ_JOBID.tmp +mountpoint=$mntdir/$MXQ_JOBID + +umask 006 +mkdir -p $tmpdir +mkdir -p $mntdir + +status=1; + +if fallocate -l ${MXQ_SIZE}G $filename; then + if loopdevice=$(losetup --find --show $filename); then + if mkfs.ext4 \ + -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 + status=0 + fi + losetup -d $loopdevice + fi + rm $filename +else + test -e $fileame && rm $filename +fi +exit $status