aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArtem Bityutskiy <Artem.Bityutskiy@nokia.com>2009-01-29 09:22:54 -0500
committerArtem Bityutskiy <Artem.Bityutskiy@nokia.com>2009-01-29 09:22:54 -0500
commita2b9df3ff691db8e5e521dccd231a8098bbf7416 (patch)
tree50a12bd4d40a27d7a605aa55e3d770b4af3c8576
parentb466f17d780c5b72427f36aef22ecdec9f1d0689 (diff)
UBIFS: return sensible error codes
When mounting/re-mounting, UBIFS returns EINVAL even if the ENOSPC or EROFS codes are are much better, just because we have not found references to ENOSPC/EROFS in mount (2) man pages. This patch changes this behaviour and makes UBIFS return real error code, because: 1. It is just less confusing and more logical 2. mount is not described in SuSv3, so it seems to be not really well-standartized 3. we do not cover all cases, and any random undocumented in man pages error code may be returned anyway Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
-rw-r--r--fs/ubifs/master.c2
-rw-r--r--fs/ubifs/super.c11
2 files changed, 4 insertions, 9 deletions
diff --git a/fs/ubifs/master.c b/fs/ubifs/master.c
index 71d5493bf565..a88f33801b98 100644
--- a/fs/ubifs/master.c
+++ b/fs/ubifs/master.c
@@ -354,7 +354,7 @@ int ubifs_write_master(struct ubifs_info *c)
354 int err, lnum, offs, len; 354 int err, lnum, offs, len;
355 355
356 if (c->ro_media) 356 if (c->ro_media)
357 return -EINVAL; 357 return -EROFS;
358 358
359 lnum = UBIFS_MST_LNUM; 359 lnum = UBIFS_MST_LNUM;
360 offs = c->mst_offs + c->mst_node_alsz; 360 offs = c->mst_offs + c->mst_node_alsz;
diff --git a/fs/ubifs/super.c b/fs/ubifs/super.c
index daa679d3a03e..ab85eb8cce79 100644
--- a/fs/ubifs/super.c
+++ b/fs/ubifs/super.c
@@ -1085,12 +1085,7 @@ static int check_free_space(struct ubifs_info *c)
1085 ubifs_err("insufficient free space to mount in read/write mode"); 1085 ubifs_err("insufficient free space to mount in read/write mode");
1086 dbg_dump_budg(c); 1086 dbg_dump_budg(c);
1087 dbg_dump_lprops(c); 1087 dbg_dump_lprops(c);
1088 /* 1088 return -ENOSPC;
1089 * We return %-EINVAL instead of %-ENOSPC because it seems to
1090 * be the closest error code mentioned in the mount function
1091 * documentation.
1092 */
1093 return -EINVAL;
1094 } 1089 }
1095 return 0; 1090 return 0;
1096} 1091}
@@ -1790,7 +1785,7 @@ static int ubifs_remount_fs(struct super_block *sb, int *flags, char *data)
1790 if ((sb->s_flags & MS_RDONLY) && !(*flags & MS_RDONLY)) { 1785 if ((sb->s_flags & MS_RDONLY) && !(*flags & MS_RDONLY)) {
1791 if (c->ro_media) { 1786 if (c->ro_media) {
1792 ubifs_msg("cannot re-mount due to prior errors"); 1787 ubifs_msg("cannot re-mount due to prior errors");
1793 return -EINVAL; 1788 return -EROFS;
1794 } 1789 }
1795 err = ubifs_remount_rw(c); 1790 err = ubifs_remount_rw(c);
1796 if (err) 1791 if (err)
@@ -1798,7 +1793,7 @@ static int ubifs_remount_fs(struct super_block *sb, int *flags, char *data)
1798 } else if (!(sb->s_flags & MS_RDONLY) && (*flags & MS_RDONLY)) { 1793 } else if (!(sb->s_flags & MS_RDONLY) && (*flags & MS_RDONLY)) {
1799 if (c->ro_media) { 1794 if (c->ro_media) {
1800 ubifs_msg("cannot re-mount due to prior errors"); 1795 ubifs_msg("cannot re-mount due to prior errors");
1801 return -EINVAL; 1796 return -EROFS;
1802 } 1797 }
1803 ubifs_remount_ro(c); 1798 ubifs_remount_ro(c);
1804 } 1799 }