diff --git a/cmds-subvolume.c b/cmds-subvolume.c
index d4ef1021..9866c775 100644
--- a/cmds-subvolume.c
+++ b/cmds-subvolume.c
@@ -223,20 +223,20 @@ out:
 }
 
 /*
- * test if path is a subvolume:
- * this function return
- * 0-> path exists but it is not a subvolume
- * 1-> path exists and it is  a subvolume
- * -1 -> path is unaccessible
+ * Test if path is a subvolume
+ * Returns:
+ *   0 - path exists but it is not a subvolume
+ *   1 - path exists and it is  a subvolume
+ * < 0 - error
  */
-int test_issubvolume(char *path)
+int test_issubvolume(const char *path)
 {
 	struct stat	st;
 	int		res;
 
 	res = stat(path, &st);
-	if(res < 0 )
-		return -1;
+	if (res < 0)
+		return -errno;
 
 	return (st.st_ino == BTRFS_FIRST_FREE_OBJECTID)
 		&& S_ISDIR(st.st_mode);
diff --git a/commands.h b/commands.h
index d2bb0934..2da093bf 100644
--- a/commands.h
+++ b/commands.h
@@ -126,7 +126,7 @@ int cmd_debug_tree(int argc, char **argv);
 int cmd_rescue(int argc, char **argv);
 
 /* subvolume exported functions */
-int test_issubvolume(char *path);
+int test_issubvolume(const char *path);
 
 /* send.c */
 char *get_subvol_name(char *mnt, char *full_path);