_zramctl_module()
{
	local cur prev OPTS
	COMPREPLY=()
	cur="${COMP_WORDS[COMP_CWORD]}"
	prev="${COMP_WORDS[COMP_CWORD-1]}"
	case $prev in
		'-a'|'--algorithm')
			COMPREPLY=( $(compgen -W "lzo lz4 lz4hc deflate 842" -- $cur) )
			return 0
			;;
		'-o'|'--output')
			local prefix realcur OUTPUT_ALL OUTPUT
			realcur="${cur##*,}"
			prefix="${cur%$realcur}"
			OUTPUT_ALL="NAME DISKSIZE DATA COMPR ALGORITHM
				STREAMS ZERO-PAGES TOTAL MEM-LIMIT MEM-USED
				MIGRATED MOUNTPOINT"
			for WORD in $OUTPUT_ALL; do
				if ! [[ $prefix == *"$WORD"* ]]; then
					OUTPUT="$WORD ${OUTPUT:-""}"
				fi
			done
			compopt -o nospace
			COMPREPLY=( $(compgen -P "$prefix" -W "$OUTPUT" -S ',' -- $realcur) )
			return 0
			;;
		'-s'|'--size')
			COMPREPLY=( $(compgen -W "size" -- $cur) )
			return 0
			;;
		'-t'|'--streams')
			COMPREPLY=( $(compgen -W "number" -- $cur) )
			return 0
			;;
	esac
	case $cur in
		-*)
			OPTS="	--algorithm
				--bytes
				--find
				--noheadings
				--output
				--output-all
				--raw
				--reset
				--size
				--streams
				--help
				--version"
			COMPREPLY=( $(compgen -W "${OPTS[*]}" -- $cur) )
			return 0
			;;
	esac
	local IFS=$'\n'
	compopt -o filenames
	COMPREPLY=( $(compgen -f -- ${cur:-"/dev/zram"}) )
	return 0
}
complete -F _zramctl_module zramctl
