From ae09b934a7e8035edb9f91dd8d39726daa9048f0 Mon Sep 17 00:00:00 2001 From: Peng Tao Date: Mon, 13 Dec 2010 09:44:57 -0500 Subject: [PATCH] e4defrag: return more specific error message on ioctl failure Currently e4defrag relies on the EXT4_IOC_MOVE_EXT ioctl to perform online defragmentation. However, this iotcl kernel patch is not available before 2.6.30-rc1. e4defrag shall fail without obvious reasons on systems running older kernels. The patch adds more detailed error message addressing this issue and prompts users with the minimal kernel version that is needed to run e4defrag. Signed-off-by: Peng Tao Signed-off-by: Theodore Ts'o --- misc/e4defrag.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/misc/e4defrag.c b/misc/e4defrag.c index 8b0894f..5b72cfa 100644 --- a/misc/e4defrag.c +++ b/misc/e4defrag.c @@ -1514,7 +1514,11 @@ static int call_defrag(int fd, int donor_fd, const char *file, if (mode_flag & DETAIL) { printf("\n"); PRINT_ERR_MSG_WITH_ERRNO( - "Failed to defrag"); + "Failed to defrag with " + "EXT4_IOC_MOVE_EXT ioctl"); + if (errno == ENOTTY) + printf("\tAt least 2.6.31-rc1 of " + "vanilla kernel is required\n"); } else { printf("\t[ NG ]\n"); } -- 1.8.3.1