You can not create partition on ext4 filesystem. At the start of your disk there is a partition table (legacy BIOS type or GTP) which describes how many and how large partitions you have on the disk. Filesystems are created on those partitions. (NTFS filesystem for windows, EXT4 or several other types for linux.
In your case you have to do:
- Backup your important data first. It's crucial.
- Boot linux from pendrive (or any source, except your system disk)
- Resize your ext4 partition (reduce). You can not reduce mounted partitions that's why you have to boot from external source.
- Resize your system-virtual partition matching with the reduced ext4 size. I suggest you using a little bit bigger size than the ext4 size for safety shake. Because you are using lvm, you can do this with lvresize. You can even do step 3.+4. at once with lvresize --resizefs option which is the safest option.
- Now you have to reduce the physical volume with pvresize. Choose the size you will need for all future linux partitions (you can make partitions on the fly with lvm).
- Now delete+recreate your underlying GPT partition. If you delete+recreate your partition you MUST start the new partition at the same sector position than your deleted partition otherwise you will loose your lvm data (and most possibly your filesystem).
- Now you can create a new partition for windows (or you can let it make). (Before that I would check if I can boot linux).
The key commands are (all as root, or start with sudo) :
# to list your logical volumes with phyisical pv-s
lvs -o +devices
# if you want 20G linux system disk
lvresize -r /dev/ubuntu-gnome-vg/your-system-lv-name 20G
# if you want preserve 500G for linux (you can use this space for anything)
pvresize --setphysicalvolumesize 500G /dev/sda3
# now resize the 3rd partition on disk1 to 500G (maybe a bit bigger for safety)
fdisk/parted/gparted
# after a reboot you can match up your pv exactly with the physical partition with (this is useful if you used the safe method and created a bit bigger partition eg.510G)
pvresize /dev/sda3
While it's perfectly working (I did it several times) somewhat advanced method, not for beginners. If you are not very familiar with lvm/gpt it might be easier to back up your linux filesystem (mount it from your boot cd, tar+gzip your whole filesystem and copy on a pendrive/external hdd) Then create two partitions (three in fact, keep the small efi, one partition for win and one for linux), install windows, and recreate your linux filesystem from the tar.gz. You should back up anyway, so even if you choose the former method this can be your backup plan!
Misc note: Your windows might (and most possibly will) overwrite your boot manager (eg. grub) and your Linux will be unbootable. In case of UEFI/GPT you can select your os, on legacy systems you have to reinstall grub. That's easy, just boot from usb, chroot to the system filesystem and grub-install /dev/yourharddiskdevname. Many install usb (debian, ubuntu) can boot from your disk (you don't have to chroot then).