How to clean up an unprocessed orphan inode list?
I tried to mount a formerly readonly mounted filesystem read-writeable:
mount -o remount,rw /mountpoint
Unfortunately it did not work:
mount: /mountpoint not mounted already, or bad option
dmesg
reports:
[2570543.520449] EXT4-fs (dm-0): Couldn't remount RDWR because of unprocessed orphan inode list. Please umount/remount instead
A umount
does not work, too:
umount /mountpoint
umount: /mountpoint: device is busy.
(In some cases useful info about processes that use
the device is found by lsof(8) or fuser(1))
Unfortunately neither lsof
of fuser
don't show any process accessing something located under the mount point.
So - how can I clean up this unprocessed orphan list to be able to mount the filesystem again without rebooting the computer?
You clean up the unprocessed orphan inode list by unmounting and remounting the filesystem.
An extended discussion from the linux-ext4 mailing list has more information about what this message is and why it may appear. In short, one of two things has happened: Either you've run into a kernel bug, or much more likely, some filesystem corruption happened one of the previous times you remounted the filesystem readonly. Which is probably why the system thinks something is still using the filesystem when there isn't.
If it's been a year and you still haven't rebooted the machine, just give up and schedule a maintenance window.
If you're using ext2 / ext3 / ext4 you should be able to use e2fsck
to clean up orphaned inodes:
e2fsck -f
For reiserfs, you can use reiserfsck
which will also clean up orphaned inodes.
e2fsck -f <mount point>
won't work.
First find out the mount points with
sudo mount -l
Then fsck the drive directly.
For example for me
sudo e2fsck -f /dev/xvda2