System partition locked in readonly

Hello,
I’m using an Opensuse Leap 15.4 laptop with btrfs system partition.
But since some days, when I boot, my system partition is locked into Readonly.
I think something goes wrong with mi ssd. :thinking:

cb@localhost:/> mount
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
devtmpfs on /dev type devtmpfs (rw,nosuid,size=4096k,nr_inodes=1048576,mode=755,inode64)
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev,inode64)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,nodev,size=4884288k,nr_inodes=819200,mode=755,inode64)
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,size=4096k,nr_inodes=1024,mode=755,inode64)
cgroup2 on /sys/fs/cgroup/unified type cgroup2 (rw,nosuid,nodev,noexec,relatime,nsdelegate)
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,name=systemd)
pstore on /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime)
none on /sys/fs/bpf type bpf (rw,nosuid,nodev,noexec,relatime,mode=700)
cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event)
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)
cgroup on /sys/fs/cgroup/hugetlb type cgroup (rw,nosuid,nodev,noexec,relatime,hugetlb)
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpu,cpuacct)
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio)
cgroup on /sys/fs/cgroup/net_cls,net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,net_cls,net_prio)
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)
cgroup on /sys/fs/cgroup/misc type cgroup (rw,nosuid,nodev,noexec,relatime,misc)
cgroup on /sys/fs/cgroup/pids type cgroup (rw,nosuid,nodev,noexec,relatime,pids)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)
cgroup on /sys/fs/cgroup/rdma type cgroup (rw,nosuid,nodev,noexec,relatime,rdma)
cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory)
/dev/sdb2 on / type btrfs (ro,relatime,ssd,space_cache,subvolid=266,subvol=/@/.snapshots/1/snapshot)
systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=30,pgrp=1,timeout=0,minproto=5,maxproto=5,direct,pipe_ino=16490)
mqueue on /dev/mqueue type mqueue (rw,nosuid,nodev,noexec,relatime)
hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime,pagesize=2M)
debugfs on /sys/kernel/debug type debugfs (rw,nosuid,nodev,noexec,relatime)
tracefs on /sys/kernel/tracing type tracefs (rw,nosuid,nodev,noexec,relatime)
configfs on /sys/kernel/config type configfs (rw,nosuid,nodev,noexec,relatime)
fusectl on /sys/fs/fuse/connections type fusectl (rw,nosuid,nodev,noexec,relatime)
/dev/sdb2 on /.snapshots type btrfs (ro,relatime,ssd,space_cache,subvolid=265,subvol=/@/.snapshots)
/dev/sdb2 on /srv type btrfs (ro,relatime,ssd,space_cache,subvolid=260,subvol=/@/srv)
/dev/sdb2 on /usr/local type btrfs (ro,relatime,ssd,space_cache,subvolid=258,subvol=/@/usr/local)
/dev/sdb2 on /boot/grub2/i386-pc type btrfs (ro,relatime,ssd,space_cache,subvolid=264,subvol=/@/boot/grub2/i386-pc)
/dev/sdb2 on /root type btrfs (ro,relatime,ssd,space_cache,subvolid=261,subvol=/@/root)
/dev/sdb2 on /boot/grub2/x86_64-efi type btrfs (ro,relatime,ssd,space_cache,subvolid=263,subvol=/@/boot/grub2/x86_64-efi)
/dev/sdb2 on /tmp type btrfs (ro,relatime,ssd,space_cache,subvolid=259,subvol=/@/tmp)
/dev/sdb2 on /opt type btrfs (ro,relatime,ssd,space_cache,subvolid=262,subvol=/@/opt)
/dev/sdb2 on /var type btrfs (ro,relatime,ssd,space_cache,subvolid=257,subvol=/@/var)
/dev/sda1 on /mnt/backup type ext4 (rw,relatime,data=ordered)
/dev/sdb3 on /home type ext4 (rw,relatime,data=ordered)
tmpfs on /run/user/1000 type tmpfs (rw,nosuid,nodev,relatime,size=2442144k,nr_inodes=610536,mode=700,uid=1000,gid=100,inode64)
gvfsd-fuse on /run/user/1000/gvfs type fuse.gvfsd-fuse (rw,nosuid,nodev,relatime,user_id=1000,group_id=100)
portal on /run/user/1000/doc type fuse.portal (rw,nosuid,nodev,relatime,user_id=1000,group_id=100)

