summaryrefslogtreecommitdiffstats
path: root/fs/jfs/namei.c
diff options
context:
space:
mode:
authorAkinobu Mita <mita@miraclelinux.com>2006-09-14 09:22:38 -0500
committerDave Kleikamp <shaggy@austin.ibm.com>2006-10-02 09:51:01 -0500
commit087387f90f577f5a0ab68d33ef326c9bb6d80dda (patch)
tree99f2ba6f672c9d98fbd628ee54120f63593f1bd0 /fs/jfs/namei.c
parent2a6968a9784551c216f9379a728d4104dbad98a8 (diff)
downloadlinux-087387f90f577f5a0ab68d33ef326c9bb6d80dda.tar.gz
linux-087387f90f577f5a0ab68d33ef326c9bb6d80dda.tar.bz2
linux-087387f90f577f5a0ab68d33ef326c9bb6d80dda.zip
[PATCH] JFS: return correct error when i-node allocation failed
I have seen confusing behavior on JFS when I injected many intentional slab allocation errors. The cp command failed with no disk space error with enough disk space. This patch makes: - change the return value in case slab allocation failures happen from -ENOSPC to -ENOMEM - ialloc() return error code so that the caller can know the reason of failures Signed-off-by: Akinobu Mita <mita@miraclelinux.com> Signed-off-by: Dave Kleikamp <shaggy@austin.ibm.com> (cherry picked from 2b46f77976f798f3fe800809a1d0ed38763c71c8 commit)
Diffstat (limited to 'fs/jfs/namei.c')
-rw-r--r--fs/jfs/namei.c17
1 files changed, 8 insertions, 9 deletions
diff --git a/fs/jfs/namei.c b/fs/jfs/namei.c
index b8d16a6aa88f..5d4ef6e4b7e9 100644
--- a/fs/jfs/namei.c
+++ b/fs/jfs/namei.c
@@ -97,8 +97,8 @@ static int jfs_create(struct inode *dip, struct dentry *dentry, int mode,
* begin the transaction before we search the directory.
*/
ip = ialloc(dip, mode);
- if (ip == NULL) {
- rc = -ENOSPC;
+ if (IS_ERR(ip)) {
+ rc = PTR_ERR(ip);
goto out2;
}
@@ -231,8 +231,8 @@ static int jfs_mkdir(struct inode *dip, struct dentry *dentry, int mode)
* begin the transaction before we search the directory.
*/
ip = ialloc(dip, S_IFDIR | mode);
- if (ip == NULL) {
- rc = -ENOSPC;
+ if (IS_ERR(ip)) {
+ rc = PTR_ERR(ip);
goto out2;
}
@@ -906,8 +906,8 @@ static int jfs_symlink(struct inode *dip, struct dentry *dentry,
* (iAlloc() returns new, locked inode)
*/
ip = ialloc(dip, S_IFLNK | 0777);
- if (ip == NULL) {
- rc = -ENOSPC;
+ if (IS_ERR(ip)) {
+ rc = PTR_ERR(ip);
goto out2;
}
@@ -978,7 +978,6 @@ static int jfs_symlink(struct inode *dip, struct dentry *dentry,
xlen = xsize >> JFS_SBI(sb)->l2bsize;
if ((rc = xtInsert(tid, ip, 0, 0, xlen, &xaddr, 0))) {
txAbort(tid, 0);
- rc = -ENOSPC;
goto out3;
}
extent = xaddr;
@@ -1350,8 +1349,8 @@ static int jfs_mknod(struct inode *dir, struct dentry *dentry,
goto out;
ip = ialloc(dir, mode);
- if (ip == NULL) {
- rc = -ENOSPC;
+ if (IS_ERR(ip)) {
+ rc = PTR_ERR(ip);
goto out1;
}
jfs_ip = JFS_IP(ip);