bcachefs: unlock parent dir if entry is not found in subvolume deletion
authorGuoyu Ou <benogy@gmail.com>
Sun, 28 Jan 2024 08:46:17 +0000 (16:46 +0800)
committerKent Overstreet <kent.overstreet@linux.dev>
Mon, 29 Jan 2024 02:41:09 +0000 (21:41 -0500)
commit6bb3f7f4c3f4da8e09de188f2f63e8f741bba3bd
tree277e3ed77f266e3cc04b6f78f4ee9680113b14d3
parenteba38cc7578bef94865341c73608bdf49193a51d
bcachefs: unlock parent dir if entry is not found in subvolume deletion

Parent dir is locked by user_path_locked_at() before validating the
required dentry. It should be unlocked if we can not perform the
deletion.

This fixes the problem:

$ bcachefs subvolume delete not-exist-entry
BCH_IOCTL_SUBVOLUME_DESTROY ioctl error: No such file or directory
$ bcachefs subvolume delete not-exist-entry

the second will stuck because the parent dir is locked in the previous
deletion.

Signed-off-by: Guoyu Ou <benogy@gmail.com>
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
fs/bcachefs/fs-ioctl.c