We were negating the error code sent to complain, which is wrong. The documentation of mnt_context_do_umount() states that errors returned from the umount() syscall will be returned >0, so we shouldn't be doing a switch on the negated value. This fixes the following non-helpful output: Before: sudo sbin/mount/umount.nilfs2 /mnt/nilfs umount.nilfs2: /dev/loop0: Unknown error -16 After: $ sudo sbin/mount/umount.nilfs2 /mnt/nilfs umount.nilfs2: /dev/loop0: device is busy Signed-off-by: Dan McGee <dan@xxxxxxxxxxxxx> --- The complain() function was copied from the original umount code; I removed the comment as it doesn't make much sense in the context of using libmount and not parsing fstab directly. sbin/mount/umount_libmount.c | 4 +--- 1 files changed, 1 insertions(+), 3 deletions(-) diff --git a/sbin/mount/umount_libmount.c b/sbin/mount/umount_libmount.c index 939c6b0..2c983b3 100644 --- a/sbin/mount/umount_libmount.c +++ b/sbin/mount/umount_libmount.c @@ -183,8 +183,6 @@ static void complain(int err, const char *dev) error(_("%s: %s: I/O error while unmounting"), progname, dev); break; case EBUSY: - /* Let us hope fstab has a line "proc /proc ..." - and not "none /proc ..."*/ error(_("%s: %s: device is busy"), progname, dev); break; case ENOENT: @@ -284,7 +282,7 @@ static int nilfs_umount_one(struct nilfs_umount_info *umi) if (!mnt_context_is_fake(umi->cxt)) { res = nilfs_do_umount_one(umi); if (res) { - complain(-res, mnt_context_get_source(umi->cxt)); + complain(res, mnt_context_get_source(umi->cxt)); goto failed; } } -- 1.7.8 -- To unsubscribe from this list: send the line "unsubscribe linux-nilfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html