I don’t know what to do.
I there some thing to check or repair before reinstall the full system?
Thanks in advance

Have you ever removed old BTRFS snapshots?

Hello
No, should I ?

cb@localhost:/> sudo snapper list -t pre-post
sudo: ouverture de /var/lib/sudo/ts/cb impossible: Système de fichiers accessible en lecture seulement
[sudo] Mot de passe de root :
Pre # | Post # | Date pre | Date post | Description | Données utilisateur
------±-------±----------------------------±----------------------------±-------------------±-------------------
276 | 277 | jeu. 03 août 2023 16:16:57 | jeu. 03 août 2023 16:17:45 | zypp(zypper) | important=yes
280 | 281 | sam. 02 sept. 2023 09:29:12 | sam. 02 sept. 2023 09:40:36 | zypp(packagekitd) | important=yes
282 | 283 | dim. 10 sept. 2023 08:15:00 | dim. 10 sept. 2023 08:15:46 | zypp(zypper) | important=yes
284 | 285 | dim. 10 sept. 2023 08:24:02 | dim. 10 sept. 2023 08:28:03 | zypp(packagekitd) | important=yes
290 | 299 | dim. 01 oct. 2023 12:43:37 | dim. 01 oct. 2023 12:47:44 | yast sw_single |
291 | 292 | dim. 01 oct. 2023 12:45:30 | dim. 01 oct. 2023 12:45:35 | zypp(ruby.ruby2.5) | important=no
293 | 294 | dim. 01 oct. 2023 12:46:16 | dim. 01 oct. 2023 12:46:18 | zypp(ruby.ruby2.5) | important=no
295 | 296 | dim. 01 oct. 2023 12:46:48 | dim. 01 oct. 2023 12:46:54 | zypp(ruby.ruby2.5) | important=no
297 | 298 | dim. 01 oct. 2023 12:47:28 | dim. 01 oct. 2023 12:47:35 | zypp(ruby.ruby2.5) | important=no
300 | 301 | dim. 01 oct. 2023 13:10:59 | dim. 01 oct. 2023 13:18:09 | zypp(packagekitd) | important=yes

Normally I would say yes. They use a lot of space, and unless your root filesystem is enormous, normal system maintenance dictates removing old ones now and then. Lack of freespace on the root filesystem is a common cause of readonly. Your list doesn’t appear to be big enough to cause a problem, but it depends on your filesystem size. How big is yours? How much freespace is there on it?

cb@localhost:/> sudo btrfs filesystem df /
sudo: ouverture de /var/lib/sudo/ts/cb impossible: Système de fichiers accessible en lecture seulement
[sudo] Mot de passe de root : 
Data, single: total=23.01GiB, used=19.60GiB
System, single: total=32.00MiB, used=16.00KiB
Metadata, single: total=2.01GiB, used=679.25MiB
GlobalReserve, single: total=44.77MiB, used=0.00B

Too small to use Snapper. 40 gig is min recommended for root.

My device size seems to be 151G?

cb@localhost:/> sudo btrfs device usage /
sudo: ouverture de /var/lib/sudo/ts/cb impossible: Système de fichiers accessible en lecture seulement
[sudo] Mot de passe de root : 
/dev/sdb2, ID: 1
   Device size:           151.27GiB
   Device slack:              0.00B
   Data,single:            23.01GiB
   Metadata,single:         2.01GiB
   System,single:          32.00MiB
   Unallocated:           126.23GiB

Other than checking dmesg and journal for clues why root is readonly, I’m out of ideas. I don’t use BTRFS (and only can read English).

2 Likes

Yes, you can. Some insight required. You may start with posting messages in journal as follows:

erlangen:~ # journalctl -b -g btrfs
Oct 14 04:48:38 erlangen dracut-cmdline[331]: Using kernel command line parameters:  rd.driver.pre=btrfs root=UUID=0e58bbe5-eff7-4884-bb5d-a0aac3d8a344 rootfstype=btrfs rootflags=rw,relatime,ssd,discard=async,space_cache=v2,subvolid=35>
Oct 14 04:48:39 erlangen kernel: Btrfs loaded, assert=on, zoned=yes, fsverity=yes
Oct 14 04:48:42 erlangen kernel: BTRFS: device label System devid 1 transid 822180 /dev/nvme1n1p2 scanned by (udev-worker) (470)
Oct 14 04:48:42 erlangen kernel: BTRFS: device label Backup devid 1 transid 7607 /dev/nvme0n1p2 scanned by (udev-worker) (487)
Oct 14 04:48:42 erlangen kernel: BTRFS: device label Data devid 1 transid 3810 /dev/sda1 scanned by (udev-worker) (442)
Oct 14 04:48:44 erlangen kernel: BTRFS info (device nvme1n1p2): using crc32c (crc32c-intel) checksum algorithm
Oct 14 04:48:44 erlangen kernel: BTRFS info (device nvme1n1p2): using free space tree
Oct 14 04:48:44 erlangen kernel: BTRFS info (device nvme1n1p2): enabling ssd optimizations
Oct 14 04:48:44 erlangen kernel: BTRFS info (device nvme1n1p2): auto enabling async discard
Oct 14 04:48:46 erlangen kernel: BTRFS info (device sda1): using crc32c (crc32c-intel) checksum algorithm
Oct 14 04:48:46 erlangen kernel: BTRFS info (device sda1): using free space tree
Oct 14 04:48:46 erlangen kernel: BTRFS info (device sda1): enabling ssd optimizations
Oct 14 04:48:46 erlangen kernel: BTRFS info (device sda1): auto enabling async discard
Oct 14 04:48:46 erlangen systemd[1]: Started Watch /etc/sysconfig/btrfsmaintenance.
Oct 14 04:48:47 erlangen systemd[1]: Started Balance block groups on a btrfs filesystem.
Oct 14 04:48:47 erlangen systemd[1]: Started Scrub btrfs filesystem, verify block checksums.
erlangen:~ # 

Hello,

cb@localhost:~> sudo journalctl -b -g btrfs
sudo: ouverture de /var/lib/sudo/ts/cb impossible: Système de fichiers accessible en lecture seulement
[sudo] Mot de passe de root : 
oct. 14 08:14:26 localhost dracut-cmdline[209]: Using kernel command line parameters:  rd.driver.pre=btrfs resume=UUID=ea1503ad-af81-4c8d-be16-9cdc606b8d6d root=UUID=b2ac345b-0001-4721-8bd7->
oct. 14 08:14:27 localhost kernel: Btrfs loaded, crc32c=crc32c-intel, assert=on, zoned=yes
oct. 14 08:14:28 localhost kernel: BTRFS: device fsid b2ac345b-0001-4721-8bd7-4068a175dabb devid 1 transid 14670 /dev/sdb2 scanned by (udev-worker) (320)
oct. 14 08:14:28 localhost kernel: BTRFS info (device sdb2): disk space caching is enabled
oct. 14 08:14:28 localhost kernel: BTRFS info (device sdb2): has skinny extents
oct. 14 08:14:28 localhost kernel: BTRFS info (device sdb2): enabling ssd optimizations
oct. 14 08:14:28 localhost kernel: BTRFS info (device sdb2): start tree-log replay
oct. 14 08:14:30 localhost kernel: BTRFS info (device sdb2): disk space caching is enabled
oct. 14 08:14:35 localhost kernel: BTRFS warning (device sdb2): checksum verify failed on 1378942976 wanted 0x4bab2402 found 0x6b3d623c level 0
oct. 14 08:14:35 localhost kernel: BTRFS warning (device sdb2): error accounting new delayed refs extent (err code: -5), quota inconsistent
oct. 14 08:14:35 localhost systemd[1]: Started Watch /etc/sysconfig/btrfsmaintenance.
oct. 14 08:14:37 localhost systemd[1]: Started Balance block groups on a btrfs filesystem.
oct. 14 08:14:37 localhost systemd[1]: Started Scrub btrfs filesystem, verify block checksums.
oct. 14 08:14:50 localhost.localdomain kernel: BTRFS warning (device sdb2): checksum verify failed on 1378942976 wanted 0x4bab2402 found 0x6b3d623c level 0
oct. 14 08:14:50 localhost.localdomain kernel: BTRFS warning (device sdb2): checksum verify failed on 1378942976 wanted 0x4bab2402 found 0x6b3d623c level 0
oct. 14 08:14:50 localhost.localdomain kernel: BTRFS warning (device sdb2): checksum verify failed on 1378942976 wanted 0x4bab2402 found 0x6b3d623c level 0
oct. 14 08:14:50 localhost.localdomain kernel: BTRFS error (device sdb2): error loading props for ino 154702 (root 266): -5
oct. 14 08:14:50 localhost.localdomain kernel: BTRFS warning (device sdb2): checksum verify failed on 1378942976 wanted 0x4bab2402 found 0x6b3d623c level 0
oct. 14 08:14:50 localhost.localdomain kernel: BTRFS warning (device sdb2): checksum verify failed on 1378942976 wanted 0x4bab2402 found 0x6b3d623c level 0
oct. 14 08:14:50 localhost.localdomain kernel: BTRFS warning (device sdb2): checksum verify failed on 1378942976 wanted 0x4bab2402 found 0x6b3d623c level 0
oct. 14 08:14:50 localhost.localdomain kernel: BTRFS warning (device sdb2): checksum verify failed on 1378942976 wanted 0x4bab2402 found 0x6b3d623c level 0
oct. 14 08:14:50 localhost.localdomain kernel: BTRFS warning (device sdb2): checksum verify failed on 1378942976 wanted 0x4bab2402 found 0x6b3d623c level 0
oct. 14 08:14:50 localhost.localdomain kernel: BTRFS warning (device sdb2): checksum verify failed on 1378942976 wanted 0x4bab2402 found 0x6b3d623c level 0
oct. 14 08:14:50 localhost.localdomain kernel: BTRFS warning (device sdb2): checksum verify failed on 1378942976 wanted 0x4bab2402 found 0x6b3d623c level 0
oct. 14 08:14:52 localhost.localdomain kernel: WARNING: CPU: 2 PID: 2453 at ../fs/btrfs/qgroup.c:2717 btrfs_qgroup_account_extents+0x1a0/0x250 [btrfs]
oct. 14 08:14:52 localhost.localdomain kernel:  int3400_thermal acpi_thermal_rel int340x_thermal_zone ac button fuse configfs ip_tables x_tables rtsx_usb_sdmmc mmc_core rtsx_usb mfd_core i91>
oct. 14 08:14:52 localhost.localdomain kernel: RIP: 0010:btrfs_qgroup_account_extents+0x1a0/0x250 [btrfs]
oct. 14 08:14:52 localhost.localdomain kernel:  btrfs_commit_transaction+0x35d/0xd70 [btrfs 3ead3c7515eb1c064efe35296a44bb88b71e42ca]
oct. 14 08:14:52 localhost.localdomain kernel:  btrfs_sync_file+0x36c/0x510 [btrfs 3ead3c7515eb1c064efe35296a44bb88b71e42ca]
oct. 14 08:14:52 localhost.localdomain kernel: BTRFS warning (device sdb2): Skipping commit of aborted transaction.
oct. 14 08:14:52 localhost.localdomain kernel: BTRFS: error (device sdb2) in cleanup_transaction:1975: errno=-5 IO failure
oct. 14 08:14:52 localhost.localdomain kernel: BTRFS info (device sdb2): forced readonly
oct. 14 08:15:04 localhost.localdomain kernel: BTRFS warning (device sdb2): checksum verify failed on 1378942976 wanted 0x4bab2402 found 0x6b3d623c level 0
oct. 14 08:15:04 localhost.localdomain kernel: BTRFS warning (device sdb2): checksum verify failed on 1378942976 wanted 0x4bab2402 found 0x6b3d623c level 0
oct. 14 08:15:09 localhost.localdomain kernel: BTRFS warning (device sdb2): checksum verify failed on 1378942976 wanted 0x4bab2402 found 0x6b3d623c level 0
oct. 14 08:15:09 localhost.localdomain kernel: BTRFS warning (device sdb2): checksum verify failed on 1378942976 wanted 0x4bab2402 found 0x6b3d623c level 0
oct. 14 08:15:12 localhost.localdomain kernel: BTRFS warning (device sdb2): checksum verify failed on 1378942976 wanted 0x4bab2402 found 0x6b3d623c level 0
oct. 14 08:15:12 localhost.localdomain kernel: BTRFS warning (device sdb2): checksum verify failed on 1378942976 wanted 0x4bab2402 found 0x6b3d623c level 0
oct. 14 08:15:21 localhost.localdomain kernel: BTRFS warning (device sdb2): checksum verify failed on 1378942976 wanted 0x4bab2402 found 0x6b3d623c level 0
oct. 14 08:15:21 localhost.localdomain kernel: BTRFS warning (device sdb2): checksum verify failed on 1378942976 wanted 0x4bab2402 found 0x6b3d623c level 0
oct. 14 08:15:22 localhost.localdomain kernel: BTRFS warning (device sdb2): checksum verify failed on 1378942976 wanted 0x4bab2402 found 0x6b3d623c level 0
oct. 14 08:15:22 localhost.localdomain kernel: BTRFS warning (device sdb2): checksum verify failed on 1378942976 wanted 0x4bab2402 found 0x6b3d623c level 0
oct. 14 08:15:23 localhost.localdomain kernel: BTRFS warning (device sdb2): checksum verify failed on 1378942976 wanted 0x4bab2402 found 0x6b3d623c level 0
oct. 14 08:15:23 localhost.localdomain kernel: BTRFS warning (device sdb2): checksum verify failed on 1378942976 wanted 0x4bab2402 found 0x6b3d623c level 0
oct. 14 08:15:39 localhost.localdomain kernel: BTRFS warning (device sdb2): checksum verify failed on 1378942976 wanted 0x4bab2402 found 0x6b3d623c level 0
oct. 14 08:15:39 localhost.localdomain kernel: BTRFS warning (device sdb2): checksum verify failed on 1378942976 wanted 0x4bab2402 found 0x6b3d623c level 0
oct. 14 08:15:52 localhost.localdomain kernel: BTRFS warning (device sdb2): checksum verify failed on 1378942976 wanted 0x4bab2402 found 0x6b3d623c level 0
oct. 14 08:15:52 localhost.localdomain kernel: BTRFS warning (device sdb2): checksum verify failed on 1378942976 wanted 0x4bab2402 found 0x6b3d623c level 0
oct. 14 08:15:52 localhost.localdomain kernel: BTRFS warning (device sdb2): checksum verify failed on 1378942976 wanted 0x4bab2402 found 0x6b3d623c level 0
oct. 14 08:15:52 localhost.localdomain kernel: BTRFS warning (device sdb2): checksum verify failed on 1378942976 wanted 0x4bab2402 found 0x6b3d623c level 0
oct. 14 08:16:01 localhost.localdomain kernel: BTRFS warning (device sdb2): checksum verify failed on 1378942976 wanted 0x4bab2402 found 0x6b3d623c level 0
oct. 14 08:16:01 localhost.localdomain kernel: BTRFS warning (device sdb2): checksum verify failed on 1378942976 wanted 0x4bab2402 found 0x6b3d623c level 0
oct. 14 08:16:02 localhost.localdomain kernel: BTRFS warning (device sdb2): checksum verify failed on 1378942976 wanted 0x4bab2402 found 0x6b3d623c level 0
oct. 14 08:16:02 localhost.localdomain kernel: BTRFS warning (device sdb2): checksum verify failed on 1378942976 wanted 0x4bab2402 found 0x6b3d623c level 0
oct. 14 08:16:16 localhost.localdomain kernel: BTRFS warning (device sdb2): checksum verify failed on 1378942976 wanted 0x4bab2402 found 0x6b3d623c level 0
oct. 14 08:16:16 localhost.localdomain kernel: BTRFS warning (device sdb2): checksum verify failed on 1378942976 wanted 0x4bab2402 found 0x6b3d623c level 0
oct. 14 08:16:22 localhost.localdomain kernel: BTRFS warning (device sdb2): checksum verify failed on 1378942976 wanted 0x4bab2402 found 0x6b3d623c level 0
oct. 14 08:16:22 localhost.localdomain kernel: BTRFS warning (device sdb2): checksum verify failed on 1378942976 wanted 0x4bab2402 found 0x6b3d623c level 0
oct. 14 08:32:58 localhost.localdomain kernel: BTRFS warning (device sdb2): checksum verify failed on 1378942976 wanted 0x4bab2402 found 0x6b3d623c level 0
oct. 14 08:32:58 localhost.localdomain kernel: BTRFS warning (device sdb2): checksum verify failed on 1378942976 wanted 0x4bab2402 found 0x6b3d623c level 0
oct. 14 08:32:59 localhost.localdomain kernel: BTRFS warning (device sdb2): checksum verify failed on 1378942976 wanted 0x4bab2402 found 0x6b3d623c level 0
oct. 14 08:32:59 localhost.localdomain kernel: BTRFS warning (device sdb2): checksum verify failed on 1378942976 wanted 0x4bab2402 found 0x6b3d623c level 0
oct. 14 08:33:00 localhost.localdomain kernel: BTRFS warning (device sdb2): checksum verify failed on 1378942976 wanted 0x4bab2402 found 0x6b3d623c level 0
oct. 14 08:33:00 localhost.localdomain kernel: BTRFS warning (device sdb2): checksum verify failed on 1378942976 wanted 0x4bab2402 found 0x6b3d623c level 0
oct. 14 08:34:26 localhost.localdomain sudo[3719]:       cb : unable to open /var/lib/sudo/ts/cb : Read-only file system ; TTY=pts/1 ; PWD=/home/cb ; USER=root ; COMMAND=/usr/bin/journalctl >
oct. 14 08:34:28 localhost.localdomain sudo[3719]:       cb : TTY=pts/1 ; PWD=/home/cb ; USER=root ; COMMAND=/usr/bin/journalctl -b -g btrfs
1 Like

Well that log tells all, right?

I would first make sure I have a backup and then try something like:

1 Like

Basically yes. Have some backup first. You may boot into a rescue system and run btrfs check. This will not modify the filesystem and give some idea about the problem.

Try to reallocate all blocks by running btrfs balance start mountpoint-of-broken-btrfs. As it takes some time you are warned. Proceed unless you want to postpone for some reason.

As an exercise I succeeded in repairing the btrfs system partition of infamous host erlangen. I had badly tried to break the filesystem and eventually came up with an inconsistent folder at ./.local/share/openSUSE/org.opensuse.opensuse_welcome. Repair wasn’t straight forward. It’s not for the faint of heart.

Hello,
Thanks for you recommendation.
I 'll start by checking my backups.
My understanding is that this kind of repair is more for “Parent Penguin” or “Flux Capacitor Penguin”.

I will take some times to try some actions as you have suggested to proceed ( as for an exercise :laughing:).
But I’m aware about the difficulty and the risk, so I keep ready to install a new leap 15.5.
Thanks again

Please note that these qualifications are defined by the number of posts, not by the quality of the posts.

2 Likes